ffmpeg处理字幕_ffmpeg 去掉字幕-程序员宅基地

技术标签: ass  ffmpeg运用  字幕  ffmpeg命令  mkv字幕  

ffmpeg处理字幕

ffmpeg加载font

以ass为例,第一次用ffmpeg将ass字幕加到视频里面的时候报下面的错误:

Fontconfig error: Cannot load default config file

[Parsed_ass_0 @ 00000000042c33c0] No usable fontconfig configuration file found, using fallback.

Fontconfig error: Cannot load default config file

[Parsed_ass_0 @ 00000000042c33c0] Added subtitle file: ‘subs.ass’ (3 styles, 68 events)

解决办法参考:

https://superuser.com/questions/794014/ffmpeg-ass-filter-not-working

http://www.yaosansi.com/post/ffmpeg-burn-subtitles-into-video/

也就是要配置一下fonts.conf。

windows下

增加环境变量:

export FC_CONFIG_DIR=$(pwd)/conf

export FONTCONFIG_FILE=$(pwd)/conf/fonts.conf

export FONTCONFIG_PATH=$(pwd)/conf

export

VS2013调试设置环境变量:

这里写图片描述

ffmpeg.exe所在的目录ffmpeg-3.3\msvc\MSVC_ffmpeg-3.0\Debug,下面新增conf目录,config目录下面放fonts.conf,fonts.conf内容如下:

<?xml version="1.0"?>
<fontconfig>

<dir>C:\WINDOWS\Fonts</dir>

<match target="pattern">
<test qual="any" name="family"><string>mono</string></test>
<edit name="family" mode="assign"><string>monospace</string></edit>
</match>

<match target="pattern">
<test qual="all" name="family" compare="not_eq"><string>sans-serif</string></test>
<test qual="all" name="family" compare="not_eq"><string>serif</string></test>
<test qual="all" name="family" compare="not_eq"><string>monospace</string></test>
<edit name="family" mode="append_last"><string>sans-serif</string></edit>
</match>

<alias>
<family>Times</family>
<prefer><family>Times New Roman</family></prefer>
<default><family>serif</family></default>
</alias>
<alias>
<family>Helvetica</family>
<prefer><family>Arial</family></prefer>
<default><family>sans</family></default>
</alias>
<alias>
<family>Courier</family>
<prefer><family>Courier New</family></prefer>
<default><family>monospace</family></default>
</alias>
<alias>
<family>serif</family>
<prefer><family>Times New Roman</family></prefer>
</alias>
<alias>
<family>sans</family>
<prefer><family>Arial</family></prefer>
</alias>
<alias>
<family>monospace</family>
<prefer><family>Andale Mono</family></prefer>
</alias>
<match target="pattern">
<test name="family" compare="eq">
<string>Courier New</string>
</test>
<edit name="family" mode="prepend">
<string>monospace</string>
</edit>
</match>
<match target="pattern">
<test name="family" compare="eq">
<string>Courier</string>
</test>
<edit name="family" mode="prepend">
<string>monospace</string>
</edit>
</match>

</fontconfig>

字幕嵌入视频

下面的命令可以将字幕合成到视频里面,成为硬字幕,不是放到mkv容器里面,所以需要重新编码:

ffmpeg -ss 00:01:15 -i "input.mkv" -vf ass=" input.ass" -t 00:02:00 -map 0:0 -acodec copy   " output.mkv"

字幕放入mkv容器

