FFmpeg从入门到精通(一)

FFmpeg从入门到精通(一)FFmpeg介绍FFmpeg既是一种音视频编解码工具,也是一组音视频解码开发套件。作为编解码开发套件,它为开发者提供了丰富的音视频处理的调用接口。FFmpeg基本组成先看图,再看字。FFmpeg的封装模块AVFormatAVFormat中实现了目前多媒体领域中大多数媒体封装格式,包括封装和解封装,如:MP4,FLV等文件封装格式、HTTP,RTMP,HLS等网络协议封装格式。FFm…

大家好,又见面了,我是你们的朋友全栈君。

FFmpeg介绍

FFmpeg既是一种音视频编解码工具,也是一组音视频解码开发套件。作为编解码开发套件,它为开发者提供了丰富的音视频处理的调用接口。

FFmpeg基本组成

先看图,再看字。

FFmpeg基本组成

  1. FFmpeg的封装模块 AVFormat
    AVFormat中实现了目前多媒体领域中大多数媒体封装格式,包括封装和解封装,如:MP4,FLV等文件封装格式、HTTP,RTMP,HLS等网络协议封装格式。FFmpeg是否支持某种格式,取决于编译时是否包含该封装库。如果需要配置,可以在FFmpeg项目根目录下的config.h中查看宏定义。 0为关闭,1为打开。
  2. FFmpeg的编解码模块 AVCodec
    AVCodec中实现了目前多媒体领域绝大多数常用的编解码格式,既支持编码,也支持解码。AVCodec除了支持MPEG4、AAC、MJPEG等自带的媒体编解码格式之外,还支持第三方的编解码器,如H.264(AVC)编码,需要使用x264编码器;H.265(HEVC)编码,需要使用X265编码器;MP3(mp3lame)编码,需要使用libmp3lame编码器。如果希望增加自己的编码格式,或者硬件编解码,则需要在AVCodec中增加相应的编解码模块。
  3. FFmpeg的滤镜模块 AVFilter
    AVFilter库提供了一个通用的音频、视频、字幕等滤镜处理框架。在AVFilter中,滤镜框架可以有多个输入或多个输出。
  4. FFmpeg的多媒体设备交互 AVDevice
    使用这个库能够读取电脑(或者其它设备上)的多媒体设备的数据,或者输出数据到指定的多媒体设备上。
  5. FFmpeg的工具类 AVUtil
    AVUtil为FFmpeg的工具类,其重要组成部分有:AVLog日志输出、AVOption (AVClass)选项设置、AVDictionary键值对存储、ParseUtil字符串解析。
  6. FFmpeg的音频转换计算模块 swresample
    swresample模块提供了高级别的音频重采样API。例如它允许操作音频采样、音频通道布局转换与布局调整。
  7. FFmpeg的视频图像转换计算模块 swscale
    swscale模块提供了高级别的图像转换API,例如它允许进行图像缩放和像素格式转换,常见于将图像从1080p转换成720p或者480p等的缩放,或者将图像数据从YUV420P转换成YUYV,或者YUV转RGB等图像格式转换。

FFmpeg 编解码工具 ffmpeg

ffmpeg是FFmpeg源代码编译后生成一个可执行程序,其可以作为命令行工具使用。
ffmpeg命令简单应用:

./ffmpeg -i input.mp4 output.avi

这是一条简单的ffmpeg命令,ffmpeg通过-i参数将input.mp4作为输入源输入,然后进行转码与转封装操作,输出到output.avi中,这条命令主要做了如下工作:
1)获得输入源input.mp4
2)转码
3)输出文件output.avi
看似简单的两步主要的工作,其实远远不止是从后缀名为MP4的文件输出成后缀名为AVI的文件,因为在ffmpeg中,MP4与AVI是两种文件封装格式,并不是后缀名就可以决定的,例如上面的命令行同样可以写成:

./ffmpeg -i input.mp4 -f avi output.dat 

