七叶笔记 » golang编程 » 音视频简单基础一篇文章带你入门《ffmpeg干货》

音视频简单基础一篇文章带你入门《ffmpeg干货》

目录

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等等。。。

相关文章