片源input.mkv,字幕input.ass。原始片源有mkv内嵌字幕,ffmpeg没有找到参数来去掉mkv内嵌的字幕,可以用MKVToolNix GUI来去掉(https://mkvtoolnix.download/index.html)。MKVToolNix GUI版本12.0.0,其64位版本在win7下有问题,报mkvmerge启动不了,32位的可以在win7下运行。
这里写图片描述

选择混流,打开input.mkv后,不要勾选SubRip/SRT,然后单击“开始混流”按钮,处理完后的码流就没有内嵌字幕了。

libass好像只支持UTF-8编码的字幕,libass/ass.c里面的process_text函数,只处理了0xEFBBBF这个BOM前缀:

while (1) {

            if ((p == '\r') || (p == '\n'))

                ++p;

            else if (p[0] == '\xef' && p[1] == '\xbb' && p[2] == '\xbf')

                p += 3;         // U+FFFE (BOM)

            else

                break;

        }

BOM前缀编码:

Byte-order mark Description

EF BB BF UTF-8

FF FE UTF-16 aka UCS-2, little endian

FE FF UTF-16 aka UCS-2, big endian

00 00 FF FE UTF-32 aka UCS-4, little endian.

00 00 FE FF UTF-32 aka UCS-4, big-endian.

所以非UTF-8编码的字幕,需要用aegisub32.exe转换一下,打开字幕后,菜单->文件->导出字幕,在下面的对话框中的“文字编码”选择UTF-8,点导出就可以保存成UTF-8编码的字幕:
这里写图片描述

ffmpeg命令合成mkv:

ffmpeg -i input.mkv -i input.ass -c copy output.mkv

不能用-map参数,-map参数会重新编码并将字幕嵌入到视频上面,成为硬字幕。

将上面的命令中输出文件改成mp4后缀,不能将字幕放入mp4容器,有可能mp4只支持苹果的MOV text。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013601132/article/details/81229408

智能推荐

React Reactjs 环境搭建 新手入门 npm yarn_reactjs对应npm-程序员宅基地

文章浏览阅读436次。界面打算将silverlight 的前端界面更新成React1.下载:https://nodejs.org/en/2.下载了10.16.3 LTS (喜欢下载相对稳定的版本)3.安装4.检查是否安装成功了(默认步骤npm也一起装好的,安装cnpm在创建项目的时候可能会创建失败,所以只装了npm)如果环境变量没有就新增这个环境变量到PathAppData..._reactjs对应npm

javascript性能优化-repaint和reflow_请正确理解 repaint 和 reflow-程序员宅基地

文章浏览阅读294次。repaint(重绘) ,repaint发生更改时,元素的外观被改变,且在没有改变布局的情况下发生,如改变outline,visibility,background color,不会影响到dom结构渲染。reflow(渲染),与repaint区别就是他会影响到dom的结构渲染,同时他会触发repaint,他会改变他本身与所有父辈元素(祖先),这种开销是非常昂贵的,导致性能下降是必然的,页面元素_请正确理解 repaint 和 reflow

ATF/Installing-程序员宅基地

文章浏览阅读97次。想在Eclipse中开发dojo应用真不容易,在网上找了很多资料,才知道,原来需要在Eclipse中安装ATF这个插件,安装过程如下:Following page describes how to install Ajax Tools Framework.Note:These steps do not currently work on 64-bit version of..._atf开发包

盘点Linux下的开源云平台&&云存储服务_linux云计算项目类型-程序员宅基地

文章浏览阅读2w次。15个您可能不知道的开源云平台桉树云服务环境 Eucalyptus开源协议及语言GPLJava C/C++官方网站http://www.eucalyptus.com/participate介绍Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) 是一种开源的软件_linux云计算项目类型

OceanBase | OBCA考试经验总结-程序员宅基地

文章浏览阅读2w次,点赞17次,收藏130次。在整理完上一篇“一文了解OBCA认证内容”之后,最近有两位小伙伴私信我OBCA的备考经验,结合本次考试的情况整理此篇内容。OceanBase近期开放了12场初级认证,考试形式为钉钉在线考试,考题类型为单选、多选和判断,标价为600人民币的考试现阶段免费报名,目前12个场次考试名额已满,可见大家对OB的关注度。我在10月26号参加并通过的考试(结束即出结果),下面是整理了关于考试的一些疑问。备考资料首先说资料,发现好多小伙伴都找不到备考的材料,考前需要看哪些资料? 视频资料 ..._obca

基于单片机的智能家居环境监控系统的设计_家居环境监测系统毕业设计-程序员宅基地

文章浏览阅读2.9w次,点赞49次,收藏597次。本设计完成一个可以监测温湿度、有害气体以及非法入侵的智能家居监控系统,包括主控模块、传感器模块、显示模块、报警驱动模块等。_家居环境监测系统毕业设计

随便推点

历届试题 青蛙跳杯子 bfs_历届试题 青蛙跳杯子bfs-程序员宅基地

文章浏览阅读329次。题目链接 蓝桥杯---历届真题 题解问题描述  X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。  X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。  如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。  *WWWBBB  其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子。  X..._历届试题 青蛙跳杯子bfs

【笔记 - linux基础入门 01】基本概念及操作_linux下的lurker-程序员宅基地

文章浏览阅读156次。Shell:Shell 是指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下的 command(命令行)和后来的 cmd.exe重要的快捷键:[Tab] :使用Tab键来进行补全命令,补全目录、补全命令参数[Ctrl+c]:Ctrl+c键来强行终止当前程序(你可以放心它并不会使终端退出)[Ctrl+d]:键盘输入结束或退出终端[Ctrl+s]:暂停当前程序..._linux下的lurker

ubuntu下vscode配合verilator实现语法纠错_vscode verilator-程序员宅基地

文章浏览阅读1.7k次。  前面有一篇文章介绍了如何在windows系统下利用modelsim在vscode中实现语法纠错,本文介绍如何在ubuntu系统下利用verilator在vscode下实现语法纠错。安装vscode安装vscode-verilog插件安装verilator配置vscode..._vscode verilator

电脑命令大全_电脑命令代码大全-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏16次。开始菜单中的“运行”是通向程序的快捷途径,输入特定的命令后,即可快速的打开Windows的大部分程序,熟练的运用它,将给我们的操作带来诸多便捷。winver 检查Windows版本wmimgmt.msc 打开Windows管理体系结构(wmi)wupdmgr Windows更新程序wscript Windows脚本宿主设置write 写字板winmsd 系统信息wiaacmgr 扫描..._电脑命令代码大全

初学者的Java开发环境搭建:JDK的安装、Path环境变量的配置_安装jdk并配置path环境变量-程序员宅基地

文章浏览阅读8k次。帮助初学者进行Java开发环境搭建,包括:JDK的安装、Path环境变量的配置_安装jdk并配置path环境变量

数据集下载-程序员宅基地

文章浏览阅读1k次。国内数据:链接:http://pan.baidu.com/s/1i5nyjBn 密码:26bm好玩的数据集:链接:http://pan.baidu.com/s/1bSDIEi 密码:25zr微软数据:链接:http://pan.baidu.com/s/1bpmo6uV 密码:286q微博数据集:链接:http://pan.baidu.com/s/1jHCOwCI 密码:x58f遥感影像库:..._数据集下载