背景
最近想用airplay投影mkv視訊檔案到電視機上面播放,結果投影過去的視訊,沒有自動加載字幕。隻要選擇把ass字幕檔案合并到mkv視訊檔案裡面去。中途,還是使用mkvtoolnix進行mkv和ass檔案的合并,但是合并出來仍會出現上面的情況。最後,就考慮自己手動使用ffmpeg進行合并。
步驟
首先,準備你的mkv視訊檔案和ass字幕檔案,然後,确認自己的ffmpeg已經是最新版本,如下:
$ ffmpeg -version
ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-ffplay --enable-frei0r --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librtmp --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/2.3.0/include/openjpeg-2.3 --enable-nonfree
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
然後,進行mkv和ass檔案的合并:
# 廢棄用法:
# ffmpeg -i my.mkv -vf "ass=my.ass" my2.mkv
# 修改後的用法:
ffmpeg -i my.mkv -vf subtitles=my.ass my2.mkv
這裡的my.mkv就是自己視訊檔案,my.ass就是自己的字幕檔案。合成出來的檔案就是my2.mkv。等待一段時間,這裡可能需要花費一段時間,這主要和自身的硬體環境,和視訊檔案大小有關。
感受
如果ass字幕檔案對于ffmpeg不支援的話,可能需要在安裝ffmpeg的時候,需要明确指出對ass的支援。 ffmpeg真是一個處理各種音視訊利器,各種好用。之前就有談到過關于ffmpeg的文章:
- ffmpeg中合并音頻檔案
- ffmpeg将mp3轉m4a檔案
參考: HowToBurnSubtitlesIntoVideo 使用ffmpeg進行簡單的視訊編輯之 6. 字幕(subtitle)
版權聲明:本文為CSDN部落客「weixin_33910385」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_33910385/article/details/91772994