如何拆分具有奇怪关键帧“pkt_pts_time = N / A”的视频?

问题描述 投票:0回答:1

我可以在普通视频(mkv上的h264)上运行这样的命令: avconv -i videofile.avi -c copy -flags +global_header -segment_time 60 -f segment "videofile-part."%03d".mp4"

但对于具有此格式和容器的视频(至少我有这些),它将失败: .avi文件上的MPEG-4

如果我探测它,我会得到分裂器忽略的关键帧: ffprobe videofile.avi -show_entries frame=key_frame,pict_type,pkt_pts_time -select_streams v -of compact -v 0 | grep frame=1(来自此提示https://stackoverflow.com/a/48687236/1422630

我得到了很多这个: “帧| key_frame = 1 | pkt_pts_time = N / A | pict_type = I”

普通视频会输出这样的行: “帧| key_frame = 1 | pkt_pts_time = 44.252542 | pict_type = I”

所以很明显avconv需要有效的“pkt_pts_time”才能工作......

或者(不需要命令行工具): 任何快速的方法来添加适当的关键帧(pkt_pts_time有价值)到视频,让它由avconv正确分割? 或者我应该快速将大视频(复制视频流)转换为avconv检测到正常关键帧的格式?

实验值: 我正在使用linux ubuntu。 我正在使用avconv创建一个bash脚本,但是如果它们有效,则可以使用其他可编写脚本的工具(命令行工具)。

PS:这对unix stackexchange更合适吗?

video split avconv ffprobe
1个回答
1
投票

使用最新版本的ffmpeg(4.0+),使用

ffmpeg -fflags +genpts -i videofile.avi -c copy -segment_time 60 -f segment "videofile-part.%03d.mp4"

种族将分配缺失的PTS。

© www.soinside.com 2019 - 2024. All rights reserved.