当前位置: 首页 > news >正文

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

目录

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

相关文章:

  • es6 filter函数的用法_ES6新增数组方法
  • 记录方法用时_发明专利|一种微电网继电保护方法
  • docker容器访问sqlserver_Docker最全教程之MySQL容器化 (二十五)
  • 如何判断手机型号是5s_北斗导航如何启用?需要硬件支持,这些手机型号都可以使用...
  • 刷新报表_润乾报表 dashboard 分析
  • cgo 数据_年度数据分析报告,如何写出“年”味
  • arraylist扩容是创建新数组吗 java_深入了解ArrayList
  • dubbo消费者调用多个服务_dubbo同一个服务启动两个,service的group和version不同,消费者Reference指定一个group,version,启动报错...
  • python在电脑上怎样下载软件_在电脑上下载python的步骤
  • 中psr_戴PSR的小姐姐一眼看不够?那就多看两眼
  • iphone xh5打开ppt预览_iPhone手机3D Touch功能都要取消了,这些作用你居然还不知道?...
  • python可以从事的岗位_学习Python可以从事哪些工作
  • mysql 查询 系统字段 自然日_mysql查询昨天一周前一月前一年前的数据
  • 4 点击模型事件_unity实现模型点击事件
  • 三点估算pmp_PMP考试经验分享
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • emacs初体验
  • JavaScript新鲜事·第5期
  • Java超时控制的实现
  • mysql中InnoDB引擎中页的概念
  • overflow: hidden IE7无效
  • PaddlePaddle-GitHub的正确打开姿势
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 大数据与云计算学习:数据分析(二)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 给github项目添加CI badge
  • 警报:线上事故之CountDownLatch的威力
  • 软件开发学习的5大技巧,你知道吗?
  • 问题之ssh中Host key verification failed的解决
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 【干货分享】dos命令大全
  • 国内开源镜像站点
  • #13 yum、编译安装与sed命令的使用
  • #stm32驱动外设模块总结w5500模块
  • ${factoryList }后面有空格不影响
  • ()、[]、{}、(())、[[]]命令替换
  • (30)数组元素和与数字和的绝对差
  • (floyd+补集) poj 3275
  • (LeetCode 49)Anagrams
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)ssm高校实验室 毕业设计 800008
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (南京观海微电子)——COF介绍
  • (区间dp) (经典例题) 石子合并
  • (十一)图像的罗伯特梯度锐化
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原創) 物件導向與老子思想 (OO)
  • (转)scrum常见工具列表
  • .net经典笔试题
  • @Autowired标签与 @Resource标签 的区别
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [20170713] 无法访问SQL Server
  • [BZOJ3757] 苹果树