5

私のパイプラインは、audiotestsrc を videotestsrc と一緒に多重化し、filesink に出力しようとしているだけです。

videotestsrc num-buffers=150  ! video/x-raw-yuv,width=1920, height=1080 ! 
   timeoverlay ! videorate ! queue ! xvidenc ! avimux name=mux mux.
      ! filesink sync=true location=new.avi  
audiotestsrc num-buffers=150 ! 
  queue ! audioconvert ! audiorate ! mux.
  • new.avi が生成されます。
  • 動画の長さは予想どおり正確に 5 秒です
  • 音声の長さは約 3.5 秒で、残りの 1.5 秒は
    滑らかです。

ここで何が欠けていますか?sync="" プロパティなどのあらゆる組み合わせを試しました。

autotestpattern と videotest パターンが一緒に多重化されたテスト クリップを生成するパイプラインはどれですか?オーディオとビデオのデュレーションは同じです。

ありがとう

4

2 に答える 2

8
audiotestsrc num-buffers=150

デフォルトでは、各バッファには 1024 個のサンプルが含まれます: samplesperbuffer つまり、150*1024=153600 個のサンプルが生成されます。44.1kHz と仮定すると、継続時間は 153600/44100=3.48 秒になります。

したがって、5 秒のオーディオが必要な場合は、5*44100=220500 サンプルが必要です。samplesperbuffer==1024 の場合、これは 220500/1024=215.33 バッファを意味します。(つまり、215 または 216 バッファー)。

samplesperbuffer を 441 に設定すると、より簡単になります。この場合、1 秒のオーディオごとに正確に 100 個のバッファーが必要になります。

audiotestsrc num-buffers=500 samplesperbuffer=441
于 2012-04-18T12:01:40.887 に答える
2

フレームのデュレーションを一致させるために、audiotesrc のブロックサイズ プロパティを利用できます。これはバイト単位であるため、audiotestsrc の後に caps フィルターを使用して、サンプリング レートとサンプル形式を選択することをお勧めします。

于 2012-04-18T07:47:10.363 に答える