FFMPEG入门资料---001---介绍和参数说明

news2024/11/25 16:23:01

文档介绍

1.1 文档目的

整理出开源代码 ffmpeg 的资料, 方便公司同事后续使用。

1.2 文档范围

较为详细的介绍 ffmpeg 的功能、使用以及二次开发。

1.3 读者对象

希望了解 ffmpeg 知识, 从事 USM 及 IPTV 的同事。

1.4 参考文献

1.5 术语与缩写解释

缩略语/术语全称介绍说明
ffmpegFast forword mpeg音视频转换器
ffplayFast forword play用 ffmpeg 实现的播放器
ffserverFast forword server用 ffmpeg 实现的 rstp 服务器
ffprobeFast forword probe用来输入分析输入流

FFmpeg 支持能力说明

FFmpeg 介绍及安装

2.1.1 FFmpeg 简介

FFmpeg 是一个开源免费跨平台的视频和音频流方案, 属于自由软件, 采用 LGPL 或GPL 许可证(依据你选择的组件)。 它提供了录制、转换以及流化音视频的完整解决方案。 它包含了非常先进的音频/视频编解码库 libavcodec, 为了保证高可移植性和编解码质量, libavcodec 里很多 codec 都是从头开发的。

ffmpeg 项目由以下几部分组成:

  • 1.ffmpeg 视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件.

  • 2.ffserver 基于 HTTP、RTSP 用于实时广播的多媒体服务器.也支持时间平移

  • 3.ffplay 用 SDL 和 FFmpeg 库开发的一个简单的媒体播放器

  • 4.libavcodec 一个包含了所有 FFmpeg 音视频编解码器的库.为了保证最优性能和高可复用性,大多数编解码器从头开发的.

  • 5.libavformat 一个包含了所有的普通音视格式的解析器和产生器的库

2.1.2 FFmpeg 安装

  • 1.将所有源代码压缩在一个文件夹中, 例如/绝对路径/ffmpeg。

在终端输入以下指令:

cd /绝对路径/ffmpeg ./configure (此时, 会出现问题。 然后重新输入./configure –disable-yasm-) Make

至此, ffmpeg 安装编译通过, 可以进行对音视频的操作。 ffplay 的编译需要依赖于 SDL 库, 所以要想编译成功 ffplay, 必须先安装 SDL 库, 安装方法:下载最新版本的 SDL 相应版本的 SDL 源码, 编译, 即可生成 SDL 库。

2.2 FFmpeg 参数说明

2.2.1 通用选项

  • -L license *-h 帮助

  • formats 显示可用的格式,编解码的,协议的

  • f fmt 强迫采用格式fmt

  • -i filename输入文件

  • -y覆盖输出文件

  • -t duration设置记录时间 hh:mm:ss[.xxx]格式的记录时间也支持

  • -ss position 搜索到指定的时间[-] hh:mm:ss[.xxx]的时间格式也支持

  • -title string 设置标题

  • -author string 设置作者

  • -copyright string 设置版权

  • -comment string 设置评论

  • -target type 设置目标文件类型(vcd,svcd,dvd)所有的格式选项(比特率,编解码率,缓冲区大小)自动设置,只需要输入如下的就可以了:

ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
  • -hq 激活高质量设置

  • -itsoffset offset 设置以秒为基准的时间偏差,该选项影响后面所有的输入文件。改偏移被加入到输入文件的时间戳,定义一个正偏移意味着相应的流被延迟了offset秒。[-]hh:mm:ss[.xxx]的格式也支持

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 

2.2.2 视频选项

  • -b bitrate设置比特率,缺省200kb/s

  • -r fps 设置帧频率,缺省25

  • -s size设置帧的大小,此格式为WXH 缺省 160 x 128 下面的简写可以直接使用

sqcif128 x 96
qcif176 x 144
cif352 x 288
4cif704 x 576

  • -aspect apect 设置纵横比 4:3 ,16:9,或者1.3333,1.7777

  • -croptop size 设置顶部切除带大小 像素单位

  • -cropbuttom size -cropleft size -cropright size 底部,左边,右边切除带大小

  • -padtop size 设置顶部补齐的大小 像素单位

  • -padbottom size -padleft size -padright size -padcolor color设置补齐条大小和颜色(hex,6个16进制的数,红绿蓝排列,比如000000代表黑色)

  • -vn 不做视频记录

  • -bt tolerance设置视频码率容忍度 kbit/s

  • -maxrate bitrate 设置最大视频码率容忍度

  • -minrate bitrate 设置最小视频码率容忍度

  • -bufsize size 设置码率控制缓冲区大小

  • -vcodec codec 强制使用codec编解码方式,如果用copy表示原始编码数据必须被拷贝

  • -sameq 使用同样视频质量作为源(VBR)

  • -pass n 选择处理遍数(1或2)两遍编码非常有用,第一遍生成统计信息,第二遍生成精确的请求的码率

  • -passlogfile file选择两遍的记录文件名为file

2.2.3 高级视频选项

  • -g gop_size 设置图像组大小

  • -intra 仅适用帧内编码

  • -qscale q 使用固定的视频量化标度(VBR)

  • -qmin q 最小视频量化标度(VBR)

  • -qmax q 最大视频量化标度(VBR)

  • -qdiff q 量化标度间最大偏差 (VBR)

  • -qblur blur 视频量化标度柔化(VBR)

  • -qcomp compression 视频量化标度压缩(VBR)

  • -rc_init_cplx complexity 一遍编码的初始复杂度

  • -b_qfactor factor 在 p 和 b 帧间的 qp 因子

  • -i_qfactor factor 在 p 和 i 帧间的 qp 因子

  • -b_qoffset offset 在 p 和 b 帧间的 qp 偏差

  • -i_qoffset offset 在 p 和 i 帧间的 qp 偏差

  • -rc_eq equation 设置码率控制方程 默认 tex^qComp

  • -rc_override override 特定间隔下的速率控制重载

  • -me method 设置运动估计的方法 可用方法有 zero phods log x1 epzs(缺省) full

  • -dct_algo algo 设 置 dct 的 算 法 可 用 的 有

0FF_DCT_AUTO 缺 省 的 DCT
1FF_DCT_FASTINT
2FF_DCT_INT
3FF_DCT_MMX
4FF_DCT_MLIB
5FF_DCT_ALTIVEC
  • -idct_algo algo 设 置 idct 算 法 。 可 用 的 有

0FF_IDCT_AUTO 缺 省 的 IDCT
1FF_IDCT_INT
2FF_IDCT_SIMPLE
3FF_IDCT_SIMPLEMMX
4FF_IDCT_LIBMPEG2MMX
5FF_IDCT_PS2
6FF_IDCT_MLIB
7FF_IDCT_ARM
8FF_IDCT_ALTIVEC
9FF_IDCT_SH4
10FF_IDCT_SIMPLEARM
  • -er n 设置错误残留为 n

1FF_ER_CAREFULL 缺省
2FF_ER_COMPLIANT
3FF_ER_AGGRESSIVE
4FF_ER_VERY_AGGRESSIVE
  • -ec bit_mask 设 置 错 误 掩 蔽 为 bit_mask , 该 值 为 如 下 值 的 位 掩 码

1FF_EC_GUESS_MVS (default=enabled)
2FF_EC_DEBLOCK (default=enabled)
  • -bf frames 使用 frames B 帧, 支持 mpeg1, mpeg2, mpeg4

  • -mbd mode 宏 块 决 策

0FF_MB_DECISION_SIMPLE 使 用 mb_cmp
1FF_MB_DECISION_BITS
2FF_MB_DECISION_RD

-4mv 使用 4 个运动矢量 仅用于 mpeg4 -part 使用数据划分 仅用于 mpeg4 -bug param 绕过没有被自动监测到编码器的问题 -strict strictness 跟标准的严格性 -aic 使能高级帧内编码 h263+ -umv 使能无限运动矢量 h263+ -deinterlace 不采用交织方法 -interlace 强迫交织法编码 仅对 mpeg2 和 mpeg4 有效。当你的输入是交织的并且你 想要保持交织以最小图像损失的时候采用该选项。 可选的方法是不交织, 但是损失 更大 -psnr 计算压缩帧的 psnr -vstats 输出视频编码统计到 vstats_hhmmss.log -vhook module 插入视频处理模块 module 包括了模块名和参数, 用空格分开

2.2.4音频选项

  • -ab bitrate 设置音频码率

  • -ar freq 设置音频采样率

  • -ac channels 设置通道 缺省为 1

  • -an 不使能音频纪录

  • -acodec codec 使用 codec 编解码

