ffmpeg-01-Subtitle

 

1. ffmpeg简介
2. 摘录文档
	2.1 过滤 Filtering
		2.1.1 简单滤镜
		2.1.2 复杂的滤镜
		2.1.3 简单过滤与复杂过滤
	2.2 Stream 流复制
	2.3 对比图
3. 提取字幕
4. 如何将字幕刻录到视频中
5. 如何将其他FFmpeg支持的字幕转换为ASS格式
6. 如何将YouTube SBV转换为SRT
7. 获取可用信息
8. 从VOB提取字幕到SRT的工具

 

1. ffmpeg简介

http://www.ffmpeg.org/
完整的跨平台解决方案,用于记录,转换和流传输音频和视频。开放源代码:
$ git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
https://github.com/FFmpeg/FFmpeg

http://www.ffmpeg.org/about.html

  • 功能完整: FFmpeg是领先的多媒体框架,能够解码(decode),编码(encode),转码(transcode),复用(mux),解复用(demux),流(stream),过滤(filter)和播放(play)人类和机器创建的几乎所有内容。
  • 几乎只是所有格式: FFmpeg支持最模糊的古代格式,直至最前沿。无论它们是由某些标准委员会,社区还是公司设计的。
  • 跨平台高度可移植性: FFmpeg可以在各种构建环境,机器体系结构和配置下,跨Linux,Mac OS X,Microsoft Windows,BSD,Solaris等编译,运行并通过我们的测试基础架构 FATE。
  • 每日更新的文档: 各种在线每晚更新一次,并且对应于最新的FFmpeg版本。http://www.ffmpeg.org/documentation.html

术语:

  • 容器(Container) 容器就是一种文件格式,比如flv,mkv等。包含下面5种流以及文件头信息。
  • 流(Stream) 是一种视频数据信息的传输方式,5种流:音频,视频,字幕,附件,数据。
  • 帧(Frame) 帧代表一幅静止的图像,分为I帧,P帧,B帧。

FFmpeg工具

  • ffmpeg: 是可转换音频或视频格式的命令行工具。它还可以从各种硬件和软件源(例如电视捕获卡)实时捕获和编码。
  • ffplay: 一个基于SDL和FFmpeg库的简单媒体播放器
  • ffprobe: 一个简单的多媒体流分析仪。用于显示媒体信息(文本,CSV,XML,JSON)的命令行工具,另请参见Mediainfo。

FFmpeg开发人员库

  • libavutil: 是一个包含简化程序功能的库,其中包括随机数生成器,数据结构,数学例程,核心多媒体实用程序等。
  • libavcodec: 是一个库,其中包含音频/视频编解码器的解码器和编码器。
  • libavformat: 是一个包含用于多媒体容器格式的解复用器和复用器的库。
  • libavdevice: 是一个包含输入和输出设备的库,用于从许多常见的多媒体输入/输出软件框架(包括Video4Linux,Video4Linux2,VfW和ALSA)中获取和呈现。
  • libavfilter: 是一个包含媒体过滤器的库。
  • libswscale: 是一个执行高度优化的图像缩放和颜色空间/像素格式转换操作的库。
  • libswresample: 是一个执行高度优化的音频重采样,重矩阵化和样本格式转换操作的库。

2. 摘录文档

http://www.ffmpeg.org/ffmpeg.html
ffmpeg下图描述了每个输出的转码过程: 2.3 对比图

  • Demuxer 解复用器(file → packets): ffmpeg调用libavformat库(包含解复用器)读取[输入文件]并从中获取[包含编码数据的数据包]。
  • Decoder 解码器(packets → frames): 产生[未压缩的帧](原始视频/PCM音频/...)。可以通过 过滤 进一步处理。
  • Encoder 编码器(frames → packets): 对其进行编码并输出[编码后的数据包]。
  • Muxer 复用器(packets → file): 将[编码的数据包]写入[输出文件]。

2.1 过滤 Filtering

编码之前,ffmpeg可以使用libavfilter库中的过滤器处理原始音频和视频帧。几个链接的过滤器形成一个过滤器图。
ffmpeg区分两种类型的过滤器图:简单过滤器和复杂过滤器。

2.1.1 简单滤镜

简单的过滤器图是那些只有一个输入和输出,并且都是相同类型的过滤器。
在输出的转码过程图中,可以通过在解码和编码之间简单插入一个附加步骤来表示它们: 2.3 对比图

使用每个流配置简单的过滤器图 -filter 选项(与 -vf 和 -af分别为视频和音频的别名)。见: 2.1.3 简单过滤与复杂过滤

请注意,某些过滤器会更改框架属性,但不会更改框架内容。例如,fps上面示例中的 过滤器更改了帧数,但没有触及帧内容。另一个示例是setpts过滤器,该过滤器仅设置时间戳,否则不传递帧。

2.1.2 复杂的滤镜

复杂的过滤器图不能简单地描述为应用于一个流的线性处理链。例如,当图形具有多个输入和/或输出时,或者输出流类型与输入不同时,就是这种情况。见: 3.1.3 简单过滤与复杂过滤

复杂的滤镜配置为 -filter_complex选项。请注意,此选项是全局选项,因为复杂的滤镜本质上不能与单个流或文件明确关联。
 -lavfi 选项等效于 -filter_complex.

复杂overlay过滤器图的一个简单例子是过滤器,它具有两个视频输入和一个视频输出,其中一个视频叠加在另一个视频之上。它的音频副本是amix过滤器。

2.1.3 简单过滤与复杂过滤

input Simple filtergraph output
File deinterlace
逐行扫描 →
scale
比例 →
File
   <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值