1

我使用 ffmpeg 从我的网络摄像头捕获了 rgb 格式的原始视频:

ffmpeg -f video4linux2 -s 320x240 -r 10 -i /dev/video0 -f rawvideo \
-pix-fmt rgb24 -r10 webcam.rgb24

这个原始视频文件在 mplayer 中可以正常播放。

我使用 x264 编码这个文件:

x264 --input-res 320x240 --demuxer raw --input-fmt rgb24 --fps 10 \
-o webcam.mkv webcam.rgb24

但是,当我尝试使用 vlc 播放 webcam.mkv 时,它是一个交错的、扭曲的图像。

我不知道我做错了什么。

4

2 回答 2

1

经过一些进一步的研究,我能够成功地编码原始视频流。问题(我认为)是 x264 需要 yuv420p 格式的数据。当我更改捕获格式时,我可以播放 mkv 文件而不会出现任何失真。

捕获命令:

ffmpeg -t 10 -f video4linux2 -s 320x240 -r 10 -i /dev/video0 -f rawvideo \
-pix_fmt yuv420p -r 10 webcam.yuv420p

(以 10 帧速率从输入设备 /dev/video0 捕获 10 秒,并以 yuv420p 像素格式输出到文件 webcam.yuv420p)

编码命令:

x264 --input-res 320x240 --demuxer raw  --input-fmt yuv420p --fps 10 \
-o webcam.mkv webcam.yuv420p 

播放命令:

mplayer -vo gl:nomanyfmts webcam.mkv

(或者用vlc打开)

于 2012-07-11T01:55:04.277 回答
0

您的问题是您将 --input-fmt 选项(专门用于 lavf demuxer)与 --demuxer raw 一起使用。使用 raw demuxer 您应该使用 --input-csp 选项(bgr 值可能用于 ffmpeg 的 -pix-fmt rgb24)。

于 2012-07-24T12:19:49.517 回答