x11grab으로 두 개의 오디오 소스를 병합 하시겠습니까? 실제로 잘 진행되지

현재 다음 설정으로 실행 중입니다.

ffmpeg \
 -i http://pub1.di.fm:80/di_vocaltrance \
 -f x11grab -s 1920x1080 -r 25 -i :0.0 \
 -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 \
 -c:a libmp3lame -ab 96k -ar 22050 \
 -threads 0 \
 -f flv "rtmp://...."

내가 굽고 싶은 것 :

 -f alsa -ac 2 -i hw:0 -acodec pcm_s32le -aq 1 -ab 128k\

이게 가능해? 그리고 아마도 “내가 듣는 것”(일명 재생)을 섞어서 말할 수 있습니까?

나는 라인을 따라 무언가를 시도했지만 (완전히 이해하지는 못한다.)

 -i http://pub1.di.fm:80/di_vocaltrance -map 0:1 \
 -f x11grab -s 1920x1080 -r 25 -i :0.0 -map 0:0 \

그러나 그것은 실제로 잘 진행되지 않았습니다.

나는 지금 너무 가까워서, 이것은 나에게 사운드 채널을 제공하지만, 모든 것이 작은 깡통 안에 있습니다.

#!/bin/bash
KEY=`cat key.db`

ffmpeg \
 -i http://pub1.di.fm:80/di_vocaltrance \
 -f alsa -ac 2 -i hw:0 -acodec mp3 -aq 1 -ab 128k \
 -f x11grab -s 1920x1080 -r 25 -i :0.0 \
 -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 \
 -c:a mp3 -ab 96k -ar 22050 \
 -threads 0 \
 -map 0:0 -map 1:0 -map 2:0 \
 -f flv "rtmp://live.twitch.tv/app/$KEY"

두 소리를 함께 섞을 때만 나타납니다. 여기에도 잭을 가져 오려고하지만 실제 결과는 없습니다 (믹싱에서 ffmpeg를 언로드하기 위해 믹서 보드를 통해 모든 것을 전달한다고 생각했습니다).

다음으로 실행 :

 -f alsa -ac 2 -i jack \
 ....

그러나 이것을 제공합니다 :

[alsa @ 0x1399280]은 샘플 형식을 0x10000 2 (잘못된 인수)로 설정할 수 없습니다

잭 : 입 / 출력 오류



답변

혼합 필터를 사용하여 오디오를 함께 믹싱 할 수 있어야합니다.

예:

ffmpeg \
  -i http://pub1.di.fm:80/di_vocaltrance \ # internet radio
  -f alsa    -i hw:0 \                     # microphone
  -f x11grab -i :0.0 \                     # computer desktop
  -f v4l2    -i /dev/video0 \              # webcam or
  # -f iec61883 -i auto \                  # firewire camcorder
  -filter_complex '[0:a:0][1:a:0]amix=inputs=2;[3:v:0]scale=200:-1[webcam],[2:v:0][webcam]overlay=main_w-overlay_w-10:main_h-overlay_h-10' \
  <output>

웹캠 오버레이를 추가하여 제거하기 위해 웹캠 라인, 세미콜론 및 세미콜론 뒤의 정의를 제거했습니다.

-map외부 스트림을 제거하기 위해 여러 스트림이있는 입력을 추가하는 경우을 정의해야 할 수 있습니다.

설명:

-filter_complex
여러 입력 또는 출력으로 필터를 정의
[0:a:0]
0의 오디오 스트림 번호 0을 입력하십시오 (인터넷 라디오)
[1:a:0]
입력 1의 오디오 스트림 번호 0. (마이크)
amix=inputs=2
입력 된 스트림이 정의되어 있지 않은 경우, 두 개의 오디오 스트림을 믹스, 그렇게에, 두 autoselects 경우, 당신은이 정의 위에 생략 할 수 있어야한다.
;
새로운 필터 체인을 시작하십시오
[3:v:0]
입력 3의 비디오 스트림 번호 0. (웹캠)
scale=200:-1
비디오를 200x ???, -1로 조정하면 가로 세로 비율이 유지되므로 600×480 비디오는 200×160이됩니다.
[webcam]
스케일 출력을 “웹캠”이라고합니다.
,
이 체인의 다음 필터로 계속 진행하십시오.
[2:v:0]
2의 비디오 스트림 번호 0을 입력하십시오. (데스크톱)
[webcam]
확장 된 웹캠 스트림
overlay=main_w-overlay_w-10:main_h-overlay_h-10
두 번째 입력을 첫 번째 입력 위에 오버레이하여 두 번째 입력을 오른쪽에서 10 픽셀, 아래쪽에서 10 픽셀을 배치합니다.

또한 사운드 카드 캡처 소스를 컴퓨터 출력에 맞게 믹스로 설정할 수 있으며 마이크를 음소거 해제하여 마이크 모니터 루프백을 얻을 수 있지만 제대로 작동하려면 잭 또는 펄스를 사용해야합니다. 잭이 왜 효과가 없는지 모르겠습니다. 죄송합니다. 죄송합니다.