FFmpeg 一鍵自動封裝 MKV
本文章最後由 acerx 於 2014-1-9 11:50 編輯由於電視不支援DTS音訊
所以我必須用 qaac 重新編碼
然後與原始視訊/字幕重新封裝為MKV (不使用原始音訊)
for /r "%dir%" %%i in (*.mkv) do (
ffmpeg -i "%%~i" -y -vn-async 1 -ac 2 -f wav - | qaac --tvbr 100 --quality 2 --rate keep --ignorelength -o "%outdir%\%%~ni.m4a" -
ffmpeg -i "%%~i" -i "%%~dpni.m4a" -map 0:v -map 1:a -map 0:s -c:v copy -c:a copy -c:s copy "%outdir%\%%~ni.qaac.mkv"
)問題在於我想要自動複製字幕軌
所以用了-map 0:s-c:s copy
但如果輸入沒有字幕軌,則會發生錯誤
不考慮手動封裝,如果檔案太多很麻煩
本文章最後由 acerx 於 2014-1-10 11:00 編輯
目前發現的解決方法
1.用CMD去檢查有沒有 Remux 輸出檔
沒有的話,參數去掉 -map 0:s 在執行一次 FFmpegfor /r "%dir%" %%i in (*.mkv) do (
ffmpeg -i "%%~i" -y -vn-async 1 -ac 2 -f wav - | qaac --tvbr 80 --quality 2 --rate keep --ignorelength -o "%outdir%\%%~ni.m4a" -
ffmpeg -i "%%~i" -i "%outdir%\%%~ni.m4a" -map 0:v -map 1:a -map 0:s -c:v copy -c:a copy -c:s copy -y "%outdir%\%%~ni.mkv"
if not exist "%outdir%\%%~ni.mkv" (
ffmpeg -i "%%~i" -i "%outdir%\%%~ni.m4a" -map 0:v -map 1:a -c:v copy -c:a copy -y "%outdir%\%%~ni.mkv"
)
)2. 分兩次封裝。這真是浪費時間...for /r "%dir%" %%i in (*.mkv) do (
ffmpeg -i "%%~i" -vn-async 1 -ac 2 -f wav -y - | qaac --tvbr 80 --quality 2 --rate keep --ignorelength -o "%outdir%\%%~ni.m4a" -
ffmpeg -i "%%~i" -an -c:v copy -c:s copy -y "%outdir%\video.mkv"
ffmpeg -i "%outdir%\video.mkv" -i "%outdir%\%%~ni.m4a" -c copy -y "%outdir%\%%~ni.mkv"
)有沒有人知道如何直接從 FFmpeg 參數下手,不是這種拐彎抹角的做法
頁:
[1]