2012-07-10 58 views
1

我一直在使用的ffmpeg拍摄的RGB格式的原始视频从我的摄像头:扭曲VLC播放与X264编码的文件

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 

然而,当我尝试播放webcam.mkv用VLC是隔行扫描,图像失真。

我不知道我在做什么错。

+0

出于好奇,为什么你不使用ffmpeg进行转换?肯定不太可能出现这种不协调的情况,这种方式有点神秘。 – blahdiblah 2012-07-10 19:38:50

+0

我正在评估在项目中使用的x264。使用ffmpeg和mplayer的工作仅仅是生成和验证测试数据。 – monzie 2012-07-10 21:38:00

回答

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和输出的帧速率在YUV420P像素格式到文件webcam.yuv420p输入设备/ dev/video0的,持续10秒)

编码命令:

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

播放命令:

mplayer -vo gl:nomanyfmts webcam.mkv 

(或用vlc打开)

0

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