字幕分以下几种形式:

第一种是外挂字幕(软字幕),视频文件和字幕文件分离。当播放某视频文件时,会自动载入相同文件夹下同名的字幕文件,当然也可以用播放器(如:VLC media player)手动载入字幕(不要求字幕文件和视频文件同名并在相同文件夹下,可任意载入)。

第二种是将字幕封装到容器中,就是所谓的字幕流,和视频流、音频流同等地位。值得说明的是,并非所有的容器都支持字幕流,先进的 MKV 是支持的,MP4 目前我只知道支持苹果的 MOV text。

ffmpeg -i input.mkv -i subtitles.srt -c copy output.mkv

查看 output.mkv 的信息,已经包含了字幕流,但不知为何播放视频时仍然不能显示字幕。

从容器中提取字幕流,生成字幕文件(例子中生成的是 srt 格式的,可以任意生成所需的格式,改一下扩展名即可):

ffmpeg -i input.mkv output.srt

第三种是内嵌字幕(硬字幕),利用 video filter(subtitles、ass、甚至是 overlay)将字幕文件烧进视频流中,就像水印一样。

在使用 FFmpeg 的 subtitles filter 或 ass filter 时,可能会出现类似于下面这样的错误:

Fontconfig error: Cannot load default config file
[Parsed_subtitles_0 @ 0000000004b181c0] No usable fontconfig configuration file found, using fallback.
Fontconfig error: Cannot load default config file

无效的解决方法:

Fontconfig 是一个用来配置和自定义字体访问的库,在这里是为了让 ffmpeg 从系统中取用所需的字体。下载链接:http://www.freedesktop.org/software/fontconfig/release/。我下载的是 fontconfig-2.11.94.tar.gz。在存放 ffmpeg.exe 的文件夹内,新建一个命名为 fonts 的文件夹。把 fontconfig-2.11.94.tar.gz 解压后,找到 fonts.conf.in、fonts.dtd 和 conf.d ,并把它们复制到刚才新建的文件夹 fonts 中,最后把 fonts.conf.in 重命名为 fonts.conf 即可。

通过以上步骤,尽管不再出现前面的错误,但输出的视频仍然不能显示字幕。也许要先对 Fontconfig 进行编译才行(尽管 ffmpeg 不会用到生成的库),尝试用 MinGW+msys 编译了一下,没有搞定。

有效解决:

还是需要 fonts.conf 文件。下载地址:http://download.csdn.net/detail/u013699869/9074131。只要一步,将下载的压缩包解压到 ffmpeg.exe 所在的文件夹下即可。解决方案来源:https://ffmpeg.zeranoe.com/forum/viewtopic.php?f=7&t=2554。

利用 subtitles filter 为视频添加字幕(将字幕合成到视频流中,输出文件中不含字幕流):

ffmpeg -i input.mkv -vf subtitles=subtitles.srt output.mkv

将输入文件的第一个字幕流合成到视频流中:

ffmpeg -i input.mkv -vf subtitles=input.mkv output.mkv

将某容器第二个字幕流合成到另一个容器的视频流中输出:

ffmpeg -i input.mkv -vf subtitles=video.mkv:si=1 output.mkv

关于 subtitles filter 的详细用法: http://ffmpeg.org/ffmpeg-all.html#subtitles-1

ass filter 的用法和 subtitles filter 几乎一样,但它只用于 ASS(Advanced Substation Alpha)字幕文件,可以先进行字幕转换,再使用它:

ffmpeg -i subtitles.srt subtitles.ass
ffmpeg -i input.mkv -vf ass=subtitles.ass output.mkv

关于 ass filter 的说明:http://ffmpeg.org/ffmpeg-all.html#ass

FFmpeg 官方 wiki:HowToBurnSubtitlesIntoVideo

还可以用 overlay filter 来把字幕烧录进视频,比如把MKV格式转为MP4格式(mp4 也支持字幕流封装,但目前我仅知道支持苹果的 MOV text,所以一般都要把字幕烧到视频流中):

ffmpeg -i input.mkv -filter_complex [0:v][0:s]overlay[v] -map [v] -map 0:a output.mp4

