我有类似相机的设备,可以产生视频流并通过USB端口将其传递到我的基于Windows的机器。
使用命令:
ffmpeg -y -f vfwcap -i list
我看到(正如预期的那样)FFmpeg将输入流发现为流#0。
使用命令:
ffmpeg -y -f vfwcap -r 25 -i 0 c:\out.mp4
我可以将输入流成功保存到文件中。
从日志中我看到:
流#0:0:视频:rawvideo(UYVY / 0x59565955),uyvy422,240x320,25 tbr,1k tbn,25 tbc 没有指定像素格式,yuv422p用于选择H.264编码。
因此,我的输入格式已转码为yuv422p
。
我的问题:
答案 0 :(得分:4)
如何让ffmpeg将我的输入视频流保存到out.mp4而不进行转码
你做不到。你可以从vfwcap stream copy原始视频,但MP4容器格式不支持rawvideo。您有几种选择:
这符合您在不重新编码的情况下保存输入的要求。
ffmpeg -f vfwcap -i 0 -codec:v copy rawvideo.nut
这与上面相同,但是rawvideo然后被编码为更常见的格式。
ffmpeg -f vfwcap -i 0 -codec:v copy rawvideo.nut
ffmpeg -i rawvideo.nut -codec:v libx264 -crf 23 -preset medium -pix_fmt yuv420p -movflags +faststart output.mp4
有关-crf
,-preset
的更多信息以及有关创建H.264视频的其他详细信息,请参阅FFmpeg and x264 Encoding Guide。
-pix_fmt yuv420p
将使用与QuickTime等哑玩家兼容的像素格式。有关详细信息,请参阅colorspace和chroma subsampling。
-movflags +faststart
重新定位moov原子,允许视频在客户端完全下载之前开始播放。如果您正在托管视频,并且用户将在其浏览器中查看该视频,则非常有用。
使用huffyuv:
ffmpeg -f vfwcap -i 0 -codec:v huffyuv lossless.mkv
使用无损H.264:
ffmpeg -f vfwcap -i 0 -codec:v libx264 -qp 0 lossless.mp4