8

2つのビデオソース(プレゼンターが話しているものと、スライドがあり、オーディオがないもの)を取得してマージできる単純なLinuxCLIアプリケーションを作成したいと思います。

出力ビデオ全体を2つのオリジナルビデオと並べて表示したいと思います。それができない場合、私の次善の選択肢は、プレゼンターが隅にある小さなフレームにある「ピクチャーインピクチャー」スタイルのビデオです。

数時間の調査から、GStreamerはこれを実行できる可能性があるようです。試してみる前に誰かが確認できますか?

それができない場合、私が使用できる可能性のある他のAPIはありますか?

4

4 に答える 4

15

gst-launchを使用した簡単な(動作する)セットアップは次のとおりです(Ubuntu / Debianにgstreamer-toolsパッケージをインストールします):

gst-launch v4l2src device = / dev / video1!ビデオスケール!ffmpegcolorspace!video / x-raw-yuv、width = 640、height = 480!videobox border-alpha = 0 left = -640!videomixer name = mix!ffmpegcolorspace!xvimagesink v4l2src!ビデオスケール!ffmpegcolorspace!video / x-raw-yuv、width = 640、height = 480!ビデオボックス右=-640!ミックス。

これは基本的に、video 4 linux 2を使用して2つのビデオを読み取ります。1つはデフォルトのデバイスから、もう1つは/ dev/video1からのストリームです。設定が異なる場合は、これを変更することをお勧めします。

最初の部分(太字ではない)は、キャプチャデバイスからビデオを読み取り、サイズと色空間(videoscale!ffmpegcolorspace)をネゴシエートし、特定のビデオ形式(video / x-raw-yuv、width = 640、height = 480)、左側に640の透明なピクセルを追加し(これにより、画像を右側に移動します)、「mix」という名前のビデオミキサーを作成します。最後に、色空間を再度自動ネゴシエートし、XVideoウィンドウを使用して結果を表示します。

2番目の部分(太字)は2番目のビデオストリームを読み取り(デフォルトのキャプチャデバイスから、device = / dev / videoXを追加して別のデバイスを選択します)、最初のストリームと同じ色空間、サイズネゴシエーション、およびビデオ形式の選択を行います次に、ビデオを640ピクセル左に移動し、結果をmixという名前の要素(ビデオミキサー)にフィードします。最後のドットは必須であり、フィルターを探す代わりに「mix」という名前の既存の要素を検索するようにgstreamerに指示します。

v4l2src device = / dev/ video1をfilesrclocation=video.aviに置き換えることができます。ビデオファイルから入力を取得するためのdecodebin 。

xvimagesinkをjpegencに置き換えます!avimux!filesink location = out.aviを使用して、結果をビデオファイルに書き込みます。

于 2010-11-01T11:55:29.543 に答える
7

gstreamerは2つのビデオをマージし、videomixerフィルターを使用してそれらを並べて出力ビデオに配置できることがわかりました。

2つの入力ファイルを受け取り、それらを同じサイズにスケーリングしてから、それらをマージしてtheoraビデオにエンコードする基本的なパイプラインは、次のようになります。

filesrc -> decodebin -> ffmpegcolourspace -> videoscale ->  videobox -> videorate
                                                                                  \
filesrc -> decodebin ->  ffmpegcolourspace  ->  videoscale  ->  videorate   ->    videomixer -> ffmpegcolourspace -> theoraenc -> oggmux -> filesink

このパイプラインをどのように実装するかは、言語によって異なります。Rubyバインディングを使用してプロトタイプを作成しましたが、非常にうまく機能します。

于 2009-07-29T14:56:44.443 に答える
0

AviSynthが頭に浮かびます。私は何年も前にWindowsで使用してきましたが、任意の後処理がかなり得意です。AviSynth v3はLinuxでネイティブに実行されるはずですが、まだ準備が整っていません。ただし、Wineで以前のバージョンを実行するためのツールがあります。

于 2009-07-21T14:49:06.753 に答える
0

MEncoderは、Linux上でネイティブにそれを行うことができます。コードをフォークするか、バイナリを呼び出すことができます。

于 2009-07-21T15:00:24.910 に答える