目录
ffmpeg环境搭建
1’windows平台
2.Linux平台
音视频基础入门
1.音视频基础知识
2.常用工具
Medialnfo
VLC播放器
ffmpeg命令实战
1视频录制命令
2多媒体文件的分解/复用命令
3裁剪相关命令
4图片/视频互转命令
5直播相关命令
6各种滤镜命令
ffmpeg编程实战
流媒体实战
WebRT实战
今天先给大家聊一下基础的学习的小伙伴,可以关注+私信可以一起学习交流

ffmpeg环境搭建
获取FFmpeg源码包
有两个途径可以获取:
1. ffmpeg官方网站:
在官网找到需要的版本,我选用的是 FFmpeg 3.4.4 “Cantor” 版本,因为最新版本没有ffserver。然后在Linux 执行下载、解压命令:
解压后可以查看ffmpeg的第一级目录结构:
每个目录的结构后面再讲
2. git hub开源社区地址:
git://source.ffmpeg.org/ffmpeg.git
可以用git将代码fork到本地,当然使用git之前请先安装git版本控制工具,需要根据自己的系统来安装对应的版本,Linux的架构信息可以由 uname -a 获取
[heijunma@localhost github]$ uname -a
Linux localhost.localdomain 2.6.32-754.3.5.el6.x86_64 #1 SMP Tue Aug 14 20:46:41 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
1
2
经查询得知系统是x86_64。因此我们需要安装git.x86_64版本,执行如下命令安装git版本控制工具
[root@localhost github]# yum install git.x86_64 -y
1
安装好之后,新建一个git工程目录,然后git初始化,全局配置用户名和邮箱,需要与Github相同:
[root@localhost github]# git init
Initialized empty Git repository in /home/heijunma/ffmpeg-3.4.4/github/.git/
[root@localhost github]#git config –global user.name “SugarWilliam”
[root@localhost github]#git config –global user.email “276190191@qq.com”
[root@localhost github]#git config –list
user.name=SugarWilliam
user.email=276190191@qq.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
1
2
3
4
5
6
7
8
9
10
11
这样就初始化完成了,接着我们在github上clone一个ffmpeg3.4.4版本仓库到本地
登录你自己的GitHub账户(需要自己申请),进入 查看不同版本分支,选择release/3.4分支直接进行源码clone
[root@localhost github]# git clone -b release/3.4

3. 配置
Eg:./configure–enable-shared –enable-memalign-hack –disable-debug –prefix=/home/heya/ffmpeg/out/ –arch=arm –cross-prefix=arm-hisiv200-linux- –target- os=linux
注意:
–prefix=/home/heya/ffmpeg/out/ 生成文件(可执行文件,头文件,库文件)输出的路径。
–arch=arm 芯片方案
–target-os=linux 系统方案
–arch=arm –cross-prefix=arm-hisiv200-linux- 交叉编译工具链
4. 编译 make
5. 安装输出make install,输出( bin ; include ;lib;share四个文件夹)
6. 可执行行文件移植: 将lib中的非静态库移植到 根文件系统 的lib或者usr/lib/目录下,将bin移植到根文件系统bin目录下。
使用ffmpeg
Eg:ffmpeg -i output.ts -codec copy-hls_list_size 120 -hls_time 10 testlive.m3u8
8. 库移植开发:
# 将lib中的非静态库移植到根文件系统的lib或者user/lib/目录下。
# 将lib中的非静态库移植到开发项目的指定库文件夹中。
# 将include下面的所有文件和文件夹拷贝到开发项目的指定头文件夹中。
# 此时已经将环境搭建完成,可以根据自己的需求对库文件和头文件进行裁剪
常用工具
ffmpeg视频处理工具(视频剪切、转码、合并……)
1、ffmpeg的下载和安装
2、ffmpeg常用处理功能
1、视频分离成图片序列:video—to—images(即视频帧)
2、图片序列合成视频:images—to—video
3、视频分离成无声视频和音频:video—to—video&audio
4、视频剪切:cut 参考
5、视频格式转换:format transfer
6、视频文件合并
ffmpeg常见问题总结
1.如果遇到编码后的数据解码的是时候越来越模糊,是因为AVFrame的pts没有设置,加上之后就解决了
2.如果提示解码失败,是因为这句话没有加
if ( vc-> flags & AVFMT_GLOBALHEADER )vc->flags |= CODEC_FLAG_GLOBAL_HEADER;
想一起学习的可以关注+私信,可送相关资料内容包括:C/C++,Linux,Nginx,ZeroMQ, MySQL ,Redis,fastdfs,MongoDB,ZK,ffmpeg流媒体,CDN,P2P,K8S,Docker,Golang,TCP/IP,协程,嵌入式,ARM,DPDK等等。。。
