より高い解像度でビデオを録画しようとすると、ffmpegはクラッシュします。

より高い解像度でビデオを録画しようとすると、ffmpegはクラッシュします。

USBカメラを使って一部の動画を録画しようとしているのに問題がありますffmpeg

を実行すると、ffmpeg -f video4linux2 -t 00:00:10 -i /dev/video0 out.mpgプログラムは640x480で録画しようとするとffmpeg中断されます。

ところで、640x480(例:320x240)より低い解像度で追加して-s録画するffmpegと、動画の録画が成功します。

一時停止した後、をクリックするとCTRL+Cffmpegが再起動し、0 kBのサイズのファイルが作成されます。を使用すると、デバイスへの呼び出しがreturnとそれに続くreturnを維持することがstraceわかります。ioctl-EINVALioctl-EAGAIN

ioctl(3, VIDIOC_G_STD, 0xbe84dfb0)      = -1 EINVAL (Invalid argument)
ioctl(3, VIDIOC_DQBUF, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EAGAIN (Resource temporarily unavailable)

なぜこれが起こるのかご存知ですか?

私は1.25でビルドされたffmpegバージョン2.8.7を使用しています。busyboxホストアーキテクチャは、カーネル3.2を実行するARMプロセッサです。

ソースから最新バージョンをコンパイルしてみましたが、問題は解決しません...

ベストアンサー1

理由を確認してください:トランスコーディングと生データボリューム。

私の質問に記載されているコマンドラインを使用して生の形式(yuv422)を読み、それをmpeg-1にトランスコードしていますffmpeg。カメラからストリーミングされるデータ量がプロセッサに比べて多すぎます。ぶら下がっている状態で。私が使用しているカメラは圧縮形式(mjpeg)でストリーミングすることもできます。このフォーマットに切り替えると、途切れることffmpegなく15fpsで録画できます。

しかし、mjpegからmpeg-1へのトランスコーディングステップがあります。最後のトランスコーディングステップを削除してストリームをコピーするように指示することで、ffmpegより高いfps数を達成できました。

おすすめ記事