https://ffmpeg.org/
FFmpeg 是一個自由軟體,可以執行音訊和視訊多種格式的錄影、轉檔、串流功能,包含了 libavcodec ——這是一個用於多個專案中音訊和視訊的解碼器函式庫,以及 libavformat —— 一個音訊與視訊格式轉換函式庫。
以下是一堆雜七雜八收集來的用法(用來將帶字幕的 mkv 轉成 mp4)
ffmpeg -i sp06.mkv -vf subtitles=sp06.mkv -vcodec h264 -acodec aac -b:v 2M -b:a 256k out2.mp4
ffmpeg -i sp06.mkv -vcodec copy -acodec copy out3.mp4
ffmpeg -i sp06.mkv -vf subtitles=sp06.mkv -c:v libx264 -crf 20 -c:a aac out3.20.mp4
ffmpeg -i sp06.mkv -vf subtitles=sp06.mkv -c:v libx264 -q:v 0 out4.mp4
ffmpeg -i sp06.mkv -vf subtitles=sp06.mkv -c:v libx264 -crf 0 out4.crf.mp4
ffmpeg -i sp06.mkv -vf subtitles=sp06.mkv -c:v libx264 -q:v 0 -profile:v baseline out4.baseline.mp4
ffmpeg -i sp06.mkv -vf subtitles=sp06.mkv -vcodec h264 -acodec aac -profile:v baseline out5.mp4
ffmpeg -i sp06.mkv -vf subtitles=sp06.mkv -vcodec h264 -acodec aac -q:v 0 -profile:v baseline out5.q0.mp4
但是每次都要複製指令來執行好麻煩
所以弄了個批次黨可以接收檔案直接拖拉
但是卻在字幕處理上一直出現錯誤
試過很多種方式 都無效
包含將檔案短換成短檔名
加上 "' 等符號
都會出錯
最後的解法是將檔案複製成簡易名
然後進行處理
@echo off
set FILENAME1=%~n1%~x1
set FILENAME2=T:/cache/temp%~x1
copy "%FILENAME1%" "%FILENAME2%"
cd /D T:
cd "T:\cache"
"%~dp0/ffmpeg" -i temp%~x1 -vf subtitles=temp%~x1 -c:v libx264 -q:v 0 -profile:v baseline temp.mp4
call explorer "T:\cache"
pause