私は次のスクリプトを使用しています:http://www.thegameengine.org/miscellaneous/streaming-twitch-tv-ubuntu/Twitch にストリーミングします。 動作しますが、マイクをストリーミングするのではなく、コンピューターのオーディオのみをストリーミングしたいです。 それを実現するには、スクリプトをどのように変更すればよいですか?
答え1
コンピューターオーディオの選択
パルスオーディオ
これはPulseAudioとで行うことができますpavucontrol
。HOWTO: Linux での適切なスクリーンキャスト:
をインストールします
pavucontrol
。 で録音を開始しますffmpeg
。 を開始しますpavucontrol
。 「録音」タブに移動すると、ffmpeg
そこにリストされているのが見つかります。 オーディオ キャプチャを「内部オーディオ アナログ ステレオ」から「内部オーディオ アナログ ステレオのモニター」に変更します。 これで、マイクの代わりにシステム オーディオとアプリケーション オーディオが録音されるはずです。この設定は記憶されます。次回 でキャプチャする場合
ffmpeg
、システムオーディオの録音が自動的に開始されます。元に戻したい場合は、 をpavucontrol
もう一度使用してマイク入力に戻します。
アルサ
あるいは、オーディオ システムが次のようなラベルの付いたループバック デバイスをサポートしている場合、ALSA はシステム オーディオをキャプチャできます。ステレオミックス、ウェーブアウトミックス、モノミックス、 または聞こえますかalsamixer
。これらのいずれかを持っているかどうかを確認してください。ハードウェアループバックは最近ではそれほど一般的ではない. 次に参照してくださいFFmpeg Wiki: ALSA でオーディオをキャプチャするシステムがこの機能をサポートしている場合は、適切な構文を参照してください。
そうでなければ、ALSA を使用してソフトウェア ループバックを作成できると思いますが、間違っている可能性があり、その経験はありません。
ひどい脚本
ffmpeg
そのひどい繰り返しスクリプトのコマンドには、いくつか問題があります。
-preset
代わりに使用してください-vpre
-qscale
libx264では無視されます(-crf
またはを使用してください-b:v
)- 写真のグループが設定されていません(使用
-g
) - VBVを使用する必要があります(
-maxrate
およびを使用します-bufsize
) - 出力では互換性のあるクロマサブサンプリング方式が使用されていない可能性があります( を使用
-pix_fmt yuv420p
) - x11grab入力は
-framerate
ではなく を使用する必要があります-r
-threads 6
は任意の数値のように思えますし、誰もが同じハードウェアを使用しているわけではありません。 デフォルトを使用するか ( を削除します-threads
が、これは「貪欲」です)、満足のいくレートでエンコードでき、なおかつ録音している他の作業を実行するのに十分なパワーが確保できる適切な値を設定する必要があります。
代わりに、コマンドは次のようになります。
ffmpeg \
-f alsa -ac 2 -i "$INAUD" \
-f x11grab -video_size "$INRES" -framerate "$FPS" -i :0.0 \
-vcodec libx264 -s "$OUTRES" -preset "$QUAL" -maxrate 1000k -bufsize 2000k -g 50 -pix_fmt yuv420p \
-acodec libmp3lame -ar 44100 -b:a 128k \
-f flv "$STREAM_URL"
注記:-maxrate
、、、および-bufsize
のサンプル値を盲目的に使用しないでください。必要に応じて調整する必要があります。-g
-b:a
FFmpeg を使用したストリーミング サイトのエンコード. 参照FFmpeg H.264 ビデオエンコーディングガイド。