私は3つのビデオを持っています:
- ビデオカメラで撮影された講義
- 講義で使用されたコンピューターのデスクトップキャプチャのビデオ
- とホワイトボードのビデオ
これらの3つのコンポーネントが画面の特定の領域を占める最終的なビデオを作成したいと思います。
これを可能にするオープンソースソフトウェア(mencoder、ffmpeg、virtualdub ..)はありますか?どちらをお勧めしますか?
または、プログラムでそのようなものを作成できるC / C ++ APIはありますか?
編集
将来的には複数の講義が録音される予定です。これは、汎用/自動化されたソリューションが必要であることを意味します。
私は現在、この仕事をするためにGStreamerでアプリケーションを書くことができるかどうかをチェックしています。それについて何かコメントはありますか?
解決しました!
私はGStreamerのvideomixer要素でこれを行うことに成功しました。gst-launch構文を使用してパイプラインを作成し、それをgst_parse_launchでロードします。これは、複雑なパイプラインを実装するための非常に生産的な方法です。
これは、2つの着信ビデオストリームとロゴ画像を受け取り、それらを1つのストリームにブレンドして複製し、同時に表示してディスクに保存するパイプラインです。
desktop. ! queue
! ffmpegcolorspace
! videoscale
! video/x-raw-yuv,width=640,height=480
! videobox right=-320
! ffmpegcolorspace
! vmix.sink_0
webcam. ! queue
! ffmpegcolorspace
! videoscale
! video/x-raw-yuv,width=320,height=240
! vmix.sink_1
logo. ! queue
! jpegdec
! ffmpegcolorspace
! videoscale
! video/x-raw-yuv,width=320,height=240
! vmix.sink_2
vmix. ! t.
t. ! queue
! ffmpegcolorspace
! ffenc_mpeg2video
! filesink location="recording.mpg"
t. ! queue
! ffmpegcolorspace
! dshowvideosink
videotestsrc name="desktop"
videotestsrc name="webcam"
multifilesrc name="logo" location="logo.jpg"
videomixer name=vmix
sink_0::xpos=0 sink_0::ypos=0 sink_0::zorder=0
sink_1::xpos=640 sink_1::ypos=0 sink_1::zorder=1
sink_2::xpos=640 sink_2::ypos=240 sink_2::zorder=2
tee name="t"