这条ffmpeg命令相当于前面的那条命令做了一些改变,加了一个“-f”进行约束,“-f”参数的工作非常重要,它制定了输出文件的容器格式,所以可以看到输出的文件为output.dat,文件后缀名为.dat,但是其主要工作依然与之前的指令相同。
ffmpeg的主要工作流程相对比较简单,具体如下:
1)解封装
2)解码
3)编码
4)封装
其中需要经过6个步骤,具体如下:
1)读取输入源
2)进行音视频的解封装
3)解码每一帧音视频数据
4)编码每一帧音视频数据
5)进行音视频的重新封装
6)输出到目标

FFmpeg的播放器 ffplay

FFmpeg不但可以提供转码、转封装等功能,同时还提供了播放器相关功能,使用FFmpeg的avformat与avcodec,可以播放各种媒体文件或者流。
ffplay是FFmpeg源代码编译后生成的另一个可执行程序,与ffmpeg在FFmpeg项目中充当的角色基本相同,可以作为测试工具进行使用,ffplay提供了音视频显示和播放相关的图像信息、音频的波形信息等。

FFmpeg的多媒体分析器 ffprobe

ffprode也是FFmpeg源码编译后生成的一个可执行程序。ffprode是一个非常强大的多媒体分析工具,可以从媒体文件或者媒体流中获得你想要了解的媒体信息,比如音频的参数、视频的参数、媒体容器的参数信息等。
例如它可以帮助分析某个媒体容器中的音频是什么编码格式、视频是什么编码格式,同时还可以得到媒体文件中媒体的总时长、复合码率等信息。使用ffprode可以分析媒体文件中每个包的长度、包的类型、帧的信息等。
下面举一个简单的例子,以对ffprobe有一个基本的概念,输入以下命令:

./ffprobe -show_streams input.mp4

根据输出内容,可以看到MP4文件内容中的流信息。流信息的相关内容是通过[STREAM][/STREAM]的方式展现出来的,在[STREAM][/STREAM]之间的信息即为该视频流信息。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153353.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 分配空间不足问题

    分配空间不足问题

  • 跟我学交换机配置(四)

    跟我学交换机配置(四)

  • PyCharm激活码永久有效PyCharm2021.1.2激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2021.1.2激活码教程-持续更新,一步到位PyCharm激活码永久有效2021.1.2激活码教程-Windows版永久激活-持续更新,Idea激活码2021.1.2成功激活

  • Python 中return用法及意义「建议收藏」

    Python 中return用法及意义「建议收藏」return意义其实说白了,函数就是个你招来的工人。你给他一些材料,告诉他怎么用这些材料拼装,然后他负责把拼装好的成品交给你。材料就是函数的参数,成品是函数的输出,而怎么拼装就是你写的函数体代码了。比如这段代码defworker(a,b,c):x=a+by=x*c这个工人worker在你的指导下,用abc三个材料,装配出了x和y两个成品。但是程…

    2022年10月28日
  • 菜鸟入门Docker[通俗易懂]

    菜鸟入门Docker[通俗易懂]菜鸟入门Docker说明一、什么是Docker(1)虚拟机和Linux容器二、Docker用途三、Docker安装(1)设置仓库(2)安装DockerEngine-Community(3)验证安装成功四、Docker启动与停止(1)启动docker(2)停止docker(3)重启docker五、Docker配置(1)将用户加入Docker用户组(2)配置daemon.json六、image…

  • dvwa通关攻略_猫里奥通关攻略

    dvwa通关攻略_猫里奥通关攻略简介:DVWA是一款基于PHP和mysql开发的web靶场练习平台,集成了常见的web漏洞如sql注入,xss,密码激活成功教程等常见漏洞。本教程将以DVWA为例,演示常见的web漏洞的利用和攻击。登录创建数据库(账号为admin,密码为password)登录后界面在dvwasecurity选项中,可以调整dvwa的难易程度,BruteForce(暴力激活成功教程)BruteForce即为暴力激活成功教程,通过枚举获取管理员的账号和密码,在实际的操作中,一般用来激活成功教程后台管理系统的登录。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号