video - 转换失败。关闭 ffmpeg 时队列中剩余 2 帧
问题描述
我简化的 ffmpeg 命令(较长的有 300 多个文件)如下。
ffmpeg -i "v1.mp4" -i "v2.mp4" -i "v3.mp4"
-filter_complex "[0:v:0][1:v:0][2:v:0]concat=n=3:v=1:a=0,fps=fps=30[cv1];
[0:a:0][1:a:0][2:a:0]concat=n=3:v=0:a=1,asetpts=N/SR/TB[ca1];
[cv1]setpts=0.25*PTS[v4];
[ca1]atempo=4,asetpts=N/SR/TB[a4]"
-c:v h264_nvenc -map "[v4]" -map "[a4]" x4_output_0.mp4
视频编码正在工作,但随后中断,输出文件似乎被截断。输出文件的大小几乎是应有的大小,但无法读取。
Video encoding failed\r\n
[aac @ 00000248a7856840] Qavg: 325.600\r\n
[aac @ 00000248a7856840] 2 frames left in the queue on closing\r\n
[aac @ 00000248a78595c0] Qavg: 236.279\r\n[aac @ 00000248a78595c0]
2 frames left in the queue on closing\r\n
[aac @ 00000248a7855140] Qavg: 2729.299\r\n
[aac @ 00000248a7855140] 2 frames left in the queue on closing\r\n
[aac @ 00000248a785bec0] Qavg: 1158.664\r\n
[aac @ 00000248a785bec0] 2 frames left in the queue on closing\r\n
Conversion failed!\r\n")
- 该错误是否与 .mp4 的音频部分有关
aac @ ...
? - 错误消息中的含义是什么
Qavg
? codec_time_base
和 the之间的视频流有什么区别time_base
(请参阅下面的视频属性频率的区别)?
以下是具有超过 1 个不同值的所有视频的视频属性频率。它的形式[(value, frequency), (value, frequency),...]
。
codec_time_base --- [('1/60', 384), ('1001/60000', 7), ('50/2997', 1)]
has_b_frames --- [(0, 336), (2, 56)]
level --- [(31, 336), (30, 56)]
r_frame_rate --- [('30/1', 384), ('30000/1001', 7), ('2997/100', 1)]
avg_frame_rate --- [('30/1', 384), ('30000/1001', 7), ('2997/100', 1)]
time_base --- [('1/30', 383), ('1/30000', 7), ('1/2997', 1), ('1/15360', 1)]
所有这些视频文件中的音频属性都相同。
codec_time_base --- [('1/48000', 386), ('1/44100', 6)]
sample_rate --- [('48000', 386), ('44100', 6)]
time_base --- [('1/48000', 386), ('1/44100', 6)]
- 这里的某些视频文件是否有可能导致编码故障?
解决方案
我的视频在 0:08“开始”并且无法再往前搜索,尽管 0:08 是我大致想要的开始时间。
解决我的错误的是添加参数:
-max_muxing_queue_size 9999
这也解决了我的错误Too many packets buffered for output stream 0:1.
这似乎是初始音频和视频不同步的帧率问题(奇怪的帧率或时间异常),并且调整该-r
值也可以解决它。
我得到答案的线程有更多技术故障,说明为什么会发生这种情况以及这个 3 年以上错误报告的替代解决方案https://trac.ffmpeg.org/ticket/6375
祝你好运!
推荐阅读
- python - 调用带有可选参数的函数
- ssis - 将 SharePoint 2016 列表导出到 SQL Server 2016 数据库
- angularjs - 如何将编辑的 ng 重复数据推送到另一个数组 onclick 复选框
- php - Symfony 3 在 EntityType 表单字段中获取对象数据
- ios - 在 UITableViewCell 的不同类之间切换
- r - 将 cat&sprintf 输出转换为代码/函数/计算
- java - 使用 iText 将值设置为组合框
- javascript - 定位父节点 3 级的更好方法?
- java - 为什么 StringBuilder append 方法会抛出 MalformedInputException?
- ios - 在集合视图中使用 tableview 时滚动出错