x11grabを使用して2つのオーディオソースをマージできますか?

x11grabを使用して2つのオーディオソースをマージできますか?

現在、私は次の設定で実行しています。

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\

可能ですか? 「私が聞くこと」(再生とも呼ばれる)をミキシングすると言うことができますか?

私は似たようなことを試しましたが(完全に理解していませんでした -map)

 -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"

2つの音を混ぜたときだけ現れます。ここでもJACKを取得しようとしましたが、実際の結果はありませんでした(ミックスからffmpegを削除するために、ミキサーボードを介してすべてを渡すと思いました)。

走る:

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

しかし、以下を提供します。

[alsa @ 0x1399280]サンプル形式0x10000 2を設定できません(無効な引数)。

ジャック:入出力エラー

答え1

オーディオを一緒にミックスするには、amixフィルタを使用できる必要があります。

例:

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不要なストリームを削除するために複数のストリームを含む入力を追加する場合は、sを定義する必要があります。

説明する:

-filter_complex
複数の入力または出力によるフィルタの定義
[0:a:0]
オーディオストリーム番号0/0を入力してください。 (ウェブキャスト)
[1:a:0]
1にはオーディオストリーム番号0を入力してください。 (マイクロフォン)
amix=inputs=2
2つのオーディオストリームを一緒にミックスします。入力ストリームが定義されていない場合、自動的に両方が選択されます。これたとえば、上記の2つの定義を省略できるはずです。
;
新しいフィルタチェーンを開始
[3:v:0]
3にはビデオストリーム番号0を入力してください。 (ウェブカメラ)
scale=200:-1
ビデオサイズを200×???に調整します。 -1はアスペクト比を維持するため、600x480ビデオは200x160になります。
[webcam]
拡張出力を「ウェブカメラ」と呼びます。
,
このチェーンの次のフィルタに進みます。
[2:v:0]
2にはビデオストリーム番号0を入力してください。 (デスクトップ)
[webcam]
ズームウェブカメラストリーム。
overlay=main_w-overlay_w-10:main_h-overlay_h-10
2番目の入力を最初の入力の上に重ねて、2番目の入力を右から10ピクセル、下から10ピクセルの位置に配置します。

また、サウンドカードのキャプチャソースをミックスしてコンピュータの出力を取得するように設定することもできます。通常はマイクのミュートを解除してマイクモニタのループバックを取得できますが、この機能を使用するにはジャックまたはパルスを使用する必要があります。 Jackがなぜあなたの下で働かないのかわからないので、助けることができません。すみません。

関連情報