Windows下使用ffmpeg为视频添加字幕相关推荐

  1. 安卓使用ffmpeg给视频添加字幕

    包含添加字幕能力的ffmpeg和相关so编译 需要下载的源码 https://github.com/tanersener/mobile-ffmpeg https://github.com/taners ...

  2. Mac OS中利用ffmpeg为视频添加字幕

    Mac系统下,利用ffmpeg加字幕 字幕类型 硬字幕,类似视频水印,作为视频的一部分内嵌了. 软字幕,封装字幕,也是内嵌到视频里,不过只是作为渲染,而且需要播放器支持才行. 外挂字幕,就是外部字幕文 ...

  3. ffmpeg 合并视频 添加字幕 bat命令

    首先将ffmpeg添加进系统环境变量 1.mp4转mkv for %%a in ("*.mp4") do ffmpeg -i %%~na.mp4 -vcodec copy -aco ...

  4. windows下使用ffmpeg进行视频转换和截图。

    author:fanfq(xiaoban) Email:fangqing.fan#gmail.com link:http://fanfq.iteye.com/admin/blogs/655569 ch ...

  5. python实现给视频添加字幕,并根据字幕添加语音

    文章目录 前言 一."pyttsx3"实现"文字到音频"的转换 二."pydub"处理音频 1.安装 2.测试 三."moviep ...

  6. ffmpeg给视频添加文本

    1. 给视频添加文本 给视频添加文本有两种通常做法,一种是使用字幕实现,一种是使用overlay滤镜实现.但下面是通过使用drawtext滤镜,更高级的做法实现. 格式:ffmpeg  -i  inp ...

  7. ffmpeg-给视频添加字幕(二十四)

    前言 在我们观看电影或者抖音等短视频平台的视频时一般都会出现字幕,有了字幕那视频的表现形式就更加丰富了,所以为一段视频添加字幕也是一个硬需求.本文的目的就是为一段视频添加字幕,了解如何添加字幕前先了解 ...

  8. 在Windows下编译FFmpeg详细说明

    在Windows下编译FFmpeg详细说明 MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 Mi ...

  9. WINDOWS 下编译 ffmpeg 源码总结

    WINDOWS 下编译 ffmpeg 源码,有两种方式:VC.GCC 1.VC 编译:   https://github.com/ShiftMediaProject/FFVS-Project-Gene ...

最新文章

  1. C++抽象基类和纯虚成员函数
  2. fixture.detectChange如何通过Angular zone执行其异步逻辑的
  3. 使用Rancher搭建K8S测试环境
  4. d3代码如何改造成update结构(恰当处理enter和exit)
  5. linux 查tls模块,TLSSLed · Kali Linux Tools Documents · 看云
  6. 网易云音乐被纳入港股通 3月7日起生效
  7. matlab18a,Matlab R2018a安装详解
  8. Autodesk Map 3D 2012 新功能介绍
  9. 《数学之美》—PageRank
  10. Unity3D笔记 愤怒的小鸟二 实现Play界面
  11. struts2 tag if NumberFormatException
  12. 关于如何取消萤石云视频加密
  13. psd格式图片保存自己需要的png图片
  14. html js css 简明教程,HTML+CSS+JavaScript网页制作简明教程
  15. 盲孔、埋孔、通孔、一阶HDI、二阶HDI概念
  16. rtx java_如何使用JAVAWEB集成RTX推送消息
  17. 握手定理(握手数之和为偶数)和相关2个推论
  18. 基于saber软件的无源RC滤波器仿真
  19. 安装完svn客户端后在bin目录中没有svn.exe文件
  20. 如果你会玩这4个自媒体运营工具,副业收入6000+很轻松

热门文章

  1. set 数据类型的应用场景
  2. 缓存-分布式锁-Redisson-信号量测试
  3. Filter_快速入门
  4. try_catch_异常处理的第二种方式,自己处理异常
  5. SpringBoot profile配置
  6. mysql 5.7 速度很快_MySQL5.7速度比MySQL5.6快3倍
  7. 一个分支强制替代另一个分支
  8. pytorch教程龙曲良46-55
  9. Python之在函数中使用列表作为默认参数
  10. Bootstrap手机网站开发案例