快捷搜索:  汽车  科技

ffmpeg解码参数设置(FFMPEG视音频编解码零基础学习方法)

ffmpeg解码参数设置(FFMPEG视音频编解码零基础学习方法)【视频资源】C/C Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂事实上,FFMPEG的视音频编解码功能确实太强大了,几乎囊括了现存所有的视音频编码标准,因此只要做视音频开发,几乎离不开它。ffdshow,lav filters...使用FFMPEG作为内核的转码工具:ffmpeg,格式工厂...

0. 背景知识

本章主要介绍一下FFMPEG都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了说明:FFMPEG是非常重要的。

使用FFMPEG作为内核视频播放器:

Mplayer,ffplay,射手播放器,暴风影音,KMPlayer,QQ影音...

使用FFMPEG作为内核的Directshow Filter:

ffdshow,lav filters...

使用FFMPEG作为内核的转码工具:

ffmpeg,格式工厂...

事实上,FFMPEG的视音频编解码功能确实太强大了,几乎囊括了现存所有的视音频编码标准,因此只要做视音频开发,几乎离不开它。

1. ffmpeg程序的使用(ffmpeg.exe,ffplay.exe,ffprobe.exe)

【视频资源】C/C Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂

本文中第1 2章是FFmpeg编程最基础的内容。这部分的内容我在给大二同学代课的时候录制成了视频,有时间的话可以看一下

本章主要介绍一下ffmpeg工程包含的三个exe的使用方法。

ffmpeg的官方网站是:http://ffmpeg.org/

编译好的windows可用版本的下载地址(官网中可以连接到这个网站,和官方网站保持同步): http://ffmpeg.zeranoe.com/builds/

该网站中的FFMPEG分为3个版本:Static,Shared,Dev。

前两个版本可以直接在命令行中使用,他们的区别在于:Static里面只有3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe,每个exe的体积都很大,相关的Dll已经被编译到exe里面去了。Shared里面除了3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe之外,还有一些Dll,比如说avcodec-54.dll之类的。Shared里面的exe体积很小,他们在运行的时候,到相应的Dll中调用功能。

Dev版本是用于开发的,里面包含了库文件xxx.lib以及头文件xxx.h,这个版本不包含exe文件。

打开系统命令行接面,切换到ffmpeg所在的目录,就可以使用这3个应用程序了。

1.1 ffmpeg.exe

ffmpeg是用于转码的应用程序。

一个简单的转码命令可以这样写:

将input.avi转码成output.ts,并设置视频的码率为640kbps

ffmpeg -i input.avi -b:v 640k output.ts

具体的使用方法可以参考:详细教程资料关注 后台私信;资料;两个字可以免费视频领取 文档 各大厂面试题 资料内容包括:C/C ,Linux,golang Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。

ffmpeg解码参数设置(FFMPEG视音频编解码零基础学习方法)(1)

1.2 ffplay.exe

ffplay是用于播放的应用程序。

一个简单的播放命令可以这样写:

播放test.avi

ffplay test.aviffprobe.exe

ffprobe是用于查看文件格式的应用程序。

这个就不多介绍了

ffmpeg库的使用:视频播放器

本章开始介绍使用ffmpeg的库进行开发。

2.1 ffmpeg库的配置

1.下载Dev版本,里面包含了ffmpeg的xxx.h头文件以及xxx.lib库文件。

2.下载Shared版本,里面包含了ffmpeg的dll文件。

3.将这两部分文件拷贝到VC工程下面就可以了

.2 最简单的视频播放器C/C Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂

播放器使用libavformat和libavcodec两个类库完成了视频的解码工作。实际上解码工作只需要libavcodec就可以了。因此更新了一个“纯净”的解码器。该解码器只使用libavcodec完成解码工作:

ffmpeg源代码分析

通晓了ffmpeg库的使用以后,可以看一下ffmpeg的源代码。注意ffmpeg的源代码只有在linux下才能编译,在windows下可以使用MinGW进行编译。推荐使用Eclipse查看ffmpeg的源代码

libavdevice(读设备)

AVDevice可以读取电脑的多媒体设备的数据,或者输出数据到指定的多媒体设备上。

.libswscale(图像拉伸,像素格式转换)

Swscale类库可以转换像素数据的格式,同时可以拉伸图像的大小。

FFmpeg封装格式的处理

使用FFmpeg进行封装格式的处理,主要是通过AVFormat完成。有关封装格式的处理,做了3个例子:

FFmpeg流媒体方面的应用

使用FFmpeg进行流媒体方面的应用,主要是流媒体的发送和接收。

直接使用ffmpeg.exe命令行工具的文章:

FFmpeg的其他杂项

使用FFmpeg读写内存(而非文件)的例子:

ffmpeg在其它平台下的应用

把FFmpeg应用于Android、IOS、Windows Phone的示例程序可以参考:

ffmpeg相关工程的学习

学习完成ffmpeg,还可以了解一下基于ffmpeg的相关的多媒体开源工程,在这里推荐以下几个:

12.1 ffdshow

ffdshow是基于ffmpeg的解码器类库libavcodec的DirectShow Filter。广泛安装在PC上。

有关ffdshow的源代码分析文章(更新中):

总结;

详细教程资料关注 后台私信;资料;两个字可以免费视频领取 文档 各大厂面试题 资料内容包括:C/C ,Linux,golang Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。

猜您喜欢: