当前位置: 游戏平台 > 互联网科技 > 正文

macOS 下 FFmpeg 视频转码入门及进阶使用教程

时间:2020-04-28 11:25来源:互联网科技
原版的书文链接: FFmpeg使用手册 - FFmpeg 的为主组成 1 FFmpeg 的主导组成 FFmpeg的中坚构成包罗Format、Codec、Filter、Devices、Utils等,布局如图: AvFormats:首要为媒体文件的封装格式,也能够称

原版的书文链接:

FFmpeg使用手册 - FFmpeg 的为主组成

1 FFmpeg 的主导组成
FFmpeg 的中坚构成包罗Format、Codec、Filter、Devices、Utils等,布局如图:
图片 1
AvFormats: 首要为媒体文件的封装格式,也能够称之为多媒体编码数据的容器,蕴含了节奏数据,摄像数据,字幕数据等等的容器;
AvCodecs:首要为媒体文件容器内的现实性的数目对应的滑坡方式,比如音频的aac压缩数量,音频的speex压缩数量,摄像h264精减数量等,或ASS字幕数据等;
AvFilters:首要为媒体的韵律数据,视频数据开展渲染,举个例子四个摄像文件录制数据前程与背景进行叠合、透明管理、音频重采样、音频合併等拍卖;
AvDevices:主要为媒体的播放输出设备,媒体的搜聚设备,比方音频搜聚设备,音频输出设备,录像的搜集设备,录像的输出设备等;
Utils:重要为FFmpeg中的AVFormats,AVCodecs,AVFilters等所用到的公用的接口;
Swscale: 首要为FFmpeg中做缩放,rgb转yuv,混色总计等用的接口。

1.1 FFmpeg 的包裹模块avformat
libavformat中落实了当前多媒体领域中的差非常的少具备封装格式,能够打包,能够解封装,遵照必要不一,所扶植的也迥然分歧,ffmpeg能无法扶持一种封装格式的录像的卷入与解封装,完全在于这么些库,举个例子mp5、flv、mkv等容器的包装与解封装;又恐怕RTMP、RTSP、TCP、UDP等协商的卷入与解封装;关于封装与解封装的操作,对CPU的消耗不会特地严重,因为包装与解封装不关乎到复杂的计量,更加多的是I/O,固然希望扩充本人定制的封装格式的话,需求在libavformat中加进和睦的照料的format模块。通过代码的公文构造得以看得出来

1.2 FFmpeg 的编解码模块libavcodec
libavcodec中落到实处了当前多媒体领域差不离全体的编解码格式,能够编码,能够解码,可是有一点点编码须求采纳第三方的编码器,举个例子H.264(AVC)编码须求使用x264编码器,H.265(HEVC)编码须要使用x265编码器,DVD(mp4lame)编码必要利用libDVDlame编码器等编码器,ffmpeg本人还要也协助三种编码格式,比方mpeg4、aac、mjpeg等编码,若是期待扩充和睦的编码格式,大概硬件编解码,要求在libavcodec中加进自身的codec模块,关于越多libavcode相关的音讯以至使用音信将会在前边章节举办详尽的介绍。

1.3 FFmpeg 的万金油libavfilter
Libavfilter 库提供了一个通用的 音频 / 录制滤镜框架,管理局地滤镜相关的操作。在 libavfilter中,滤镜框架能够有多少个输入和几个出口。为了证实的各类存在的场景,我们参照他事他说加以考查一下底下这几个filtergraph例子:
图片 2
图中那么些事例中的filtergraph讲输入的录制切割成了两部分散,一部分散抛给crop与vclip进行操作,另一有的有限协助原样,当crop与vflip操作实现后,将流合併到原有的overlay中,并显示在最下边一层,输出新的录像,对应的命令行如下:

ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT 

