看板 AVEncode 關於我們 聯絡資訊
最近在錄製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://www.ptt.cc/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
sdbb: 推好心分享 06/11 23:05
b325019: 推分享 06/13 08:14
goldie: 推分享 06/13 11:54
kobe8112: 推一個 06/17 11:02
obob321: 今天遇到同樣狀況,搜到這篇,謝謝教學 01/24 20:14