作者x94fujo6 ()
看板AVEncode
标题[情报] 串流档案时间轴损坏修复
时间Tue Jun 11 01:29:27 2019
最近在录制youtube之类live
用streamlink抓取串流存为ts档
因为各种原因
很多live是结束後就没得重看了
也不会有重录的机会...
然後终於遇到坏档了
timestamp损坏
用各种解码器都只能读到部分影片
从档案大小来看剩下的部分还在
只是因为timestamp损坏读取不出来
使用ffmpeg转换时出现大量的Non-monotonous DTS in output stream
转出来的也是只有读取到的部分的影片
翻了一大堆ts/flv修复的英文讨论
结果根本没有个完整的解决方法
修复软体不是不支援就是要钱但又不知道有没有用
有远古的工具则是win10无法使用或是格式不支援
自己摸出来的免费修复方法 (过程无重新编码 都是copy)
1.使用mkvtoolnix
把ts档丢进去
然後下方轨道处选择视讯→右边勾选修复位元串流时间资讯
其实就是mkvmerge的参数
--fix-bitstream-timing-information
然後开始multiplexing
输出成mkv
这阶段已经能看到完整长度的时间轴
但後方损坏的部分还是无法播放
2.使用ffmpeg copy成mp4时进行自动修复
ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4
此时一样会跳出Non-monotonous DTS in output stream
但
仔细看会发现开始正确修复了
没经过前一步的话
损坏的部分会被全部塞到影片结尾的同一个时间点,结果还是不能看
未经过MKV处理的(读不到後面的部分 全在做白工)
https://i.imgur.com/olfVuGN.jpg
经过处理後的(正确修复)
https://i.imgur.com/JwGNXbP.jpg
这次处理完之後影片应该正常了
但声音还是出不来
3.再使用mkvtoolnix转换一次
但加上fps(帧数)设定
一般应该是30或60
29.xx选30000/1001p
这次应该已经声音也能听了(不知道为甚麽显示0位元)
4.再ffmpeg copy成mp4一次
完全正常了
大概是这样
留个纪录
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.33.176.49 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AVEncode/M.1560187773.A.735.html
※ 编辑: x94fujo6 (114.33.176.49 台湾), 06/11/2019 01:29:58
※ 编辑: x94fujo6 (114.33.176.49 台湾), 06/11/2019 01:31:05
※ 编辑: x94fujo6 (114.33.176.49 台湾), 06/11/2019 01:43:01
1F:推 sdbb: 推好心分享 06/11 23:05
2F:推 b325019: 推分享 06/13 08:14
3F:推 goldie: 推分享 06/13 11:54
4F:推 kobe8112: 推一个 06/17 11:02
5F:推 obob321: 今天遇到同样状况,搜到这篇,谢谢教学 01/24 20:14