澳门银河网上官方赌场_老品牌值得信赖

ITKeyword,专注技术干货聚合推荐

注册 | 登录

FFmpeg命令行工具系列二---转码流程及过滤器

GAMEloft9 分享于

2020腾讯云双十一活动,全年最低!!!(领取3500元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1073

【阿里云】双十一活动,全年抄底价,限时3天!(老用户也有),
入口地址https://www.aliyun.com/1111/home

推荐:FFmpeg命令行工具系列四---video参数

一、概述 ? ? ? ? 上一章简单介绍了一些通用的参数,这一章将重点讲解ffmpeg.exe工具的video相关的参数,video高级参数部分不会在此做讲解,可以参考官方文档:ht

一、概述

       在FFmpeg命令行工具系列一中,对FFmpeg的命令行工具FFmpeg.exe进行了简单的介绍,并举出了几个简单的例子。在这一章中,将进行一次详细的介绍,主要是对转码过程和过滤器进行介绍。

二、主要内容

ffmpeg转码的流程可以用下图进行说明:


ffmpeg调用libavformat库(该库包含解复用工具)来读取输入文件,并获取编过码的数据包。当有多个输入文件时,ffmpeg通过跟踪活动的输入流的最低的时间戳保证同步。编过码的数据包被传送给解码器(流复制不需要解码,见后文),解码器产生解码后的数据帧(raw 视频/PCM 音频/...),这些数据帧然后通过过滤器进行过滤。过滤之后,数据帧被传送给编码器进行编码,然后对编码后的数据包进行复用,写到输出文件中去。这就是转码的整个流程。

1.过滤

在编码之前,ffmpeg可以利用libavfilter库中的过滤器对数据帧进行过滤。几个链式的过滤器组成了一个过滤器图表(本人翻译水平不高,这句话不知道有没有更好的翻译,意思是一个filter graph包含多个线性操作的filter,它们按顺序一个一个起作用)。ffmpeg有两种类型的过滤器图表:简单过滤器和复杂过滤器。

1.1简单过滤器

在简单过滤器中,只包含一个输入和一个输出,并且输入输出是同一类型。在下面的处理过程中,仅仅是在解码和编码之间加上一个额外的过滤步骤。

简单过滤器由per-stream-filter参数(视频为-vf,音频为-af)配置。一个用于处理视频的简单过滤器大概是这个流程:

一些过滤器只改变数据帧的属性,并不改变数据帧的内容。例如:fps过滤器改变数据帧的个数,并不涉及数据帧的内容。另一个例子是setpts过滤器,它仅仅改变时间戳然后传递这些数据帧而已。

1.2复杂过滤器

复杂过滤器不是简单的将线性操作链应用于一个流(上面简单过滤器过程便是如此)。当有多个输入和输出时,或者输出类型和输入类型不一致时,可以用下面的图来展示复杂过滤器的处理流程:
 
复杂过滤器类型由-filter_complex参数配置。这个参数是全局的,因为复杂过滤器类型本身就不可能只和一个流或文件关联,这是由它的本质决定的。此外-lavfi参数和-filter_complex是等价的。

关于复杂过滤器类型一个常用例子是overlay过滤器,它有两个输入,一个输出,其中一个视频覆盖在另外一个上面:     

推荐:【FFMpeg视频开发与应用基础】一、使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑

《FFMpeg视频开发与应用基础——使用FFMpeg工具与SDK》视频教程已经在“CSDN学院”上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接

ffmpeg -i video_1.mkv -i video_2.3gp -filter_complex 'overlay' video_out.mp4

         音频中与此对应的是amix过滤器。

1.3流复制

流复制通过-codec参数选择的一个模式。它让ffmpeg忽略解码和编码环节,仅仅进行解复用和复用。它经常用于改变容器格式或者修改容器级别的元数据。

因为没有了解码和编码,所以流复制非常快,而且没有质量损失。然而,出于许多原因,流复制可能在某些场合下不能正常工作。在流复制中使用过滤器,显然也不可能,因为过滤器处理的是解码后的数据。

1.4选择流

默认情况下,ffmpeg对每种类型(视频,音频,字幕)仅包含一个输入流。当有多个时它选择“最好”的那个,这个"最好"基于以下标准:视频,这是最高的分辨率,音频,它有最多的通道,字幕,这是第一个字幕流。当存在多个"最好"的时候,则选择最低序号的那个。可以通过-vn/-an/-sn参数来禁用某些默认设置。如果要全部手工控制,请使用-map参数。


推荐:FFmpeg命令行工具系列六----使用ffmpeg.exe的一些例子

一、概述 ? ? ? ? 前面讲了很多基础性的知识,偶尔会有一些例子,但不多。这一章就专门讲解一些应用例子,对于不懂的参数,可以使用ffmpeg - 或者ffmpeg -help

一、概述 ? ? ? ?在FFmpeg命令行工具系列一中,对FFmpeg的命令行工具FFmpeg.exe进行了简单的介绍,并举出了几个简单的例子。在这一章中,将进行一次详细的介绍,主要是对转码过程和过滤器进行介

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。

澳门银河网上官方赌场