5

私は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"
4

4 に答える 4

4

それはffmpegで行うことができます。私はそれを自分でやった。とはいえ、それは技術的に複雑です。とは言うものの、 繰り返しになりますが、これは、使用する可能性のある他のソフトウェアがそのコアエッセンスで実行することです。

プロセスは次のように機能します。

  1. ソース1から生のwavへのDemuxオーディオ
    • ソース2からのDemuxオーディオ
    • ソース3からのDemuxオーディオ
    • ソース1からMPEG1へのDemuxビデオ
    • ソース2からのDemuxビデオ
    • ソース3からのDemuxビデオ
    • オーディオ1+オーディオ2+オーディオ3を連結します
    • ビデオ1+ビデオ2+ビデオ3を連結します
    • オーディオ123とビデオ123をターゲットに多重化
    • ターゲット形式にエンコード

人々を驚かせるのは、2つの生のPCM wavオーディオファイルを文字通り連結でき、その結果が有効であるということだと思います。本当に、本当に人々を驚かせるのは、MPEG1/h.261ビデオでも同じことができるということです。

私が言ったように、私はそれをしました。いくつかの詳細が省略されていますが、それは最も確実に機能します。私のプログラムはffmpegを使ったbashスクリプトで行われました。私はffmpegCAPIを使用したことがありませんが、同じことを行うためにそれを使用できなかった理由がわかりません。

気が向いたら、これは非常に教育的なプロジェクトです。1回限りのプロジェクトでいくつかのビデオを一緒に叩くことを目標としている場合は、GUIツールを使用することをお勧めします。

于 2009-11-10T23:29:21.413 に答える
2

フッテージを1つのビデオに結合してビデオをトリミングしたいだけの場合は、仮想ダブを使用します。

于 2009-11-10T17:17:24.467 に答える
2

VLCを使用すると、複数のビデオファイル/ストリームを1つの画像に組み合わせることができます。

スクリプト/自動化できるコマンドラインインターフェイスがあります。

http://wiki.videolan.org/Mosaic

于 2012-01-10T15:26:40.287 に答える
-1

avisynthはそれをかなり簡単に行うことができます。例については、モザイクセクションの下を ご覧ください。

私はffmpegをかなり使用していて、この機能に出くわしたことはありませんが、それがないという意味ではありません。プロジェクトを探している場合は、libavformatおよびlibavcodec(ffmpegライブラリ)を使用してCまたはC ++でいつでも自分で行うことができますが、ビデオを自分で合成する場合は、手を非常に汚す必要があります。コードをいじくり回すのではなく、ビデオを完成させたいだけの場合は、avisynthやvirtualdubなどの既成のツールを使用してください。

于 2009-11-10T21:47:53.663 に答える