TA的每日心情 | 慵懒 17 小时前 |
---|
签到天数: 282 天 [LV.8]以坛为家I
荣誉会员
- 积分
- 103870
|
本帖最后由 op200 于 2024-12-17 21:08 编辑
恒定帧率的mkv源
帧率模式 : | 恒定帧率 (CFR) | 帧率 : | 23.976 (24000/1001) FPS |
重封装成mp4,会神奇地变成VFR
帧率模式 : | 动态帧率 (VFR) | 帧率 : | 23.976 (24000/1001) FPS | 最低帧率 : | 23.810 FPS | 最高帧率 : | 24.390 FPS |
起初我以为是mp4封装器的原因,今天我在论坛查了下其他网u的结论,是mkv的时间码计算方式和mp4不同,所以从某种角度来说是mkv的时间码出问题了,而不是mp4
所以mkv转mp4封装需要覆写时间码
废话不多说,直接上脚本(非常简陋的脚本,仅供能运行起来)
脚本依赖 mp4box 和 mp4fpsmod
- ::2024.12.14
- [url=home.php?mod=space&uid=30159]@echo[/url] off
- color 70&title 封装mp4
- echo 用法: 先用 MKVToolNix 对文件进行标准封装,例如改好轨道名、改好轨道语言、封入章节……
- echo 然后运行此脚本将封装好的mkv文件转为mp4文件
- echo.
- set /p in=输入文件路径名:
- set in="%in:"=%"
- set /p o=输出文件路径名:
- set o="%o:"=%"
- if not "%o:~-5%==".mp4" (
- set o=%o:~0,-1%.mp4"
- )
- set fps=24000/1001
- set /p fps=输入帧率(分数,默认值为'%fps%',直接回车则使用默认值):
- @echo on
- mp4box -add %in% -new %o:~0,-1%.temp.mp4"
- mp4fpsmod -r 0:%fps% -o %o% %o:~0,-1%.temp.mp4"
- @echo off
- if exist %o:~0,-1%.temp.mp4" (del /q %o:~0,-1%.temp.mp4")
- choice /c e
复制代码
如果复制这个脚本,需要保存为GB编码,用记事本保存的话,保存为ANSI(系统默认编码),这样才能支持非ASCII字符
注意:之前的脚本存在bug,会导致关键帧信息丢失,使视频失去随机跳转能力,现在已经修改脚本
|
|