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


11

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

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を設定できません(引数が無効です)

ジャック:入出力エラー


単なる提案ですが、Soxは、この種のもののために設計された単純に実装されたcliユーティリティです。ただし、frozenはかなりしっかりしたハンドルを持っているようです。
mikeserv 2014年

回答:


2

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つが自動選択されるため、この場合は、上記の2つの定義を省略できます。
;
新しいフィルターチェーンを開始する
[3:v:0]
入力3のビデオストリーム番号0(ウェブカメラ)
scale=200:-1
ビデオを200x ???にスケーリングし、-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ピクセルに配置します。

また、サウンドカードキャプチャソースをミックスしてコンピューターの出力を取得するように設定することもできます。また、マイクのミュートを解除してマイクモニターループバックを取得することもできますが、正しく動作させるには、ジャックまたはパルスを使用する必要があります。どうしてジャックがうまくいかなかったのかわからないので、お役に立てません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.