2.2.5 音频/视频捕获选项

  • -vd device 设置视频捕获设备。 比如/dev/video0

  • -vc channel 设置视频捕获通道 DV1394 专用

  • -tvstd standard 设置电视标准 NTSC PAL(SECAM)

  • -dv1394 设置 DV1394 捕获

  • -av device 设置音频设备 比如/dev/dsp

2.2.6 高级选项

  • -map file:stream 设置输入流映射

  • -debug 打印特定调试信息

  • -benchmark 为基准测试加入时间

  • -hex 倾倒每一个输入包

  • -bitexact 仅使用位精确算法 用于编解码测试

  • -ps size 设置包大小, 以 bits 为单位

  • -re 以本地帧频读数据, 主要用于模拟捕获设备

  • -loop 循环输入流。 只工作于图像流, 用于 ffserver 测试

2.2.7 FFmpeg 参数实例 以下面这个命令作为例子

./ffmpeg -y -i /rootVideoConverter/123.avi –s 480x350 /root/VideoConverter/234.flv

-y (覆盖输出文件, 即如果 1.***文件已经存在的话, 不经提示就覆盖掉了)

-i "1.avi"(输入文件是和 ffmpeg 在同一目录下的 1.avi 文件,可以自己加路径,改名字)

-s (输出的分辨率, 注意片源一定要是 16:9 的不然会变形)

-r (帧数, 一般就用这个吧)

-b 1500(视频数据流量,用-b xxxx 的指令则使用固定码率,数字随便改,1500 以 上没效果;还可以用动态码率如:-qscale 4 和-qscale 6, 4 的质量比 6 高)

-acodec aac(音频编码用 AAC)

-ac 2 (声道数 1 或 2)

-ar 24000(声音的采样频率, 好像 PSP 只能支持 24000Hz)

-ab 128 ( 音频数据流量, 一般选择 32、64、96、128)

-vol 200(200%的音量, 自己改)

-f psp (输出 psp 专用格式)

