蒐集了不少4K的原檔,但是機上盒播不了,所以有轉檔的需求
ffmpeg -i input.mp4 -vf “scale=’min(1920,iw)’:-2” -c:v libx265 -crf 28 -c:a copy -c:s mov_text -vf subtitles=subtitles.srt output.mp4
可是怎麼也執行不起來,因為字幕,我是用有特效的.ass格式,輸入檔也不是mp4格式,而是MKV格式
給出的指令是
ffmpeg -i input.mp4 -vf “scale=’min(1920,iw)’:-2” -c:v libx265 -crf 28 -c:a copy -c:s mov_text -vf subtitles=subtitles.ass output.mp4
執行時出現錯誤
[sost#0:2/mov_text @ 000001d9858ee2c0] Subtitle encoding currently only possible from text to text or bitmap to bitmap
Error opening output file Inception.2010.mp4.
Error opening output files: Invalid argument
ChatGPT 給出2種解法,我用方法1,不用方法2,方法2字幕要轉檔。
該錯誤是由於 mov_text 字幕格式無法從 .ass 字幕文件轉換而引起的。mov_text 只支持基於文本的字幕(如 .srt)或基於圖片的字幕,而 .ass 字幕是一種豐富格式的字幕,無法直接轉換為 mov_text。
要解決這個問題,你有兩個選擇:
1. 將 .ass 字幕燒入到影片中(硬字幕)
這種方式會將字幕直接嵌入到影片畫面中,字幕無法被關閉。你可以繼續使用 ass 文件,這樣可以保留 .ass 的豐富格式(如字體、樣式等)。
修改命令如下:
ffmpeg -i input.mkv -vf “scale=’min(1920,iw)’:-2,subtitles=’input.ass'” -c:v libx265 -crf 28 -c:a copy output.mp4
這樣 ffmpeg 會將 .ass 字幕燒入影片,並同時進行影片轉碼。
2. 將 .ass 轉換為 .srt 字幕(軟字幕)
如果你想保留軟字幕(可以打開或關閉),並且你的目標是 mov_text,你需要先將 .ass 字幕轉換為 .srt 格式。
你可以使用以下工具將 .ass 字幕轉換為 .srt 字幕:
使用字幕編輯工具如 Aegisub。
使用 ffmpeg 自身(需要配合其他軟體如 ffsubsync)來處理。
轉換後,使用以下命令進行轉碼:
指令
ffmpeg -i input.mkv -vf “scale=’min(1920,iw)’:-2” -c:v libx265 -crf 28 -c:a copy -c:s mov_text -vf “subtitles=’input.srt'” output.mp4
這樣,你可以保留可關閉的 .srt 字幕。