ffmpeg - mp4s 的 ffmpeg concat 在连接处跳转并暂停几秒钟
问题描述
我正在使用 ffmpeg 创建 10 秒的 mp4(h265) 视频块。我正在使用 image2pipe,因为这似乎对 cpu 的影响较小,命令行是:
-y -threads 1 -framerate " & FrameRate & " -f image2pipe -i pipe:.jpg -vf format=yuv420p -c:v libx265 -preset ultrafast -crf 28 -vsync vfr " & strSaveDirectory
然后我使用以下方法连接这些视频块:
"-f concat -safe 0 -i " & strConcatAVIs & " -c copy " & outPutPath
如果我播放每一个 10 秒的 mp4,它们似乎是完整的,但是当它们合并到一个文件时,有时会在加入时暂停几秒钟,有时视频会在加入时跳跃 3 或 4 秒。
通常这是几个文件的描述:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Temp\testmp4\video_1_1_2_2019_5_13_13_15_10.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf58.20.100
Duration: 00:00:09.85, start: 0.000000, bitrate: 225 kb/s
Stream #0:0(und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, progressive), 768x576 [SAR 1:1 DAR 4:3], 221 kb/s, 13 fps, 13 tbr, 13312 tbn, 13 tbc (default)
Metadata:
handler_name : VideoHandler
-----------------------------------------------
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Temp\testmp4\video_1_1_2_2019_5_13_13_15_20.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf58.20.100
Duration: 00:00:10.00, start: 0.000000, bitrate: 334 kb/s
Stream #0:0(und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, progressive), 768x576 [SAR 1:1 DAR 4:3], 330 kb/s, 13 fps, 13 tbr, 13312 tbn, 13 tbc (default)
Metadata:
handler_name : VideoHandler
必须至少指定一个输出文件
在我的文件“strConcatAVIs”中,我尝试在暂停的连接上添加正确的持续时间,但如果我将持续时间更改为 14、6,而不是正确的持续时间 10、10,则加速它播放非常流畅。
解决方案
推荐阅读
- c++ - C++ / SDL2 - 球一起弹跳/故障
- flutter - 比较两个列表中的元素并在 Dart 中创建一个新列表
- python - 有没有办法通过重新格式化来汇总数据?
- python - 函数 np.std() 中的轴 (0, 1) 是什么意思?
- python - 将特定数字(无排序)移动到列表左侧
- java - 如何将类型(通用)传递给注释?
- if-statement - 我正在尝试使用重复和 if 条件将列中的单元格值减少 1
- python-3.x - 我想将来自多个文本框的值加起来并插入到最终的文本框中
- terminal - 在命令行提示符的上下文中,“nord”是什么意思?
- laravel - Laravel 6 保留两个服务器和子域之间的会话