天天看点

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