0

次のコマンドを使用して、ウェブカメラからオーディオとビデオを記録します

gst-launch-0.10 v4l2src ! video/x-raw-yuv,width=640,height=480,framerate=30/1 ! \
             tee name=t_vid ! queue ! videoflip method=horizontal-flip ! \
             xvimagesink sync=false t_vid. ! queue ! \
             videorate ! video/x-raw-yuv,framerate=30/1 ! queue ! mux. \
             autoaudiosrc ! audiorate ! audio/x-raw-int,rate=48000,channels=1,depth=16 ! queue ! \
             audioconvert ! queue ! mux. avimux name=mux ! \
             filesink location=video.avi

そして、結果はフロー間の同期性に関して正しいです。しかし、圧縮されていないデータなので、avi ファイルは非常に大きくなります。レコードのサイズを小さくする方法を教えてください。録音後、オーディオとビデオを別々のファイルに分割して処理していることに注意してください。シンクロニシティを保つことが重要です。

* 編集 *

次のコマンドを使用して、ffmpeg を使用して avi ファイルを圧縮しようとしました。

ffmpeg -i video.avi -vcodec msmpeg4v2 output.avi

しかし、ビットレートが無効のようです (生データなので N/A ?) 出力は次のとおりです。

Input #0, avi, from 'video.avi':
Duration: 00:00:00.00, start: 0.000000, bitrate: -2147483 kb/s
  Stream #0.0: Video: rawvideo, yuv420p, 640x480, 30 tbr, 30 tbn, 30 tbc
  Stream #0.1: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
[buffer @ 0xef57e0] w:640 h:480 pixfmt:yuv420p
Incompatible sample format 's16' for codec 'ac3', auto-selecting format 'flt'
[ac3 @ 0xedece0] channel_layout not specified
[ac3 @ 0xedece0] No channel layout specified. The encoder will guess the layout, but it     might be incorrect.
[ac3 @ 0xedece0] invalid bit rate
Output #0, avi, to 'output.avi':
  Stream #0.0: Video: msmpeg4v2, yuv420p, 640x480, q=2-31, 200 kb/s, 90k tbn, 30 tbc
  Stream #0.1: Audio: ac3, 48000 Hz, mono, flt, 200 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Error while opening encoder for output stream #0.1 - maybe incorrect parameters such as bit_rate, rate, width or height

助けてくれてありがとう。

4

2 に答える 2

1

これはあなたができることです:(900kのビデオと64kのオーディオとしましょう。48kHzのサンプリングが必要なので、少なくとも64Kビットのビットレートを与える必要があります)

gst-launch-0.10 v4l2src ! video/x-raw-yuv,width=640,height=480,framerate=30/1 ! \
         tee name=t_vid ! queue ! videoflip method=horizontal-flip ! \
         xvimagesink sync=false t_vid. ! queue ! \
         videorate ! video/x-raw-yuv,framerate=30/1 ! queue ! ffmpegcolorspace ! ffenc_mpeg4 bitrate=900000 ! mux. \
         autoaudiosrc ! audiorate ! audio/x-raw-int,rate=48000,channels=1,depth=16 ! queue ! \
         audioconvert ! lamemp3enc bitrate=64 target=1 ! queue !  mux. avimux name=mux ! \
         filesink location=video.avi

サイズを小さくしたいが、mp4 を気にしない場合は、ffenc_mp4 を x264enc に、avimux を mp4mux に置き換えることをお勧めします。x264enc を [mp4mux ではない] 他のマルチプレクサと一緒に使用している場合は、x264enc のプロパティ byte-stream=1 も忘れずに設定してください。

任意の要素タイプのプロパティを取得するには gst-inspect したがって、lamemp3enc 情報は、gst-inspect lamemp3enc を実行することで取得できます。

于 2012-10-13T14:57:25.057 に答える
0

lamemp3enc をオーディオ ブランチに、ffenc_mpeg4 (または ffenc_msmpeg4) をビデオ ブランチに入れることができます。

于 2012-10-11T12:41:08.053 に答える