我正在尝试使用ffmpeg处理来自usb网络摄像头的流式视频数据。该过程涉及将原始数据编码为hevc格式。到目前为止,我能够做到。 但是现在,我希望将处理后的数据分成10秒的块并将其保存在单独的文件中。这应该重复,直到我手动终止/中断该过程。
ffmpeg -i /dev/video1 -f segment -segment_times 10 -c:v hevc cam_1_%02d.mp4
以上代码确实创建了多个文件,但只有第一个文件可以使用vlc读取;其他文件看起来很糟糕。
在我运行命令时,我可以看到以下消息: -
Stream mapping: Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) Press [q] to stop, [?] for help Past duration 0.601555 too largeN/A time=00:00:14.63 bitrate=N/A dup=11 drop=0 Past duration
0.601463 too large Past duration 0.601555 too largeN/A time=00:00:15.16 bitrate=N/A dup=11 drop=0 Past duration 0.601585 too large
Last message repeated 1 times Past duration 0.601646 too large Past duration 0.601677 too large Past duration 0.601707 too largeN/A time=00:00:15.66 bitrate=N/A dup=11 drop=0
我在这里缺少什么?
答案 0 :(得分:1)
添加-reset_timestamps 1
输出选项。来自segment muxer documentation:
重置每个段开头的时间戳,以便每个段 将以接近零的时间戳开始。它旨在简化播放 生成的段的数量。可能无法使用某些组合 muxers /编解码器。默认设置为0。
另外,请考虑将-segment_times
更改为-segment_time
,因为您是单个时间值。