Subtitle berbasis teks
ffmpeg memiliki subtitles
filter yang dapat membakar file SRT ke aliran video. Anda perlu dikompilasi dengan ffmpeg --enable-libass
meskipun. Saya tidak berpikir Libav memiliki sesuatu yang serupa, setidaknya melihat ke atas filter yang tersedia .
Pertama-tama Anda perlu mengekstraksi subtitle. -map 0:s:0
memilih aliran subtitle pertama untuk output, dan -c:s:0
memilih codec untuk itu - hanya untuk memastikan itu benar-benar SRT.
ffmpeg -i input.mkv -an -vn -map 0:s:0 -c:s:0 srt subtitles.srt
Kemudian, bakar mereka.
ffmpeg -i input.mkv -map 0:0 -map 0:1 -target pal-dvd -aspect 16:9 -q:v 1 \
-c:a mp2 -ac 2 -b:a 128k -filter:v subtitles=subtitles.srt output.mpg
catatan:
Perintah di atas menganggap bahwa stream 0:0
dan 0:1
di input Anda masing-masing adalah aliran video dan audio. Jika Anda hanya ingin mencegah subtitle agar tidak dimasukkan dalam file output, maka Anda juga dapat menambahkan -sn
untuk menonaktifkannya sama sekali.
Anda harus berubah -ab
untuk -b:a
, karena yang pertama adalah opsi yang tidak ada untuk ffmpeg.
Subtitle berbasis gambar
Jika input Anda memiliki subtitle berbasis gambar seperti HDMV PG (sepertinya MakeMKV membuatnya, dan alat lain tidak dapat mengekstraknya), Anda dapat mencoba menggunakan filter overlay untuk membakarnya:
ffmpeg -i input.mkv -filter_complex "[0:v][0:s]overlay[v]" -map [v] -map 0:a \
-target pal-dvd -aspect 16:9 -q:v 1 -c:a mp2 -ac 2 -b:a 128k output.mpg
Ini juga dijelaskan pada FFmpeg Wiki .
Jika subtitle Anda memiliki dimensi yang berbeda dari film aslinya (mis. Karena streaming video diperkecil tetapi subtitle tidak), Anda dapat mencoba itu -canvas_size
pilihan untuk mengatur ukuran.
"[0:s]scale=-1:720[subs];[0:v][subs]overlay[v]"
atau sesuatu. Saya tidak bisa mengujinya sekarang, tetapi sesuatu seperti itu seharusnya berhasil.