ffmpeg 录制指定窗口_音视频最简单基础知识一篇文章带你入门《ffmpeg干货》

本文介绍ffmpeg的基础知识和环境搭建,包括在Windows和Linux平台的安装,音视频基础知识,命令实战如视频录制、多媒体文件处理,以及编程实战等。还分享了ffmpeg常见问题和解决策略。
摘要由CSDN通过智能技术生成

目录

ffmpeg环境搭建

1'windows平台

2.Linux平台

音视频基础入门

1.音视频基础知识

2.常用工具

Medialnfo

VLC播放器

ffmpeg命令实战

1视频录制命令

2多媒体文件的分解/复用命令

3裁剪相关命令

4图片/视频互转命令

5直播相关命令

6各种滤镜命令

ffmpeg编程实战

流媒体实战

WebRT实战

今天先给大家聊一下基础的学习的小伙伴,可以关注+私信可以一起学习交流

b720930fa3dc34a148f04ed92cf67c41.png

ffmpeg环境搭建

获取FFmpeg源码包

有两个途径可以获取:

1. ffmpeg官方网站:http://www.ffmpeg.org/

在官网找到需要的版本,我选用的是 FFmpeg 3.4.4 “Cantor” 版本,因为最新版本没有ffserver。然后在Linux 执行下载、解压命令:

[root@localhost heijunma]# wget http://www.ffmpeg.org/releases/ffmpeg-3.4.4.tar.gz

[root@localhost heijunma]#tar -zxvf ffmpeg-3.4.4.tar.gz

1

2

解压后可以查看ffmpeg的第一级目录结构:

每个目录的结构后面再讲

2. github开源社区地址:

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账户(需要自己申请),进入https://github.com/FFmpeg/FFmpeg/branches 查看不同版本分支,选择release/3.4分支直接进行源码clone

[root@localhost github]# git clone -b release/3.4 https://github.com/FFmpeg/FFmpeg.git

cac14d307cd99999595f4347b7377182.png

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

8bfd8ecb736c5cc30e3042567a4c597a.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值