天天看點

ffmpeg合并mkv視訊檔案和ass字幕檔案背景步驟感受

背景

最近想用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