daveyu824 發表於 2014-1-12 09:33:44

mkvmerge的問題

本文章最後由 daveyu824 於 2014-1-12 09:33 編輯

我暈了 原本是想說字幕做完以後順手壓成60fps的720p 結果聲音延遲問題搞得我快瘋了
最後索性罷手 改成直接和ts檔封成mkv 還可以關閉字幕也方便些
可是丟進mkvmerge(我發現他不吃tp 副檔名改成ts沒差吧)他就跳出

Error: Found B frame without second reference in a non closed GOP. Fix the MPEG2 video stream before attempting to multiplex it.

拜過Google大神了 中文網站完全沒有討論 外國網站也沒啥解決辦法
拜託各位了

acerx 發表於 2014-1-12 18:52:19

本文章最後由 acerx 於 2014-1-14 16:23 編輯

假設
原檔為 original.tp
視訊重新編碼成品為 video.mkv

你必須取得音訊延遲秒數 給 mkvtoolnix
如果你沒有辦法取得音訊延遲秒數,可以嘗試以下方法

用 FFmpeg copy 可以保留音訊延遲訊息ffmpeg -i original.tp -i video.mkv -map 0:v -map 1:a -c copy output.mkv
如果你要重新編碼音訊可以用 -async 1
-async 1 會補上靜音,使音訊與視訊長度相同、同步

先用FFmpeg將來源音訊解碼為PCM(WAV)ffmpeg -i original.tp -vn -async 1 -c:a pcm_s16le audio.wav再將 audio.wav 給其他編碼器編碼,或是直接pipe給其他音訊編碼器ffmpeg -i original.tp -vn -async 1 -c:a pcm_s16le -f wav - |
ex. pipe ffmpeg to NeroAacEncffmpeg -i original.tp -vn -async 1 -c:a pcm_s16le -f wav - | NeroAacEnc -if - -q 0.5 -lc -ignorelength -of audio.m4a
ex. pipe ffmpeg to qaacffmpeg -i original.tp -vn -async 1 -c:a pcm_s16le -f wav - | qaac -q 2 --tvbr 100 --ignorelength -o audio.m4a -

假設音訊重新編碼成品為 audio.m4a
將視音訊封裝,使用 mkvtoolnix 或 ffmpeg ffmpeg -i video.mkv -i audio.m4a -map 0:v -map 1:a -c copy output.mkv
ffmpeg -map 使用範例與說明
https://trac.ffmpeg.org/wiki/How%20to%20use%20-map%20option
完整參數功能說明
http://www.ffmpeg.org/ffmpeg-all.html

FFmpeg 是個萬能神器,看完整參數功能說明就知道
網路上許多GUI都是以FFmpeg為核心發展,但都沒有利用到FFmpeg的強大功能
許多參數設定都沒在GUI上做出來

Zeranoe FFmpeg builds
http://ffmpeg.zeranoe.com/builds/

non-free FFmpeg
https://mega.co.nz/#F!FkdFnYLa!azPzcnMZfDoMO3GvUiMcZg
多了 FDK-AAC、FAAC 內建編碼器

daveyu824 發表於 2014-1-12 20:31:44

acerx 發表於 2014-1-12 18:52 static/image/common/back.gif
假設
原檔為 original.tp
視訊重新編碼成品為 video.mkv


謝謝大大說明得這麼仔細 我來試試
頁: [1]
查看完整版本: mkvmerge的問題