-muxvb 768(给 PSP 机器识别的码率, 一般选择 384、512 和 -ab bitrate 设置音频码率

-ar freq 设置音频采样率

-ss 指定时间点开始转换任务, (time_off set the start time offset),

-ss 后跟的时间单位为秒 .

-s 320x240 指定分辨率

-r 29.97 桢速率

-bitexact 使用标准比特率

-vcodec xvid 使用 xvid 压缩

作者:张芳涛

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AcWing 4655. 重新排序(差分+前缀和+贪心)

一、题目信息 二、思路分析 这道题的话,其实只看前一句话,我们应该用的是前缀和算法。但是这道题在此基础上做了改变,我们根据前缀和可以算出排序之前各个区间和的和。 根据题意,我们需要对数组重新排序,使得排序之后…

VMware Workstation安装ESXI8.0

🎈 作者:互联网-小啊宇 🎈 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

反射看这一篇文章就够了

第一章 反射的概述 第1节 反射的概念 Java的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法,并且对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能称为Java的反射机制. 第2节 反射理解 1如果存在反射,那…

实现 SpringBoot 项目中的隐私数据脱敏

实现 SpringBoot 项目中的隐私数据脱敏什么是数据脱敏如何实现数据脱敏注解使用demo什么是数据脱敏 为了避免“用户信息泄露”的风险项(就是后台系统里用户的一些隐私数据直接明文显示了),其实指的就是要做数据脱敏。数据脱敏:把…

谷歌浏览器自带的翻译功能无法使用的解决办法

谷歌浏览器自带的翻译功能无法使用的解决办法 到 C:\Windows\System32\drivers\etc 目录找到hosts文件用记事本或者notepad打开在文件末尾添加:142.250.4.90 translate.googleapis.com要有管理员的身份才可以对hosts文件进行修改修改完毕以后,打开cmd命令…

MySQL 如何查找删除重复行

如何查找重复行 第一步是定义什么样的行才是重复行。多数情况下很简单:它们某一列具有相同的值。本文采用这一定义,或许你对“重复”的定义比这复杂,你需要对sql做些修改。本文要用到的数据样本: create table test(id int not …

解决Vue使用UEditor百度编辑器,上传图片服务配置问题

前言 查看文档前先查看http://fex.baidu.com/ueditor/#server-jsp 理解手册基本配置 此文档只针对TomcatWeb服务 vue版本为2.0版本和 vue-cli2.0 环境配置 需求配置实际项目配置JDK 1.6java version “19.0.1” 2022-10-18Apache Tomcat 6.0Server version: Apache Tomcat…

狂神说笔记——Nginx快速入门28

Nginx快速入门 在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。 随着用户越来越多了,并发量慢慢增大了,此时一台服务器满足不了需求了。 于是进行横向扩展,又增加了服务器。这个时候几个项目…

VTK-路径规划

前言:本博文主要研究VTK中路径规划相关的内容,后期会持续更新路径规划相关的拓展应用,希望能给各位小伙伴一些帮助,也希望小伙伴们多多关注支持。 vtkGraphGeodesicPath 位置:..\Filter\Modeling 描述:路…

DDS 发送大数据

Sending Large DataThis section describes the capabilities offered by Connext DDS—specifically, RTI FlatData™ language binding and Zero Copy transfer over shared memory—that allow sending and receiving large data samples with minimum latency. In this sec…

Oracle 19c - 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单 (Doc ID 2577572.1)

Oracle 19c - 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单 (Doc ID 2577572.1)正在上传…重新上传取消To Bottom 文档内容 用途适用范围详细信息关于新的 Autoupgrade utility步骤 1: 升级到数据库 19c 的升级路径能够直接升级到 Oracle 19c 的数据库最小版本以下…

mongodb-18.聚合查询练习1

文章目录bulk writeaddFields增加field嵌套增加field覆盖显示用变量替换向数组中增加元素分组 bucket并行执行多个bucket$bucketAuto$count$document$facet1.使用Aggregation对象实现2.使用Aggregates实现$graphLookup 文档递归查询跨多文档递归$graphLookupbulk write db.piz…

第四十二讲:神州防火墙路由模式的初始配置

防火墙作为局域网的智能网关,处于内网和外网之间,必须工作在路由模式。路由模式下,防火墙上添加默认路由,配置SNAT转换,隐藏私有地址,内部用户正常访问外网。从安全考虑,内网处于trust区域&…

《2022年度ASA广告表现报告》生成,探索买量新高度!

回首 2022 年,ASA 广告的历程可以用“变化莫测”来形容,CPP 取代创意集、更新《广告指南》、上线新广告位等等,而这一系列改变,都在一定程度上影响着 ASA 广告的投放。一起来看看 2022 年度全球 ASA 广告的投放情况吧!…

日常使用的WhatsApp如何防止被封?

最近好多做外贸的朋友反映,自己手机号码注册的WhatsApp账号被封了,该如何将解封。首先我们先要了解为什么会被封?被封肯定是因为违反了WhatsApp条款和条件,但是具体如何违反的呢?我们一起来看看你没有这样做过&#xf…

【express】中间件

中间件(Middleware),特指业务流程的中间处理环节 1、调用流程 当一个请求到达Express的服务器之后,可以连续调用多个中间件,从而对这次请求进行预处理。 2、格式 Express的中间件,本质上就是一个functio…

repeat语句 及 赋值语句说明---verilog HDL

参考:verilog数字系统设计教程【第四版】夏宇闻 repeat语句用阻塞赋值语句,与用非阻塞语句产生的结果差别非常大,所以将二者放在同一篇文章中。 1、赋值语句 2、repeat 语句介绍   2.1、用法要点   2.2、代码举例    代码1:…

2023年北向L2接口的发展会怎么样?

众所周知北向L2接口的逐笔成交功能可以精确查看每笔成交,跟踪北向资金动向,那么由于北向资金动向是股市行情的晴雨表,因此股民做股票投资是要时刻关注着北向资金流动方向的,那么北向L2接口作为帮助头者提供跟踪资金动向的服务软件…

浅谈撮合引擎

浅谈撮合引擎设计撮合引擎简介撮合引擎的发展币安中小型交易所小型交易所业务交易流程竞价方式交易所常用指令开发简易架构设计撮数据结构设计交易委托账本限价委托单其它委托单关键代码实现1.创建一个ringbuffer2. 设置事件监听4.订单撮合主逻辑撮合分支processMath函数逻辑PS…

uniapp实现iOS支付苹果内购支付踩过的坑以及具体操作步骤

由于我们app会员属于虚拟产品,所以苹果商店要求我们必须选择苹果内购,否则就勒令下架。 无奈,于是就又开始了踩坑之旅~ uniapp可以直接使用uni-pay的插件去进行苹果内购。 但是,在对接自己的项目之前,建议先跑通示例项…