2009-11-10 6 views
5

に複数の動画を結合:私は3つの動画持って1

  • ビデオカメラ
  • 講義
  • に使用されるコンピュータとビデオのデスクトップキャプチャのビデオで撮影された講義をホワイトボードの

私は、これらの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" 
+0

やエフェクトが(価格は自由よりわずかに高い付与)した後は、Adobeで約30秒で全体のことを成し遂げることができ – Adam

答えて

4

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

プロセスは次のように動作:

  1. デマルチプレクサ音源1から生WAVに
      源2から
    • デマルチプレクサオーディオ
    • 源3から
    • デマルチプレクサオーディオ
    • 源1から
    • デマルチプレクサビデオto MPEG1
    • ソースからのデマルチプレクサビデオ2
    • ソースからのデマルチプレクスビデオフォーマット
を標的とする3
  • を連結オーディオ1 +オーディオ2 +オーディオ3
  • を連結映像1 +ビデオ2 +動画3
  • マルチプレクサオーディオ123およびビデオ123
  • ターゲットにエンコード

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

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

    あなたが傾倒している場合、これは高度に教育的なプロジェクトです。あなたの目標が単なるプロジェクトのためにいくつかのビデオを一緒に叩くことであれば、おそらくGUIツールを使う方が良い考えです。

    +0

    私が将来的に原料のこの種の多くをやっているだろうと思われます私は本当にこれを深く勉強したいと思っています。情報をありがとう! – StackedCrooked

    +1

    彼は、3つのビデオがすべて1つのフレーム内に同時に表示されるようにビデオの合成について質問していませんか?これはちょうど次々に再生するようにビデオを連結することです。 –

    +0

    うん...実際、あなたは正しいかもしれないと思います。はい、私が答えたのは「ただの」連結です。実際、私は「連結」という言葉を2度使用しました。 –

    2

    あなただけの単一のビデオに映像を組み合わせて、ビデオをトリミングしたい場合は、私は、仮想ダブを使用すると思います。

    -1

    avisynthかなり簡単にできます。例としてモザイクセクションのhereを見てください。

    私はffmpegをかなり使いましたが、私はこの機能に遭遇したことはありませんでしたが、それはそこにないというわけではありません。あなたがプロジェクトを探しているならば、libavformatとlibavcodec(ffmpegライブラリ)を使って、いつでもCやC++で自分でやることができますが、自分でビデオを合成することで手を汚す必要があります。ビデオを完成させ、コードで修正するのではなく、avisynthやvirtualdubのようなあらかじめ作られたツールを使ってください。

    2

    あなたが複数のビデオファイルを結合することができます/ VLCで一の画面にストリーム:

    スクリプト/それを自動化することができるように、コマンドラインインターフェイスがあります。

    http://wiki.videolan.org/Mosaic

    関連する問題