上边看一下实际的履生势况,用来阐明该命令的主旋律:
图片 3
运行后生成的摄像结果将是录像的上半片段镜像到底层大意上的输出摄像;下边详细说贝因美(Beingmate卡塔尔国下平整:
1.平等的Filter线性链由逗号分隔
2.不一样的Filter线性链之间用分号分隔
在图示例中,crop与vflip使用的是同三个Filter线性链,split和overlay使用的是其余多个线性链,线性链接入到另叁个线性链相会处时是通过方括号’[]’括起来的价签实行标识的。在此个事例中,七个流管理后是经过[main]与[tmp]拓展关联系货币的比率合的。
split filter将分开后的摄像流的第二有的分配给滤镜,打上标签[tmp],将该部分流通过crop filter实行拍卖,然后进行纵坐标沟通操作,打上标签[flip],然后将main与flip实行统一,flip标签的录制流彰显的时候从摄像的右臂最中间的职位上马显示,就出现了镜像效果。
能够相比一下运行的上下效果:
先是代表雷公山施加老实的请安:bbs.chinaffmpeg.com 齐天大圣
图片 4

1.4 FFmpeg 的录制图像调换总括模块libswscale
FFmpeg 的libswscale 模块提供了高端其他图像调换API接口。特别是,它同意三个人展览开图像缩放和像素格式转变。平淡无奇于将图像从1080p调换来720p照旧480p等缩放,只怕将图像数据从yuv420p转变到yuyv,恐怕yuv转rgb等图像格式转换。

1.5 FFmpeg 的节拍转变总计模块libresample
FFmpeg 的libresample 模块提供了高等第的音频重采样API接口。极其是,它同意三个实施节奏采集样板、 音频通道布局 rematrixing 和改动的音频格式和包裹布局

1.6 FFmpeg 的编解码工具ffmpeg
关于ffmpeg的介绍,能够在英特网搜寻到超多,本节首要介绍实战,通超过实际战对ffmpeg实行掌握会越来越深远,上边看一个事例:
ffmpeg -i input.mp4 output.avi
推行进程输出:
图片 5
那是一条最简易的ffmpeg命令,能够阅览,ffmpeg通过-i参数将input.DVD作为输入源输入,然后举办了转码与转封装操作,输出到output.avi中。那条命令最重大做了之类工作:
1.到手输入源input.DVD
2.输出文件output.avi
恍如轻易的两步关键的干活,其实远远不唯有是从后缀名称叫mp3的文本输出后缀名字为avi的文本,因为在ffmpeg中,mp5与avi是二种流媒体魄式,并不是后缀名所能够垄断(monopoly卡塔尔(قطر‎的,比方地点上的命令行同样能够那样写:
ffmpeg -i input.mp4 -f avi output.dat
施行进度输出:
图片 6
这条ffmpeg命令相对前边的那条命令做了有的改成,加了二个“-f”举办封锁,“-f”参数的做事相当主要,它拟定了出口的文件的容器格式,所以可以见到输出的文本为output.dat,文件后缀为.dat,可是其首要办事依旧与前边的通令相通。
浅析八个图中的Output #0部分,能够看出都是avi,只是输出的文本名分裂,其余内容均一致。
ffmpeg的办事重视流程也相对比较简单:
1.解复用(Demuxing)
2.解码(Decoding)
3.编码(Encoding)
4.复用(Muxing)

其间供给通过5个步骤:
1.读取输入源
2.读取编码的数据包
3.解码每一帧数据
4.输出每一帧编码
5.输出到对象
全体育专科学校门的学问流程与步骤能够经过流程图绘制出来:
图片 7
据说图中的转码专门的学问流程能够看见,首先ffmpeg读取输入源,然后经过德姆uxer将音录制包分解开,那一个动作通过调用libavformat中的接口就能够兑现,接下去通过Decoder举办解码,将音录制通过Decoder解包成为YVU或许PCM那样的多寡,那几个Decoer通过libavcodec中的接口就能够兑现,然后将相应的数量通过Encoder进行编码,编码能够因而libavcodec中的接口实行落到实处,接下去将编码后的音录像数据包通过Muxer进行打包,Muxer封装通过libavformat中的接口就能够兑现,输出成为输出流。

1.7 FFmpeg的播放器ffplay
FFmpeg不但能够提供转码转封装等职能,同时还提供了播放器相关的功用,使用FFmpeg的avformat与avcodec,可以播放各个媒体文件大概流。假诺想要使用ffplay,系统率先须求有三个SDL库来开展ffplay的根基支撑。
ffplay与ffmpeg在FFmpeg项目中担纲的剧中人物基本雷同,重要为德姆o与测量检验使用的工具,使用ffplay能够看出一些音录像相关的图像消息,音频的波浪消息等。

1.8 FFmpeg的多媒体剖判器ffprobe
FFmpeg项目中的ffprobe是二个要命强盛的多媒体分析工具,能够从媒体文件也许媒体流中取获得您想要明白到的传播媒介音讯,比如音频的参数,录像的参数,媒体容器的参数消息等。
比方说解析有些媒体容器中的音频是什么样编码格式,摄疑似怎么样编码格式,同不时间还是能够拿走媒体文件中媒体的总时间长度,复合码率等音讯。
接纳ffprobe还足以深入分析媒体文件中的各种包的长度,包的花色,帧的消息等。上边举三个例证来看一下,对ffprobe会有叁个主题的概念:
图片 8
据悉图中得以看来,使用ffprobe能够查阅到DVD文件容器中的流的新闻,富含了三个录像流,由于该公文中唯有摄像流,流相关的音信经过[STREAM][/STREAM]的办法表现出来,在[STREAM]与[/STREAM]里面包车型地铁新闻为该mp3文件的录制流消息。当录制文件容器中隐含音频流与录像流大概越来越多路流时,会透过[STREAM]与[/STREAM]张开五个流的相间,分割后区分流的目录音信运用的是index来进行区分。

- FFmpeg 的基本组成 1 FFmpeg 的基本构成 FFmpeg 的着力构成包蕴Format、Codec、Filter、Devices、Utils等,构造如图: AvFormats: 首要为媒...

到现在较为广阔的录制封装格式有 VCD 和 mkv 等, 内部的录像编码格式从早几年盛行的 H.264/x264 逐步开首向新一代的 HEVC/x265(High Efficiency Video Coding 高效录像编码)过渡,而广大的旋律编码格式无非 AC3、DTS 也许 AAC 等。无论是依附带有 GUI 的编码软件,依然选取命令行,FFmpeg 是无比广泛使用的工具,理论上 FFmpeg 帮衬各样平台,富含Windows、macOS、iOS 以至 Android 等,这里只介绍在 macOS 下的选择。通过轻巧的一声令下,你能够大约明白 FFmpeg 在录像调换上的有力之处,录像编码部分也集中在 x264、x265,以至如何幸免macOS High Sierra 和 iOS 11 能够准确识别并转移缩略图的 HEVC 10bit 录像。小说最终,也会用八个较为复杂的事例,应用 -filter_complex 实行录像帧率的插值运算、嵌入 pgs 图形字幕,以至最终输出 HEVC 编码进行表明。

安装

假定有看过自个儿原先小说的敌人,可能会小心到应用 Homebrew 编写翻译 mpv 的二个重大重视正是 FFmpeg。可是,若是将其看作录像转码,暗许编写翻译的 FFmpeg 会贫乏一部分组件,因而这里可能须求重新安装 FFmpeg。以本身个人编写翻译版本为例,使用 --HEAD 来合作最新的 mpv,在 Terminal 中输入如下命令:

brew install ffmpeg --HEAD --with-fdk-aac --with-sdl2 --with-freetype --with-libass --with-libbluray --with-libvorbis --with-libvpx --with-opus --with-webp --with-x265

伺机安装完结就能够。

编辑:互联网科技 本文来源:macOS 下 FFmpeg 视频转码入门及进阶使用教程

关键词: