4889软件园:电脑手机软件下载大全,热门手机游戏免费下载

4889软件园 > 资讯文章 > 3gp格式转换器安卓版(Fast Video Player——超级好用的视频格式转换工具)

3gp格式转换器安卓版(Fast Video Player——超级好用的视频格式转换工具)

作者:佚名 来源:4889软件园 时间:2023-04-17 19:18:45

3gp格式转换器安卓版(Fast Video Player——超级好用的视频格式转换工具)

3gp格式转换器文章列表:

3gp格式转换器安卓版(Fast Video Player——超级好用的视频格式转换工具)

Fast Video Player——超级好用的视频格式转换工具

Fast Video Player是一款超级好用的视频格式转换工具,该软件可以帮助用户们将视频格式转换成自己想要的格式,无论是常见的3GP,AVI,MP4格式,还是冷门的MOV,AAC,AMR都可以轻松的进行转换,因此有需求的用户,快来下载体验吧!

软件功能

换视频

将视频转换为iPhone,iPad,iPod,Android,PSP设备兼容的格式。

您还可以将视频转换为3GP,AVI,MP4格式。

从视频中提取音频

从mp3格式的视频中提取音频。

批量转换:同时转换一个或多个视频。

免费申请:申请完全免费。

来源:http://www.3h3.com/soft/271921.html

软件特色

播放影片

支持的视频格式包括3GP,AAC,AMR,AVI,DIVX,FLV,M4P,MKV

以及:MOV,MP3,MP4,MPEGM OGA,RAM,WEBM,WMV等格式。

播放高质量的视频支持4k,8k,全高清和高清视频质量。

截图保存观看视频的屏幕截图。

播放360°视频:支持360°高清视频

更新日志

1.修复已知bug

2.优化操作体验

AnyMP4 MP3 Converter for Macmp3格式转换器

AnyMP4 MP3 Converter for Mac版是一款完美的MP3格式转换器,可将任何音频格式(包括AAC,AIFF,ALAC,WAV,M4A和其他通用音频格式)转换为MP3.反过来,该软件也可以将MP3音频文件转换为其他音频格式,如AAC / AIFF / ALAC / WAV / M4A。或者您还可以将视频格式转换为MP3,包括MP4,MOV,MTS,AVI,MKV,FLV,RMVB。

在Mac上将几乎所有视频和音频转换为MP3格式。AnyMP4 MP3 Converter for Mac适用于Mac是专业的多功能Mac MP3转换软件,可让用户将任何视频/音频格式转换为Mac上的MP3,AAC,AIFF,ALAC,WAV和M4A速度快,音质出色。此外,这个神奇的软件可以从大多数流行的视频中提取音频文件,如MP4,AVI,WMV,M4V,MOV,MTS,FLV,MKV,RMVB等,并将它们保存为Mac上您最喜欢的音频格式,具有闪电般的速度和零质量损失。

AnyMP4 MP3 Converter Mac软件功能

将AAC / AIFF / ALAC / WAV / M4A和更多音频格式转换为Mac上的MP3
适用于Mac的AnyMP4 MP3 Converter是一款功能强大的Mac MP3 Converter软件,可将任何音频格式(包括AAC,AIFF,ALAC,WAV,M4A和其他通用音频格式)转换为Mac上的MP3,具有超快的转换速度和完美的音质。反过来,这款适用于Mac的MP3 Converter可帮助您将MP3音频文件转换为其他音频格式,如AAC / AIFF / ALAC / WAV / M4A。将音频文件转换为MP3或MP3格式后,您可以在便携式设备上收听,如iPhone,iPod,iPad,诺基亚,谷歌Nexus,黑莓等。

将视频格式转换为MP3,包括MP4,MOV,MTS,AVI,MKV,FLV,RMVB
使用AnyMP4 MP3 Converter for Mac程序,您不仅可以将音频文件转换为MP3或MP3音乐文件,还可以转换为Mac OS X系统下的其他音频格式,还可以转换流行视频的音轨,如MP4,MOV,MTS,AVI, MKV,FLV,RMVB等,然后在Mac上将它们转换为所需的音频格式,如MP3,MP2,M4R,M4A,WAV,WMA等,具有卓越的品质和快速的转换速度。

使用多种音频设置自定义音频文件

这款适用于Mac的MP3转换器允许您随意编辑音频文件。使用修剪功能,您可以通过拖动滑块控件来设置开始和结束时间以获得所需的音频剪辑,从而缩短音频文件的长度。另外,您可以将一些音频剪辑一次放入一个文件中。此外,这款功能强大的AnyMP4 MP3 Converter for Mac仍然具有许多创意灵活的特性。您可以调整音频设置,如编码器,采样率,声道和音频比特率。您也可以调整音量。

同时转换多个音频文件

适用于Mac的AnyMP4 MP3 Converter支持批量转换。这意味着转换器可以同时转换多个音频文件,这可以为您节省大量时间。因此,这款MP3转换器是高效的软件。凭借直观和用户友好的界面,该应用程序非常易于为初学者和高级用户使用。只需点击几下鼠标即可完成转换。总之,这个AnyMP3的Mac MP3转换器是一个简单而专业和流行的转换程序。

AnyMP4 MP3 Converter for Mac破解版技术规格

支持的输入格式:
一般视频: TS,MTS,M2TS,MXF,TRP,TP,MP4,M4V,QT,MOV,MPG,MPEG,MPEG2,MPEG4,MJPG,MJPEG,AVI,3GP,3G2,FLV,MOD,TOD,RM,RMVB ,WMV,ASF,MKV,SWF,F4V,VOB,DAT,DV,DIF,OGM,WTV,DVR-MS,Bink视频,WebM
高清视频: MTS,TS,M2TS,TP,TRP,HD MPG,HD MPEG,高清MPEG2,高清MPEG4,高清MP4,高清WMV,QuickTime高清MOV
音频: FLAC,WAV,WMA,MP3,MP2,AAC,AC3,AIFF,APE,CAF,MPC,QCP,OGG,M4A,M4B,AUD,MKA ,AIFC,RA,RAM,AU,AIF,CUE
支持的输出格式:
音频: MP3,AAC,AIFF,ALAC,WAV,M4A
支持的便携设备:
Apple设备: iPhone XS / XS Max / XR / X / 8/8 Plus / 7/7 Plus / 6s / 6s Plus / 6/6 Plus / SE / 5s / 5c,iPad,iPad Pro / mini 4 / mini 3 / mini 2 / mini / Air 2 / Air,iPod touch / nano,Apple TV 4K,Apple TV
游戏机: Wii
媒体设备: Sansa E200 Serise

Filmage Converter for mac全能的音视频转换器中文版

Filmage Converter for mac是一款全能的音视频转换器,Filmage Converter Mac版支持MP4、MOV、3GP、VOB、M4V、WMV、AVI、MPG、FLV、F4V各种格式,ilmage Converter视频转换器能够将视频转换为动画 GIF,批量转换所有视频,合并多个频/音频文件等,另外还提供了实用的视频编辑功能,非常好用,需要Filmage Converter中文版的朋友可以来试试哦!

Filmage Converter for mac官方介绍

Filmage Converter 是 Mac 平台上最好的视频转换器。Filmage Converter 一键视频格式转换 - 快速、简单、高效视频格式转换器。

Filmage Converter = 视频/音频转换 视频/音频编辑 视频合并/分割 GIF导出 音频提取 视频特效

Filmage Converter 是 Mac 上一款运行快速、界面简洁、操作简单的任何视频格式转换器。无需任何特殊设置和技术知识,就能轻松上手。

Filmage Converter 视频格式转换工具提供快速转换,高清转换服务。Filmage Converter 几乎可以转换任何格式,可以将任何视频格式转换成 MP4、MOV、3GP、VOB、MKV、M4V、WMV、AVI、MPG、FLV、F4V、SWF、TS等视频格式;也能将视频/音频转换为流行的音频格式,如MP3、WAV、FLAC、AAC等音频格式,满足您的不同的转换需求。

Filmage Converter 转换app为您提供定制转换,让您根据设备转换适合Apple TV、iPad、iPhone、iPod、Xbox 360,PSP,LG,三星、华为、小米、HTC等平台的视频!无需浪费时间,直接选择所需格式,就可以可以在自己喜欢的设备上播放视频。

Filmage Converter 视频转换器也支持从视频中提取音频,音频转音频,编辑视频,剪辑,裁剪视频等等。

Filmage Converter 完全不含广告,无干扰视频转换,高效快速。

https://mac.orsoon.com/Mac/186352.html

Filmage Converter Mac版功能特点

任何视频格式转换器 - 将视频转换为流行的视频格式

- 将任何视频转换为 MP4、MOV、3GP、VOB、MKV、M4V、WMV、AVI、MPG、FLV、F4V、SWF、TS等任何视频格式

- 支持针对Apple TV、iPad、iPhone、iPod、Xbox 360、PSP、LG、三星、华为、小米、HTC等更多其他媒体播放器,将视频转为兼容格式,轻松播放视频

- 将视频转换为动画GIF(GIF Maker)

- 您可以转换录制的视频、下载的视频、用摄像机拍摄的视频等任何视频,添加到 Filmage Converter 转换列表中,一键同时转换。让您的视频与所需的视频播放器兼容

- 一键视频格式转换器让您批量转换所有视频文件

- 视频合并:将多个视频/音频文件合并为一个新的文件

- 转换高清和超高清4K视频

- 拖放文件到视频转换列表,一键转换

视频到音频转换器 - 将视频转换为音乐

- 从视频文件中提取音频,并转换保存为MP3、WAV、FLAC、AAC、AIFF、M4A、AU、WavPack、AMR、MP2等音乐文件

音频转MP3 / WAV / AAC / FLAC转换器

- 音频和音乐转换器可将任何音频文件转换为MP3,WAV,FLAC,AAC等格式

- 最好的mp3转换器,可将任何视频转换为mp3音乐文件

视频编辑器 - 编辑视频

- 剪辑视频:视频剪辑器可让您设置起点和终点以修剪视频剪辑

- 裁剪视频:根据需要裁剪视频,旋转和调整视频大小

- 在视频中添加字幕以更好地理解视频内容

- 添加效果/滤镜,并可以调整视频亮度,对比度,饱和度和速度等优化视频。创建定制的个性化视频

- 添加文字和图像水印以保护视频版权

- 预览编辑的视频

多样的输出设置

- 视频转换app可让您定义输出设置,例如视频编码器,帧速率,分辨率,比特率。您可以调整音频设置,例如音频编码器,采样率,音轨和比特率

易于使用的视频转换器

- 直观简洁的界面

- 直接拖放文件

- 自定义输出文件夹

- 一键转换和编辑文件

超快速高清转换

- 高清无损转换

- 高速转换

Face ID终被破解?这150美元脸膜不简单

产品:iPhone X(双4G)苹果手机

1Face ID被150美元脸膜破解

自从Face ID这个概念火了之后,网友们纷纷亲自上阵对其进行无情调侃,早前就有“睡觉时害怕被人解锁”、“戴面具能解锁吗”等问题,但玩笑终归是玩笑,都无法破解被称为史上最先进的技术Face ID。但近日,外媒就曝光了一张150美元的面具击败了iPhone上的Face ID人脸识别技术,这到底是怎么一回事呢?

Face ID终被破解?这150美元脸膜不简单(图源:theverge)

据悉,越南网络安全公司Bkav声称,他们已经能够使用特制“面具”/脸膜来绕过iPhone X的脸身份验证。据悉,该特制了一种采用令人毛骨悚然的怪物头像“面具”/脸膜,留出眼睛、鼻子和嘴的真实剪纸来通过欺骗苹果的深度映射检测而实现破解。

Face ID终被破解?这150美元脸膜不简单(图源:theverge)

Bkav表示,这种通过结合3D打印、化妆和2D图像的特制面具,在脸颊和脸周围采用特别处理,如由硅酮制成的大面积皮肤和鼻子。 Bkav表示,做面膜的成本仅150美元相对便宜,并会在收到iPhone X也就是11月5日就开始展开面具工作。

由演示视频中画面可以看到Phone被解锁且只需一次就可以。 对此,iPhone X执行长Phil Schiller表示:在好莱坞工作的苹果工程师与专业面具制作者者和化妆师们都在尽力防止Pace ID被破解,然而他并没有说该面具是否能击败这个系统。Schiller也承认,没有生物特征识别系统是完美的。

Face ID终被破解?这150美元脸膜不简单(图源:theverge)

值得注意的是,随机解锁iPhone X的Face ID的概率大约是1:1000000,而Touch ID被破解的概率是1 : 50000。目前,Bkav公司强调,该产品只是一个概念证明,未来需要更多的研究。如会应用到国家领导人、大公司的领导人等等很可能会遭到非法解锁尝试的人群。

2苹果iPhone X详细参数

苹果iPhone X(双4G)

基本参数

上市日期2017年

手机类型4G手机,3G手机,智能手机,平板手机,拍照手机,快充手机,游戏手机

屏幕

触摸屏类型电容屏,多点触控

主屏尺寸5.85英寸

主屏材质TFT材质

主屏分辨率2436x1125像素

屏幕像素密度459ppi

窄边框4.25mm

屏幕占比82.84%

网络

4G网络移动TD-LTE,联通TD-LTE,联通FDD-LTE

3G网络移动3G(TD-SCDMA),联通3G(WCDMA),联通2G/移动2G(GSM)

SIM卡Nano SIM卡

WLAN功能双频WIFI,IEEE 802.11 a/b/g/n/ac

导航GPS导航,GLONASS导航,Galileo,QZSS定位系统,iBeacon 微定位

连接与共享WLAN热点,蓝牙5.0,NFC

硬件

操作系统iOS 11

核心数四核

CPU频率2.4GHz

RAM容量3GB

ROM容量64GB/256GB

电池类型不可拆卸式电池

电池容量2716mAh

其他硬件参数使用无线外设时的通话时间:最长可达21小时
互联网使用:最长可达12小时
视频无线播放:最长可达13小时
音频无线播放:最长可达60小时
可快速充电:30分钟最多可充至50%电量9
内置锂离子充电电池
无线充电(适配各类 Qi 充电器10)
通过电脑的USB端口或电源适配器充电
可快速充电

摄像头

摄像头类型三摄像头(后双)

后置摄像头双1200万像素

前置摄像头720万像素

传感器类型CMOS

闪光灯LED补光灯

外观

造型设计直板

机身颜色深空灰,银色

手机尺寸143.3x70.8x7.7mm

手机重量170g

机身材质玻璃机身

操作类型虚拟按键

服务与支持

音频支持支持MIDI/MP3/AAC等格式

视频支持支持的视频格式:HEVC、H.264、MPEG-4 Part 2 与 Motion JPEG
播放杜比视界与 HDR10 视频内容时支持高动态范围显示
AirPlay 镜像、照片和视频输出至 Apple TV (第二代或更新机型)6
视频镜像和视频输出支持:通过 Lightning 数字影音转换器和 Lightning 至 VGA 转换器,最高可达 1080p支持3GP/MP4等格式
支持3GP/MP4等格式
支持3GP/MP4等格式
支持3GP/MP4等格式
支持3GP/MP4等格式
支持3GP/MP4等格式

图片支持支持JPEG等格式

常用功能秒表,计算器,电子词典,备忘录,日程表,记事本

商务功能飞行模式

保修信息

保修政策全国联保,享受三包服务

质保时间1年

质保备注iPhone及所含配件享有1年的保修期

客服电话400-627-2273

电话备注周一至周五:9:00-21:00;周六至周日:9:00-18:00

详细内容自购机日起(以购机发票为准),如因质量问题或故障,凭厂商维修中心或特约维修点的质量检测证明,享受15日内退货或更换一部享有重新计算1年保修期的设备,15日以上在质保期内根据具体情况更换相关部件或提供一台部分重新装配的设备,仅保留消费者现有设备后盖。更换的部件和配件享受原有1年保修期的剩余时长或90天的保修期,以其中时间较长者为准。进入官网>>

*本信息来源于ZOL产品库

FFmpeg 入门

FFmpeg 简介

ffmpeg命令行工具

ffplay 播放的时候还有一些快捷键操作,比如快进 ->

ffplay -showmode 默认是 video, 还可以选 rdft(逆实数离散傅立叶变换)和waves(来自滤波器显示波的音频波

ffplay -f lavfi -i testsrc -vf pad='400:300:(ow-iw)/2:(oh-ih)/2:orange'

FFmpeg软件库

FFmpeg库被纳入Chrome,以支持HTML5音频和视频元素。 其他使用FFmpeg的浏览器还包括Chromium和Orygin网络浏览器

常见 ffmepg 中的名词/缩写

d/e/a/v/s: decoder【解码器】/encoder【编码器】/audio【音频】/video【视频】/subtitle【字幕】

dar/sar/par: 图像和视频的纵横比/ 图像或视频帧的长宽比,取决于视频源 / 像素宽度与其高度之比, 一般是 1:1, DAR = PAR x SAR

iw/ow/ih/oh: input/ouput width/height

【todo 添加更多,持续更新】

已经给大家准备好了安装环境和各种视频资料,资料放在自己的群里面:832218493(需要自取)

正在跳转

ffmpeg 命令

ffmpeg [global_options] {[input_file_options] -i INPUT_FILE} ... {[output_file_options] OUTPUT_FILE}...// 比如: ffmpeg [参数1]global_options [参数2]input_file_options -i [参数3]INPUT_FILE [参数4]output_file_options [参数5]OUTPUT_FILE

调试请参考这里, 比如使用 -debug, -fdebug, -debug_ts, 设置 -loglevel

命令的一些说明

ffmpeg 是一个非常快的视频/音频转换器,也可以抓取音频/视频源,并在任意采样率、尺寸之间调整视频,以及提供多种高品质的过滤 filter 系统。

ffmpeg 从任意数量/形式的输入文件中进行读取(可以是普通文件,管道,网络流,设备源等等),通过输入文件选项对输入文件进行设定,通过 -i 进行标记,并写入到任意数量/形式的输出文件中,任何在命令行中不能被解释为选项的字符串信息(当然也不是被-i指定为输入文件的信息)都被作为一个输出文件

原则上每个输入或输出文件都可包含数量不同的数据流(视频/音频/字幕/附件/数据….),具体文件中包含的数量和/或数据类型是文件的容器格式限定的,具体选择那些流从输入文件到输出文件则可能是自动或者依据 -map 选项来指定,【学会使用 stream specifiler 对于学习 ffmpeg 命令很重要】。

作为一般规则,选项用于指定紧接着的文件,因此命令中顺序很重要,你可以在命令中多次重复相同的选项,每次都可以应用于紧接着的下一个输入或者输出文件。例外的是全局选项(例如过程信息输出详细程度的选项),这些选项必须首先进行指定,会全局使用。

为了明确指定输入文件,你必须采用从 0 开始的数字索引法,即第1个输入文件由0索引,第2个则是1。同样的,在一个文件中指定数据流也是通过同样规则的索引法,即2:3表示第3个输入文件的第4个数据流。

ffmpeg 调用 libavformat 库(包含 demuxer)读取输入文件,分离出各类编码的数据包(流),当有多个输入文件时,ffmpeg 试图跟踪最低时间戳实现任意输入流同步。编码数据包(除非是指定为流式拷贝,相关内容请参考特性描述对流式拷贝的说明)通过解码器解码出非压缩的数据帧(raw视频/PCM格式音频…),这些数据帧可以被滤镜进一步处理。经过滤镜处理的数据被重新编码为新的数据包(流),然后经过混合器混合(例如按一定顺序和比例把音频数据包和视频数据包交叉组合),写入到输出文件,具体处理流程见下面的图。

ffmpeg 的 help 输出比较复杂,某些字母的存在意味着该选项适用于编码(E)、解码(D)、视频(V)、音频(A)或字幕(S)

可以在 FFmpeg 中使用的 SI 前缀:指的是再 ffmepg 里面制定数字可以使用这样的形式: 1500000 => 1500K => 1.5M => 0.0015G

在FFmpeg的命令中可以使用大量的变量,不同的命令可以使用的变量不同,比如 filter crop 里面的 x, y 位置:x的默认值为(iw - ow)/2, y的默认值为(ih - oh)/2,除了 iw,ih ,ow, oh 还可以使用变量: a, sal 等

_______ ______________| | | || input | demuxer | encoded data | decoder| file | ---------> | packets | ----- |_______| |______________| | v _________ | | | decoded | | frames | |_________| ________ ______________ || | | | || output | <-------- | encoded data | <---- | file | muxer | packets | encoder|________| |______________|

显示输出预览

FFplay媒体播放器预览: ffplay -i input_file ... test_options

使用SDL输出设备预览: ffmpeg -f lavfi -i rgbtestsrc -pix_fmt yuv420p -f sdl Example

Filters, filterchains,filtergraphs

在多媒体处理中,术语过滤器是指在编码到输出之前修改输入的软件工具。过滤器分为音频和视频过滤器。FFmpeg内置了许多多媒体过滤器,可以通过多种方式组合它们。FFmpeg的过滤API(应用程序编程接口)是 libavfilter 软件库,它允许过滤器有多个输入和输出。过滤器包括在输入和输出之间使用 -vf 选项的视频过滤器和 -af 选项音频过滤器。

# 顺时针旋转 90°:使用转置过滤器ffplay -f lavfi -i testsrc -vf transpose=1# 使用atempo音频过滤器将输入音频的速度降低到80%:ffmpeg -i input.mp3 -af atempo=0.8 output.mp3

在编码前,ffmpeg可以对raw(真实/原)音频和视频使用libavfilter库中的滤镜进行处理。在ffmpeg看来只有2种滤镜:简单过滤器,复合过滤器.

简单滤镜filter filtergraph就是只有1个输入和输出的滤镜,滤镜两边的数据都是同一类型的,可以理解为在非压缩数据帧到再次编码前简单附加了一步

复合滤镜-filter_complex filtergraph是那些不能简单描述为一个线性处理过程应用到一个流的情况,例如当过程中有多个输入和/或输出,或者输出流类型不同于输入时.

复合过滤器通常使用 -lavfi 或者 -filter_complex, 两者是等价的. 【这里有个容易混淆的 fflay -f lavfi 给 virtual device 提供输入】

filter_complex 有一些规则:

input 用 [file_index:stream_specifier] 表示 label, 可以在 -map 中引用;如果 stream_specifier 匹配多个 stream,使用第一个

没有 label 的input 会自动使用第一个没有被使用的 stream; 如果输出没有 label 会自动输出到第一个 output

详细的语法参考这里

_________ ______________| | | || decoded | | encoded data || frames | _ | packets ||_________| /||______________| __________ / simple _|| | / encoder filtergraph | filtered |/ | frames | |__________| _________| || input 0 | __________|_________| | | _________ /| output 0 | | | / |__________| _________ | complex | /| | | |/| input 1 |---->| filter ||_________| | | __________ /| graph | | | / | | | output 1 | _________ / |_________| |__________|| | /| input 2 |/|_________|

过滤器通常用于 filterchains(逗号分隔的过滤器序列) 和 filtergraphs(分号分隔的filterchains序列)。在filtergraphs中,可以使用表示所选filterchain输出的链接标签,并可以在以下的filtergraphs中使用。例如,我们希望将输入视频与hqdn3d过滤器输出的输出进行比较。如果没有filtergraphs,我们必须至少使用两个命令,例如:

# -vf <=> -filter:vffmpeg -i input.mpg -vf hqdn3d,pad=2*iw output.mp4ffmpeg -i output.mp4 -i input.mpg -filter_complex overlay=w compare.mp4

使用带有链接标签的filtergraph,就只有一个命令:

# 分割过滤器将输入分为2个输出标签[a]和[b],然后将[a]链接用作第二个filterchain的输入,它为标记[a]的比较创建了一个pad。[b]链接被用作第三个filterchain的输入,它创建一个标记为[b]的输出。最后一个filterchain使用[A]和[B]标签作为覆盖过滤器的输入,从而产生最终的比较。ffplay -i i.mpg -vf 'split[a][b];[a]pad=2*iw[A];[b]hqdn3d[B];[A][B]overlay=w'

下图是另一个例子: ffplay -f lavfi -i rgbtestsrc -vf "split[a][b];[a]pad=2*iw[1];[b]vflip[2];[1][2]overlay=w"

选择媒体流

默认情况下,ffmpeg把输入文件每种类型(视频、音频和字幕)仅仅采用一个流转换输出到输出文件中,就是把最好效果的流进行输出:对于视频就是质量最高的流,对于音频就是包含最多声道的,对于字幕则是第一个字幕轨道,如果有多个同型同率(同样类型,码率相同)则选用索引号最小的流。可以禁用默认设置,而采用-vn/-an/-sn/-dn 选项进行专门的指定排除,如果要进行完全的手动控制,则是以-map选项,它将禁止默认值而选用指定的配置. -map 选项的参数格式为 -map [-]input_file_id[:stream_specifier][?][,sync_file_id[:stream_specifier]] | [linklabel] (output), 举例:

-map 0选择所有类型的所有流。

-map i:v从文件中选择所有的视频流,用i (index), -map i:a选择所有的音频流,-map i:s选择所有字幕流,等等

特殊选项- - -vn, -sn分别排除所有音频、视频或字幕流

一般来说流的选择和流的处理无关【字幕除外】【codec 用于指定流的处理,如果没有指定,ffmepg 会选择默认的】,如果字幕 encoder 被指定了,第一个字幕流会被 include.

除了特定的-map选项,流指定符还与许多其他选项一起使用:

流的形式说明符

-codec:a:1 ac3 对 a:1 使用 ac3 codec, -codec: copy 或者 -codec copy 则对所有 stream 使用 codec copy

为了设置音频和视频的使用-b选项的比特率,我们可以使用命令: ffmpeg -i input.mpg -b:a 128k -b:v 1500k output.mp4

# 下面这个命令中 out1.mkv out2.wav 将包含 A.avi, B.mp4 中最佳的 video/audio 和第一个 subtitle# 而 out3.mov 只会有 B.mp4 中的 audio, 而且不会处理,只是 copyffmpeg -i A.avi -i B.mp4 out1.mkv out2.wav -map 1:a -c:a copy out3.mov# 下面的命令中 out1.mkv 只会有 audio/video 因为默认的字幕 encoder 是 Matroska muxer 是 text-based,但是 C.mkv 里面的的字幕是 image-based# 所以字幕不会被选择;而 out2.mkv 只有 video/subtitle 因为 audio 被 -an 操作排除了ffmpeg -i C.mkv out1.mkv -c:s dvdsub -an out2.mkv# 下面这个命令中 overlay 需要两个输入,但是没有指定,所以自动选择 A.avi 和 C.mkv 中的 video 生成 out1.mp4, 同时 out1.mp4 会有 A,C 中最佳# audio, 但是不会有字幕,因为 mp4 没有默认字幕 encoder,又没主动设置。out2.srt 将选择 A,C 中第一个 text-based 字幕流ffmpeg -i A.avi -i C.mkv -i B.mp4 -filter_complex "overlay" out1.mp4 out2.srt# 下面的命令使用 labeled filtergraph, 这里要注意, 对于 label outv1, outv2 都要**有且仅有一次的使用**,如果没有 label 默认输出到第一个输出# outv1, overlay, aresample 都会输出到 out1.mp4, -an 不会抑制 filtergraphs 的输出;out2.mkv 由 automatic stream selection 决定输出# out3.mkv 输入内容为 hue filter 的一份输出 B.mp4 的第一个 audioffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0,split=2[outv1][outv2];overlay;aresample" -map '[outv1]' -an out1.mp4 out2.mkv -map '[outv2]' -map 1:a:0 out3.mkv

Lavfi虚拟设备

Lavfi通常用于显示测试模式,例如带有命令的SMPTE条:

ffplay -f lavfi -i smptebars

这里 -f 的意思是强制输入输出格式,一般是通过后缀可以推断 其他经常使用的源是可以用命令显示的颜色源:

ffplay -f lavfi -i color=c=blue

颜色名称

一些视频过滤器和源有一个颜色参数,需要指定需要的颜色,并且有4种颜色规范的方法(默认值为黑色):

显示帮助和功能

FFmpeg工具有一个很大的控制台帮助,可以完整显示或关于特定元素 - 解码器,编码器等。ffmpeg -? or ffmpeg -h; ffmpeg -h long or ffmpeg -h full; ffmpeg –? topic or ffmpeg -h topic

例如,要显示关于FLV解码器的信息,我们可以使用以下命令:

ffmpeg -h decoder=flv

其他帮助

比特率/帧率/文件大小

帧率(频率)的介绍

帧速率是编码成视频文件的每秒帧数(FPS或fps),人眼需要至少约15 fps来观看连续运动。 帧率也称为帧频,其单位是赫兹(Hz),LCD显示器通常具有60 Hz的频率。

有两种帧速率 - 隔行(在fps编号后表示为i)和逐行(在FPS编号后表示为p)。在电视中使用隔行帧率

帧率设置

要设置视频帧速率,我们在输出文件之前使用-r选项,语法是: ffmpeg -i input -r fps output

另一种设置帧速率的方法是使用fps过滤器,这在过滤链中尤其有用. 语法为: fps=fps=number_of_frames

除了数值,设置帧率的两种方法都接受下一个预定义的文本值:

# 改变视频的帧率。avi文件从25到30 fpsffmpeg -i input.avi -r 30 output.mp4# 要更改剪辑的输入帧速率。mpg文件到值25ffmpeg -i clip.mpg -vf fps=fps=25 clip.webm# 设置帧速率为29.97 fpsffmpeg -i input.avi -r ntsc output.mpg

比特率

比特率是决定整体音频或视频质量的参数。 它规定了每时间单位处理的位数,在FFmpeg中,比特率以每秒位数表示。

比特率决定了存储1秒编码流的位数,它使用-b选项设置, -b【encoding,audio/video】, -ba 【encoding,audio】, -bt 【encoding,video】

比特率的类型:

可以设置输出文件大小为一个值,自动计算比特率: ffmpeg -i input.avi -fs 10MB output.mp4

根据比特率大概可以算出文件大小(不包括muxing开销和文件元数据等): file_size = (video_bitrate audio_bitrate) * time_in_seconds / 8

调整和伸缩视频

调整视频

输出视频的宽度和高度可以在输出文件名之前设置 -s 选项【等价于在 最后加了一个 filter scale】。视频分辨率以WxH格式输入,其中w为像素宽度,h为像素高度

-s 如果设置在输入之前,= video_size

视频帧大小也有一些预设值,比如 vga == 640x480, hd720=1280x720, sxga=1280x1024, hd1080=1920x1080

视频通常被调整为比来源更小的分辨率,这被称为下采样。在较小的尺寸中,一些细节将会丢失,这一事实解释了奈奎斯特-Shannon采样定理:为了完全重构采样信号,我们必须使用比信源频率高至少2倍的频率。 这意味着要将小细节保留在缩小的视频中,它们的原始尺寸必须高于缩放比例除以2。

另一个相关的命令为 -aspect 调整横纵比

# 下面两个命令等价ffmpeg -i input.avi -s 640x480 output.aviffmpeg -i input.avi -s vga output.avi#例如,800x600(SVGA)分辨率的视频包含2像素宽的细节。 当缩放到640x480(VGA)分辨率时,缩放比率为0.8,并且2像素再缩放为2像素:640 pixels / 800 pixels = 0.82 pixels * 0.8 = 1.6 ≈ 2 pixels# 但是当这个视频被缩放到160x120 (QQVGA)分辨率时,细节就丢失了:160 pixels / 800 pixels = 0.22 pixels * 0.2 = 0.4 ≈ 0 pixels

扩大滤波器

将视频调整为更大的帧大小比较少见, 用于平滑放大的源的特殊滤波器是super2xsai滤波器:

# 将128x96视频话放大到分辨率256x192像素ffmpeg -i phone_video.3gp -vf super2xsai output.mp4

高级缩放技能

要管理缩放过程开始的位置,可以直接使用缩放过滤器。scale=width:height[:interl={1|-1}]; 有一些变量可用,比如:

iw or in_w: 输入的宽度; ih or in_h: 输入的高度

a: 纵横比,与iw/ih相同。

sar: 输入样本纵横比,与dar/a相同;dar:输入显示纵横比,与*sar相同。

# 按比例缩放视频输入ffmpeg -i input.mpg -vf scale=iw/2:ih/2 output.mp4# 扩展到预定义的宽度或高度: 等比缩放ffmpeg -i input.avi -vf scale=400:400/a

裁剪视频

使用 video filter crop, 语法: crop=ow[:oh[:x[:y[:keep_aspect]]]]; 可用变量:

x, y: 对x的计算值(从左上角水平方向的像素个数)和y(垂直像素的数量),对每个帧进行评估,x的默认值为(iw - ow)/2, y的默认值为(ih - oh)/2

in_w, iw: 输入的宽度; in_h, ih: 输入的高度

out_w, ow: 输出(裁剪)宽度,默认值= iw; out_h, oh: 输出(裁剪)高度,默认值= ih

a: 纵横比,与iw/ih相同; sar: 输入样本比例; dar: 输入显示宽比,等于表达式a*sar

hsub, vsub: 水平和垂直的色度子样本值,对于像素格式yuv422p, hsub的值为2,vsub为1

n: 输入框的数目,从0开始

pos: 位置在输入框的文件中,如果不知道NAN

t: 时间戳以秒表示,如果输入时间戳未知

裁剪框中心:按照上面的命令说明,可以看出如果不设置 x.y 那么会自动设置中心进行剪裁,比如 ffmpeg -i input_file -vf crop=w:h output_file 会剪裁中间的 w:h 区域

自动检测裁剪区域: 使用 cropdetect 过滤器,语法为:cropdetect[=limit[:round[:reset]]], limit 参数表示对灰度值 < limit 的进行剪裁

填充视频

使用 filter pad, 语法为 pad=width[:height[:x[:y[:color]]]]

例子

ffplay -f lavfi -i testsrc -vf pad=380:360:30:30:pink -t 50# 从4:3到16:9的填充视频ffmpeg -i input -vf pad=ih*16/9:ih:(ow-iw)/2:0:color output# 从16:9到4:3的填充视频ffmpeg -i input -vf pad=iw:iw*3/4:0:(oh-ih)/2:color output

翻转和旋转视频

水平翻转, 使用 filter hflip, 语法: -vf hflip

垂直翻转, 使用 filter vlfip, 语法: -vf vflip

旋转, 使用 filter transpose, 语法: transpose={0, 1, 2, 3}, 参数含义见下面的 例子中的 help

例子

ffplay -f lavfi -i testsrc -vf hflip# 一个看 help 的例子> ffmpeg -h filter=transposeFilter transpose Transpose input video. slice threading supported Inputs: #0: default (video) Outputs: #0: default (video)transpose AVOptions: dir <int> ..FV....... set transpose direction (from 0 to 7) (default cclock_flip) cclock_flip 0 ..FV....... rotate counter-clockwise with vertical flip clock 1 ..FV....... rotate clockwise cclock 2 ..FV....... rotate counter-clockwise clock_flip 3 ..FV....... rotate clockwise with vertical flip passthrough <int> ..FV....... do not apply transposition if the input matches the specified geometry (from 0 to INT_MAX) (default none) none 0 ..FV....... always apply transposition portrait 2 ..FV....... preserve portrait geometry landscape 1 ..FV....... preserve landscape geometry

模糊,锐化和去噪

模糊使用 filter boxblur, 语法: boxblur=luma_r:luma_p[:chroma_r:chroma_p[:alpha_r:alpha_p]] filter expects 2 or 4 or 6 parameters, r =半径, p = 权重,程度,功率

另一个模糊 filter 为 smartblur, 语法: smartblur=luma_r:luma_s:luma_t[:chroma_r:chroma_s:chroma_t] r = radius, p = power, t = threshold

锐化使用 filterm, 语法: l_msize_x:l_msize_y:l_amount:c_msize_x:c_msize_y:c_amount all parameters are optional, if not set, the default is 5:5:1.0:5:5:0.0

降噪 可以使用过滤器 denoise3d, 它是mp过滤器的一部分, 语法: mp=denoise3d[=luma_spatial[:chroma_spatial[:luma_tmp[:chroma_tmp]]]]

另一个降噪过滤器: hqdn3d, 他是 denoise3d过滤器的高级版本,语法为 hqdn3d=[luma_spatial[:chroma_spatial[:luma_tmp[:chroma_tmp]]]]

使用 nr 选项也可以降噪,它的值是一个从0到100000的整数,其中0是默认值, 比如 ffplay -i input.avi -nr 500

overlay

overlay 使用 fliter overlay, 语法为 overlay[=x:y[[:rgb={0, 1}]] 参数x和y是可选的,其默认值为0 rgb参数是可选的,其值为0或1;这个 filter 的意思是在指定位置上覆盖第一个输入. 比如 ffmpeg -i input1 -i input2 -filter_complex overlay=x:y output

注意,不是使用-vf选项,而是使用-filter_complex选项, 因为此时有两个输入

如果希望 overlay 显示在某个时刻,可以使用 itsoffset: ffmpeg -i video_with_timer.mp4 -itsoffset 5 -i logo.png -filter_complex overlay timer_with_logo.mp4

# overlay 里面重要等变量为:# main_w or W主要输入宽度; main_h or H主要输入高度# overlay_w or woverlay输入宽度; overlay_h or hoverlay输入高度# 下面这个命令会把 overlay 放在右上角ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay=W-w pair2.mp4

为视频添加文字

添加文字使用 filter drawtext, 从文本文件或字符串在视频中添加文本,并使用各种参数进行修改。 文本从文本文件参数指定的文件中加载,或直接使用文本参数输入。 其他必需参数是指定选定字体的字体文件。 文本位置由x和y参数设置。语法为:drawtext=fontfile=font_f:text=text1[:p3=v3[:p4=v4[...]]] p3,p4 ...表示参数#3,参数#4等; 这个 filter 的参数比较多,可以用 ffmpeg -h filter=drawtext 查看

位置中使用 t 变量,就可以制造出运动的文字效果

ffplay -f lavfi -i color=white -vf drawtext=fontfile=/Library/Fonts/Baskerville.ttc:text=Welcome# 横向运动的文字ffmpeg -f lavfi -i color=orange -vf drawtext="text=hello:x=w-t*50:y=h-th:fontcolor=blue:fontsize=30" -t 50 test.mp4

编码解码

编解码的功能比较复杂,主要是编解码器的种类繁多,参数繁多;首先要了解文件格式 和 编解码器 的区别

文件格式 对应于 多媒体容器,是一种包装格式,使用 fmpeg -formats 可以看到所有支持的文件格式(容器),比如 mp4, mp3 等等

编解码器是编解码的算法类型,使用 ffmpeg -codecs 可以看到所有的编解码器,命令行上的编解码器是由-c或-codec选项指定的,语法是:-codec[:stream_specifier] codec_name

如果只更改容器并保留编解码器,我们可以使用-c copy或-c:a copy或-c:v copy选项:ffmpeg -i input.avi -q 1 -c copy output.mov

可以为输入和输出文件指定编解码器,如果输出包含多个流,则每个流可以使用不同的编解码器。 如果我们在没有编解码器的情况下指定输出格式,则ffmpeg会选择默认编解码器,比如 .avi 格式的默认编解码器为 mpeg4, .mkv/mov/mp4 格式的编解码器为 h264

参数非常多,用 ffmpeg -h encoder={name} 和 ffmpeg-formats 文档 来查看帮助

# 语法如下,用在 input 前面就是 decoder, 用在 output 前面就是 encoder-c[:stream_specifier] codec (input/output,per-stream)-codec[:stream_specifier] codec (input/output,per-stream)# 一个 stream 前面可能应用了很多 codec, 以 last matching c option 为准# 比如下面这个命令会 用 libx264 encode 第一个 video, libvorbis encode 第 137 个 audio, 其他 stream copy ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT

时间操作

一般时间都接受两种参数风格: [-]HH:MM:SS[.m…] 和 [-]S [.m…], 其中,HH 表示小时,MM 表示分钟,SS 或 S 表示秒数,m 表示毫秒.

如果要设置视频的时长【裁剪后面的】,可以使用 -t 参数控制时间或者 -frames 【-aframes <=> -frames:a 适用于 audio 同理有 -dframes/ -vframes】 参数控制帧数

想要从某个时间点开始记录输入文件 【裁剪前面的】,可以使用 -ss (seek from start)参数, 注意组合使用 -ss 和 -t 表示从 ss 开始输入 t 时间

输入流做延迟,使用 -itsoffset -map

使用 -timestamp 选项可以在视频中记录时间戳

时间戳和时间基

音频视频速度修改: 视频速度修改使用 setpts filter (set presentation timestamp), 语法为 setpts=expression; 音频速度改变使用 filter atempo

asyncts audio filter 可以使用时间戳来同步音频数据

ffmpeg -i music.mp3 -t 180 music_3_minutes.mp3ffmpeg -i video.avi -vframes 15000 video_10_minnutes.aviffmpeg -i input.avi -ss 10 output.mp4# 从 video.mpg 中保存第5分钟的部分ffmpeg -i video.mpg -ss 240 -t 60 clip_5th_minute.mpg# 音频比视频要快了 1.5 秒 做同步, 这里 -c 表示 -codec[:stream_specifier] codec <=> -c[:stream_specifier] codec (input/output,per-stream)ffmpeg -i input.mpv -map 0:v -map 0:a -itsoffset 1.5 -c:a copy -c:v copy output.mov# 视频快了 5 秒 做同步 ffmpeg -i input.mov -map 0:v -itsoffset 5 -map 0:a -c:a copy -c:v copy output.mov# 两个文件,将音频流延迟 3 秒ffmpeg -i v.mpg -itsoffset 3 -i a.mp3 -map 0:v:0 -map 1:a:0 output.mp4# 3 倍速来观看视频ffplay -f lavfi -i testsrc -vf setpts=PTS/3# 2 倍速来播放输入音频ffplay -i speech.mp3 -af atempo=2# 使用时间戳来同步 music.mpg 文件中的数据ffmpeg -i music.mpg -af asyncts=compensate=1 -f mpegts music.ts

数学函数

许多FFmpeg选项都需要数值作为参数,其中一些可以是表达式形式,可以包含算术运算符、常量和各种数学函数。函数通常用于音频和视频过滤器和源, 比如 aevalsrc【音频源】,boxblur/overlay/crop/drawtext/scale【视频过滤器】等等; 还可以使用一些内置多数学函数,比如: abs, asin(x), eq(x, y), gte(x, y), if(expr1, expr2), min(x, y), while(cond, expr) 等等

# 产生频率为523.251 Hz的C5音调(中音高C)的音调ffplay -f lavfi -i aevalsrc='sin(523.251*2*PI*t)'

元数据和字幕

媒体文件中的元数据包含艺术家,作者,日期,流派,发布者,标题等附加信息,不会显示在视频帧中。而字幕是文本数据,显示在视频帧底部附近,通常包含在单独的文件中,尽管一些容器文件格式(如VOB)支持包含字幕文件。

查看元数据: 使用 ffprobe, 或者 ffplay 的时候都会显示元数据

创建元数据: 使用 -metadata k1=v1 -metadata k2=v2

保存元数据到文件:-f ffmetadata; 加载文件元数据到文件 -i x -i y

删除元数据: -map_metadata -1

字幕:字幕也有很多格式,比如 ass, srt 等等,使用后缀可以识别出对应的编解码器 ssa/srt 进行编解码

一部分 filter 支持将字幕编码到视频流中,语法为 subtitles=filename[:original_size], 例子: ffmpeg -i video.avi -vf subtitles=titles.srt video.mp4

# 查看一个 mp3 文件的元数据> ffprobe '~/Downloads/Jack Johnson - Imagine.mp3'... 省略部分内容Input #0, mp3, from '~/Downloads/Jack Johnson - Imagine.mp3': Metadata: encoder : Lavf56.4.101 disc : 1 track : 11 artist : Jack Johnson comment : 163 key(Don't modify):L64FU3W4YxX3ZFTmbZ 8/UnVjCnqpKdEibASol9of8KaPX//btdBYF VVRkXkEDD/iGR355GeUXxh0IUGR/GwBNi9G4ezN6Z7cPYKcJ3G01aqRPkU1umKYjjZLXvNFMCMLrmf5mGqVQo hTaZlpidWU9kf8oTXfXHN4cj2PKPLh7HFCdJ/oKzLj3tB/BKqQJjZ1moy59PXmgevX6IGXydNfGHhxwts 3ZlZ/1FBko title : Imagine album : The Mango Tree # 新建元数据ffmpeg -i '~/Downloads/Jack Johnson - Imagine.mp3' -metadata "k1=v1" -metadata "k2=v2" -y ~/Downloads/test.mp3# 保存元数据到文件ffmpeg -i ~/Downloads/test.mp3 -f ffmetadata ~/Downloads/test.txt# 加载文件元数据到文件 ffmpeg -i ~/Downloads/test.txt -i ~/Downloads/test.mp3 ~/Downloads/test2.mp3# 删除元数据ffmpeg -i input.avi -map_metadata -1 output.mp4

下图不一定准确,可以参考一下常见的 predefined metadata 有哪些 key

图像处理

虽然FFmpeg工具的主要用途与音频和视频有关,但ffmpeg可以对各种图像格式进行解码和编码,并且许多图像相关任务可以快速完成

支持的格式包括: Y.U.V, BMP, GIF, JPG ....略

创建图像:

从视频截图:ffmpeg -i input -ss t image.type ss 表示从哪开始, t 表示 时刻,这是 ffmpeg 一致的参数

从视频截 gif: 直接转 .gif【todo 补充更多实用例子】

使用内置的视频源创建图像: color/ mptestsrc/ rgbtestsrc/ smptebars/ testsrc, 比如 color,使用的参数为 color[=c=clr[:d=time[:r=fps[:sar=value[:s=resolution]]]]]

抽帧: ffmpeg -i clip.avi frameM.jpg 【todo 补充更多实用例子】

调整大小,裁剪和填充图像: 和视频类似

翻转,旋转和叠加图像 和视频类似

图像类型之间的转换:ffmpeg -i image.type1 image.type2

从图像创建视频:

来自一个图片:ffmpeg -loop 1 -i photo.jpg -t 10 photo.mp4

来自多个图片:ffmpeg -f image2 -i img%d.jpg -r 25 video.mp4

# 截图ffmpeg -i in1.mp4 -ss 3 -frames:v 1 snap.jpg# gif ffmpeg -i in1.mp4 -pix_fmt rgb24 in1.gif# 从内置视频源生成图片,比如生成一个单色的图片ffmpeg -f lavfi -i color=c=#008080:s=728x90 -frames:v 1 leaderboard.jpg

数字音频

数字音频是一种技术,用于捕获、记录、编辑、编码和复制声音,这些声音通常由脉冲编码调制(PCM)进行编码。FFmpeg支持许多音频格式,包括AAC、MP3、Vorbis、WAV、WMA等

音频基础

音频量化: 由于人类听觉系统的生理限制,压力波的连续值可以用有限的一系列值代替, 使用二进制存储音频的位数称为 音频位深度, 量化常见的位深度有:

8 bit: 用于电话,旧设备

12 bit: DV(数字视频)的标准,用于数码相机等

14 bit: 用于NICAM压缩,电视立体声,等等

16 bit: 标准音频CD和DAT(数字音频磁带)

20 bit: 附加标准的超级音频CD和DVD音频

24 bit/32 bit: 略

音频采样:量化是纵坐标的表示,横坐标就是采样,采样常见的频率有:

8000 Hz: 用于电话、无线网络和麦克风等

11025/16000/22050/32000 HZ: 略

44100 HZ:音频CD标准,用于MPEG-1, PAL电视等

48000 HZ:专业使用标准费率,为消费者提供DV、DVD、数字电视等

96000 HZ: 标准的DVD-音频,蓝光光盘,HD DVD等

192000/352800 HZ:略

音频文件格式:分几类:

未压缩: ALAC/AU/BWF/PCM (raw, without header)/WAV (PCM)

无损压缩: AIFF (PCM)/ALS/ATRAC/FLAC/WavPack/WMA

有损压缩: AAC/AC-3/ AMR/ MP2, MP3/ Musepack/Speex/Vorbis (OGG)

音频操作

声音合成: 可以用内置的 音频源 aevalsrc 来创建声音, 语法为 aevalsrc=exprs[::options] exprs:是一个冒号分隔的表达式列表,每个新表达式都指定了新通道; options:键=值对的冒号分隔列表;

exprs 中可用: n: 评估样本的数量; t: 以秒为单位的时间,从0开始; s: 采样率;

options 重可用: c or channel_layout: 通道布局,通道数量必须等于表达式的数量; d or duration: max 持续时间,如果没有指定,或者是负数,音频将生成直到程序停止; n or nb_samples: 每个通道每个输出帧的样本数量,默认为1024个样本; s or sample_rate: 采样率,默认值为44100 Hz

使用-layout选项可以创建多声道声音

立体声的特殊类型是双耳音(节拍) - 两个频率差约30Hz或更小的音,两个音的频率必须低于1000Hz

音量设置: 使用 -vol [0-256], 如果值<1, 那么 output_volume = vol * input_volume, 如果有后缀 dB, output_volume = 10 ^(卷/ 20)* input_volume

混合多个声音: 使用语法 amix=inputs=ins[:duration=dur[:dropout_transition=dt]]

将立体声调至单声道,环绕立体声:使用 pan=layout:channel_def[:channel_def[:channel_def...]]

音频分析: 使用 filter ashowinfo, 可以对每一个音频帧显示参数信息

调整耳机听音: 使用 filter earwax

-map_channel 选项可以更改各种音频参数,其语法为: -map_channel [in_file_id.stream_spec.channel_id|-1][:out_file_id.stream_spec]

将两个音频流合并到一个多通道流: 使用 filter amerge

音频流转发与缓冲buffet order控制: 使用 filter astreamsync

# 产生音符A4,音高的调优标准,将tone_height设置为440 Hz:ffplay -f lavfi -i aevalsrc='sin(440*2*PI*t)' -t 2# 多声道【立体声】ffplay -f lavfi -i aevalsrc='sin(495*2*PI*t)|cos(505*2*PI*t):c=FL FR'# 音频分析ffmpeg -report -i ~/Downloads/test.mp3 -af ashowinfo -f null /dev/null

预设编解码器

作用是预设一些编解码器选项的默认值,简化 ffmpeg 的使用【选项实在太多了】

预设文件的格式见下面的例子,请查看文档,使用方式为: ffmpeg -i input -fpre mpeg2.ffpreset -q 1 MPEG2_video.mpg

还有一个 -target 命令,比如 -target vcd 会自动为输出设置 bitrate, codecs, buffer sizes 等参数

vcodec=flv# 视频编解码器, 必填唯一b:v=300k# 视频比特率g=160# 图片组大小mbd=2# macroblock决策算法flags= aic mv0 mv4# aic - h263高级内部编码;总是尝试使用mv=<0,0>;mv4 -使用macroblock的4运动矢量trellis=1# rate失真优化量化ac=1# 声道数ar=22050# 音频采样率b:a=56k# 音频比特率

隔行视频

隔行视频标准

隔行扫描是在单色模拟电视开发过程中发明的技术,可以消除旧CRT显示器的闪烁。 视频帧被水平划分为规则线,然后划分为2个场,其中第一个场包含奇数行,第二个场包含偶数行。

NTSC, PAL和SECAM电视标准 见下表

隔行视频操作

略,参考 https://www.jianshu.com/p/fb051e1457c2

麦克风和摄像头

略, https://www.jianshu.com/p/95012f6696e0

颜色修正

略,https://www.jianshu.com/p/f2a94de1c26a

高级

使用 filter concat 连接视频/音频,其中所有片段必须具有相同数量的每种类型的流,例如1个音频和1个视频,或2个音频和1个视频,等等,语法:concat=a=a_streams:v=v_streams:n=segments[:unsafe]

使用 filter delogo 移除 logo, 它通过对周围像素的简单插值来隐藏一个电视台的标志。用户设置一个覆盖该徽标的矩形,它通常会消失(但在某些情况下,标识更明显)。语法: delogo=x=0:y=0:w=width:h=height[:t=band:show={0,1}]

使用 filter deshake 修正视频的抖动,语法: deshake=x:y:w:h:rx:ry:edge:blocksize:contrast:search:filename

使用 filter aselect/select 选择指定的帧进行输出,语法: select=expression

使用 filter setdar/setsar 来设置纵横比,语法: setdar[=r=aspect_ratio[:max=number]]; setdar[=aspect_ratio[:number]]

使用 filtergraph

常用参数和例子

-f fmt (input/output) :指定输入或者输出文件格式。常规可省略而使用依据扩展名的自动指定-c:指定编码器-c copy:直接复制,不经过重新编码(这样比较快)-c:v:指定视频编码器-c:a:指定音频编码器-i:指定输入文件-an:去除音频流-vn: 去除视频流-preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。-y:不经过确认,输出时直接覆盖同名文件。-c[:stream_specifier] codec (input/output,per-stream)-codec[:stream_specifier] codec (input/output,per-stream)为特定的文件选择编/解码模式,对于输出文件就是编码器,对于输入或者某个流就是解码器。选项参数(后面的那个)中codec是编解码器的名字,或者是copy(仅对输出文件)则意味着流数据直接复制而不再编码// 在输出文件中第2视频流按libx264编码,第138音频流按libvorbis编码,其余都直接复制输出ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT-t duration (input/output):限制输入/输出的时间。如果是在-i前面,就是限定从输入中读取多少时间的数据;如果是用于限定输出文件,则表示写入多少时间数据后就停止-ss position (input/output): 当在-i前时,表示定位输入文件到position指定的位置。注意可能一些格式是不支持精确定位的,所以ffmpeg可能是定位到最接近position(在之前)的可定位点。当用于输出文件时,会解码丢弃position对应时间码前的输入文件数据-dn (input/output)As an input option, blocks all data streams of a file from being filtered or being automatically selected or mapped for any output. See -discard option to disable streams individually.As an output option, disables data recording i.e. automatic selection or mapping of any data stream. For full manual control see the -map option.-dframes number (output):设定指定number数据帧到输出文件,这是-frames:d的别名。frames[:stream_specifier] framecount (output,per-stream):在指定计数帧后停止写入数据。-q[:stream_specifier] q (output,per-stream)-qscale[:stream_specifier] q (output,per-stream)使用固定的质量品质(VBR)。用于指定q|qscale编码依赖。如果qscale没有跟stream_specifier则只适用于视频。其中值q取值在0.01-255,越小质量越好-filter[:stream_specifier] filtergraph (output,per-stream):创建一个由filtergraph指定的滤镜,并应用于指定流。// 视频(video)选项-vframes number (output):设置输出文件的帧数,是-frames:v的别名-r[:stream_specifier] fps (input/output,per-stream):设置帧率(一种Hz值,缩写或者分数值)-s[:stream_specifier] size (input/output,per-stream):设置帧的尺寸。-aspect[:stream_specifier] aspect (output,per-stream):指定视频的纵横比(长宽显示比例)-vn (output):禁止输出视频-vcodec codec (output):设置视频编码器,这是-codec:v的一个别名// OPTIONS FOR SETTING QUALITY-b:v or -b:a to set bitrate // e.g., -b:v 1000K = 1000 kbit/s, -b:v 8M = 8 Mbit/s-q:v or -q:a to set fixed-quality parameter //e.g., -q:a 2 for native AAC encoder// Examples of encoder-specific options:-crf to set Constant Rate Factor for libx264/libx265-vbr to set constant quality for FDK-AAC encoder// Different kinds of rate controlCBR/VBR/CQP..... //Rate depends on content characteristics// 音频选项-aframes number (output):设置number音频帧输出,是-frames:a的别名-ar[:stream_specifier] freq (input/output,per-stream):设置音频采样率。默认是输出同于输入。对于输入进行设置,仅仅通道是真实的设备或者raw数据分离出并映射的通道才有效。对于输出则可以强制设置音频量化的采用率。-aq q (output):设置音频品质(编码指定为VBR),它是-q:a的别名。-ac[:stream_specifier] channels (input/output,per-stream):设置音频通道数。默认输出会有输入相同的音频通道。对于输入进行设置,仅仅通道是真实的设备或者raw数据分离出并映射的通道才有效。-an (output):禁止输出音频-acode codec (input/output):设置音频解码/编码的编/解码器,是-codec:a的别名// 字幕选项-scodec codec (input/output):设置字幕解码器,是-codec:s的别名。

例子

// Transcoding from one codec to another (e.g. H.264 using libx264):ffmpeg -i <input> -c:v libx264 output.mp4// Transmuxing from one container/format to another – without re-encoding:ffmpeg -i input.mp4 -c copy output.mkv// Cut a video from timestamp <start> for <duration>, or until <end>:ffmpeg -ss 00:01:50 -i <input> -t 10.5 -c copy <output>ffmpeg -ss 2.5 -i <input> -to 10 -c copy <output>// 使用 SPEED/QUALITY PRESETS IN X264 预置 presetffmpeg -i <input> -c:v libx264 -crf 23 -preset ultrafast -an output.mkvffmpeg -i <input> -c:v libx264 -crf 23 -preset medium -an output.mkvffmpeg -i <input> -c:v libx264 -crf 23 -preset veryslow -an output.mkv// map input streams to output, e.g. to add audio to a video:ffmpeg -i input.mp4 -i input.m4a -c copy -map 0:v:0 -map 1:a:0 output.mp4// scale - Scale to 320×240:ffmpeg -i <input> -vf "scale=w=320:h=240" <output>// paddingffmpeg -i <input> -vf "pad=1920:1080:(ow-iw)/2:(oh-ih)/2" <output>// Simple fade-in and fade-out at a specific time for a specific duration.ffmpeg -i <input> -filter:v "fade=t=in:st=0:d=5,fade=t=out:st=30:d=5" <output>// Complex system for printing text on videoffmpeg -i <input> -vf drawtext="text='Test Text':x=100:y=50:fontsize=24:fontcolor=yellow:box=1:boxcolor=red" <output>// Decode three video/audio streams and append to one another:ffmpeg -i <input1> -i <input2> -i <input3> -filter_complex "[0:0][0:1][1:0][1:1][2:0][2:1]concat=n=3:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" <output> // Show a watermark in the top left corner between seconds 1 and 2 onlyffmpeg -i <video> -i <watermark> -filter_complex "[0:v][1:v]overlay=10:10:enable='between(t,1,2)'[outv]" -map "[outv]" <output>