如何使用ffmpeg将来自摄像机的实时流分成mp4格式的许多60秒视频片段

问题描述

使用以下代码

ffmpeg -f dshow -rtbufsize 1000M -i video = "Game Capture HD60 S (Video) (# 01)" -codec copy -map 0 -f segment -segment_time 60 -reset_timestamps 1 "C: \ Program Files (x86) \ ffmpeg \ test \ clips \ testfile_piece_% 02d.mp4 "

我有以下问题:

“在流#0中找不到编解码器rawvideo的标签,找不到编解码器 当前在容器中受支持无法为输出写入标头 文件#0(编解码器参数不正确?):参数无效”

我该如何解决

谢谢

解决方法

原始视频

您正在使用启用stream copy模式的-codec copy。 dshow输出未压缩的原始视频。 MP4不支持原始视频。

您可能不想要原始视频。它会生成大量文件,而播放机可能无法播放。

如果要将原始视频更改输出到MOV,Matroska(.mkv)或AVI(AVI不支持所有原始视频像素格式)。

选择编码器

因为要输出到MP4,所以可能需要H.264或H.265 / HEVC视频,而不是原始视频。

-codec copy替换为-c:v libx264-c:v libx265

或者省略-codec copy,它将使用MP4的默认编码器,几乎可以肯定是libx264(取决于您的ffmpeg配置:请参见ffmpeg -h muxer=mp4)。

所以您的命令可能类似于:

ffmpeg -f dshow -rtbufsize 1000M -i video="Game Capture HD60 S (Video) (# 01)" -c:v libx264 -map 0 -f segment -segment_time 60 -reset_timestamps 1 "C:\Program Files (x86)\ffmpeg\test\clips\testfile_piece_%02d.mp4"