我使用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时,它是一个交错的,扭曲的图像。
我不知道我做错了什么。
答案 0 :(得分: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打开)
答案 1 :(得分:0)
你的问题是你使用--input-fmt选项(专门用于lavf demuxer)和--demuxer raw。使用原始分路器时,您应该使用--input-csp选项(bgr值可能适用于ffmpeg的-pix-fmt rgb24)。