1.视频音频格式转换
Ffmpeg能使用任何支持的格式和协议作为输入:
*比如你可以输入YUV文件:ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
它将要使用如下文件:
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V,等等…
*你能输入原始的YUV420P文件:ffmpeg -i /tmp/test.yuv /tmp/out.avi
原始的YUV420P文件包含原始的YUV极性,每帧以Y平面开始,跟随U和V平面,它们是Y平面水平垂直的一半分辨率
*你能输出原始的YUV420P文件
ffmpeg -i mydivx.avi -o hugefile.yuv
*你能设置几个输入文件和输出文件
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg 上面的命令行转换音频文件a.wav和原始的YUV 视频文件 a.yuv到mpeg文件a.mpeg
*你也能同时转换音频和视频
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
上面的命令行转换a.wav的采样率到22050HZ并编码为mpeg音频
*你也能同时编码到几种格式并且在输入流和输出流之间建立映射
ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0
上面的命令行转换一个64Kbits 的a.wav到128kbits的a.mp2 ‘-map file:index’在输出流的顺序上定义了那一路输入流是用于每一个输出流的,
转码解密的VOB:
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi
上面的命令行将vob的文件转化成avi文件,mpeg4的视频和mp3的音频。注意命令中使用了B帧,所以mpeg4流是divx5兼容的。GOP大小是300意味着29.97帧频下每10秒就有INTRA帧。该映射在音频语言的DVD转码时候尤其有用
2. Ffmpeg使用语法
ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
如果没有输入文件,那么视音频捕捉就会起作用。
作为通用的规则,选项一般用于下一个特定的文件。如果你给 –b 64选项,改选会设置下一个视频速率。对于原始输入文件,格式选项可能是需要的。
缺省情况下,ffmpeg试图尽可能的无损转换,采用与输入同样的音频视频参数来输出。
3.选项
a) 通用选项
-L license
-h 帮助
-fromats 显示可用的格式,编解码的,协议的。。。
-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]的格式也支持
b) 视频选项
-b bitrate 设置比特率,缺省200kb/s
-r fps 设置帧频 缺省25
-s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:
Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
-aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777
-croptop size 设置顶部切除带大小 像素单位
-cropbottom 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 bitreate 设置最小视频码率容忍度
-bufsize size 设置码率控制缓冲区大小
-vcodec codec 强制使用codec编解码方式。 如果用copy表示原始编解码数据必须被拷贝。
-sameq 使用同样视频质量作为源(VBR)
-pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率
-passlogfile file 选择两遍的纪录文件名为file
-
c)高级视频选项
-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的算法 可用的有 0 FF_DCT_AUTO 缺省的DCT 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC
-idct_algo algo 设置idct算法。可用的有 0 FF_IDCT_AUTO 缺省的IDCT 1 FF_IDCT_INT 2 FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC 9 FF_IDCT_SH4 10 FF_IDCT_SIMPLEARM
-er n 设置错误残留为n 1 FF_ER_CAREFULL 缺省 2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE
-ec bit_mask 设置错误掩蔽为bit_mask,该值为如下值的位掩码 1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled)
-bf frames 使用frames B 帧,支持mpeg1,mpeg2,mpeg4
-mbd mode 宏块决策 0 FF_MB_DECISION_SIMPLE 使用mb_cmp 1 FF_MB_DECISION_BITS 2 FF_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 包括了模块名和参数,用空格分开
D)音频选项
-ab bitrate 设置音频码率
-ar freq 设置音频采样率
-ac channels 设置通道 缺省为1
-an 不使能音频纪录
-acodec codec 使用codec编解码
E)音频/视频捕获选项
-vd device 设置视频捕获设备。比如/dev/video0
-vc channel 设置视频捕获通道 DV1394专用
-tvstd standard 设置电视标准 NTSC PAL(SECAM)
-dv1394 设置DV1394捕获
-av device 设置音频设备 比如/dev/dsp
F)高级选项
-map file:stream 设置输入流映射
-debug 打印特定调试信息
-benchmark 为基准测试加入时间
-hex 倾倒每一个输入包
-bitexact 仅使用位精确算法 用于编解码测试
-ps size 设置包大小,以bits为单位
-re 以本地帧频读数据,主要用于模拟捕获设备
-loop 循环输入流。只工作于图像流,用于ffserver测试
先从ffmpeg开始。
http://ffmpeg.sourceforge.net上有说明,音视频的分离,转换,解码的完全解决方案。
其中最重要的就是libavcodec库。它被mplayer或者xine使用作为解码器。还有,国内比较流行的播放器影音风暴或MyMPC的后端ffdshow也是使用ffmpeg的解码库的。
ffmpeg包括一组软件,ffmpeg用于对媒体文件进行处理,ffserver是一个http的流媒体服务器,ffplay是一个基于SDL的简单播放器。两个库文件libavcodec和libavformat。
ffmpeg作为媒体文件处理软件,基本用法如下:
ffmpeg -i INPUTfile [OPTIONS] OUTPUTfile
输入输出文件通常就是待处理的多媒体文件了。可以是纯粹的音频文件,纯粹的视频文件,或者混合的。
大部分常见的格式都能够“通杀”。象常见的各种mpeg,AVI封装的DIVX和Xvid等等
具体的格式支持列表可以使用ffmpeg -formats查看或直接查阅文档。
另:由于Linux把设备视为文件,因此-i选项后可以跟设备名。比如DV,视频卡,光驱或者其它的各类设备。
输出的内容通过Options调整。列出几个主要的选项
-vcodec 视频流编码方式
-b 视频流码率(默认只有200k,一般都需要手动设置,具体的数值视codec选择而定)
-r 视频流帧数(一般说来PAL制式通常用25,NTSC制式通常用29)
-s 视频解析度(分辨率,也要视codec和你的需要而定。通常改变某个视频流的解析度是很耗费CPU的事情。另:具体写法使用“数字x数字”的形式。中间是小写字母“x”,这个用过mplayer的应该都知道)
-t 处理持续时间。
-acodec 音频流编码方式
-ab 音频流码率(默认是同源文件码率,也需要视codec而定)
-ar 音频流采样率(大多数情况下使用44100和48000,分别对应PAL制式和NTSC制式,根据需要选择)
还有些可能需要用到的选项如
-vn和-an分别是屏蔽视频流和屏蔽音频流,分别对源文件处理一次即可得到分离的音频和视频
-author -title分别是设置媒体文件的作者和title
-f选项是强制使用某种格式
-target type是使用预置的格式转换(可以转成dvd,vcd或svcd)
除此之外还有些更高级的选项,如设定vbr,或设定high quality,或者设定vbr的buff和max/min码率,象一般我们自用的dvd抓轨啦,DV转vcd或dvd啦,网上下载的电影转成vcd或dvd都不一定需要用到它们。
具体的使用方法在man里面有介绍。简单明了。
少许使用经验:
1:ffmpeg对于rm的处理能力实在不敢恭维。也许是因为我主要使用二进制包安装的缘故,对于Real媒体格式只能处理老式的RV8编码的格式。而且效果不佳。
2:格式转换是一件很耗费CPU资源的事情。虽说ffmpeg已经比WinAVI啦,TmpgEnc这些win下的非专业级视频处理软件做的好些了。毕竟我们可以把ffmpeg运行的时候放到后台。
3:ffmpeg不是万能的,虽说支持的格式很多,但是如果你不是用的最新CVS出来的版本,可能碰上某些古怪的媒体文件就要郁闷。
4:ffmpeg全部是命令行操作。哪位达人写个GUI前端出来就可以让不少菜鸟脱离苦海了。还有就是不能批量处理,但是这个可以用shell帮忙解决。
转自:http://docs.google.com/View.aspx?docid=ajf3xsjz9vhb_bdht5mzm2vsx4
分享到:
相关推荐
FFMPEG 功能和参数 1 FFMPEG 是一个功能强大的多媒体处理工具,可以进行视频和音频的格式转换、编解码、流媒体处理等。下面是 FFMPEG 的一些基本功能和参数。 一、视频音频格式转换 FFMPEG 可以使用任何支持的...
在本文中,我们将深入探讨FFmpeg的核心功能,特别是针对FLV格式的转换和截图操作,以及如何理解和使用其参数。 1. **FFmpeg的基本用法** FFmpeg的命令格式通常为`ffmpeg [全局选项] -i 输入文件 [输出选项] 输出...
本文将详细解析`ffmpeg`命令行参数及其用法,帮助读者更好地理解和运用这款强大的工具。 #### 帮助命令 - `-h` 或 `--printbasicoptions`:显示基本选项的帮助信息。 - `-hlong` 或 `--printmoreoptions`:显示更...
本篇文章将深入解析FFmpeg的最全命令参数,帮助你更好地理解和运用这个强大的工具。 1. **基本命令结构** FFmpeg的基本命令格式如下: ``` ffmpeg [全局选项] -i 输入文件 [输入选项] [输出文件] [输出选项] ``` ...
FFmpeg是一个强大的多媒体框架,它提供了从视频录制、转换到流处理等多种功能。通过命令行中使用特定的滤镜命令,FFmpeg可以对视频和音频进行各种后期处理。本知识点将重点介绍FFmpeg中常用的滤镜命令及其参数,并...
- **-h 帮助**:展示ffmpeg的使用帮助,包括所有可使用的选项及其功能简介,是初学者入门的好帮手。 - **-formats**:列出所有支持的输入和输出格式,包括编解码器和协议,对于理解ffmpeg支持的能力范围极为关键。 ...
在Unity中集成FFmpeg,可以扩展游戏或应用的多媒体功能,例如实现实时视频播放和处理。 首先,FFmpeg库提供了丰富的编解码器支持,包括H.264、VP9等主流视频编码格式和AAC、Opus等音频编码格式。这些编解码器对于...
首先,我们需要理解FFmpeg的核心功能。FFmpeg能够执行以下操作: 1. 视频和音频编码/解码:支持多种格式,如MP4、AVI、MKV、MP3、AAC等。 2. 转换视频和音频格式:可以将一种格式的文件转换为另一种格式。 3. 视频...
FFmpeg 是一个强大的开源多媒体处理工具,它支持各种视频、音频格式的编码、解码、转换和流化。在C#编程中,我们可以通过调用FFmpeg的命令行工具FFmpeg.exe来实现视频处理功能,比如视频截图。下面将详细介绍如何在...
在Android应用中,可以创建一个`compressVideo`方法,接受输入视频路径、输出路径和压缩参数,然后调用JNI方法执行FFmpeg命令。注意,这只是一个简单的示例,实际应用中需要处理更多的边界情况和异常。 通过上述...
它支持多种格式的编码、解码、转换、流媒体和视频编辑功能。在音视频压缩处理中,FFmpeg提供了丰富的参数选项,允许用户根据需求定制化处理过程。以下是对FFmpeg主要参数的详细说明: 1. **输入文件和输出文件** -...
8. **版本差异**:FFmpeg 6.1和4.0.2之间的差异主要体现在新功能、性能优化和错误修复上。新版本可能会增加对新编码格式的支持,改进解码效率,或者修复已知问题。开发者应根据项目需求和设备兼容性选择合适版本。 ...
FFmpeg是一款强大的开源多媒体处理工具,它支持...FFmpeg的强大在于其灵活性和丰富的功能,通过熟练掌握这些参数和技巧,可以应对各种视频处理任务。在实际应用中,根据具体场景选择合适的参数组合,以达到最佳效果。
然而,针对这一需求,有一些社区或开发者提供了增强版的FFmpeg,如我们这里提到的“ffmpeg全功能版本”,它通过额外的DLL动态链接库文件扩展了对RM和RMVB的支持。 RM(RealMedia)和RMVB(RealMedia Variable Bit...
FFmpeg 提供了大量的命令行参数和选项,如 `-i` 用于指定输入文件,`-c` 用于指定编码器,`-vf` 用于设置视频滤镜,`-ar` 和 `-framerate` 分别调整音频采样率和视频帧率。熟练掌握这些参数能够帮助你更精确地控制...
更高级的方法是使用Java库,如JNA(Java Native Access)或者Java FFmpegWrapper,它们提供了友好的API来调用FFmpeg功能,简化了操作,比如设置视频编码器、比特率、分辨率等。 详细文档通常会涵盖如何配置FFmpeg...
FFmpeg 命令行参数示例 FFmpeg 是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用 LGPL 或 GPL 许可证(依据你选择的组件)。...这些示例展示了 FFmpeg 的强大功能,可以满足各种视频和音频处理需求。
FFmpeg是一个开源项目,提供了一整套音频和视频处理工具,包括编码、解码、转码、流媒体处理等功能。它支持大量的编码格式和协议,如H.264、VP9、AAC、Opus等,并且能够处理各种容器格式如MP4、MKV、AVI等。FFmpeg的...
FFmpeg是一款强大的开源多媒体处理工具,它包含了音视频编解码、封装格式转换、流媒体处理等多种功能。在本项目中,我们将探讨如何利用FFmpeg获取网络摄像头的数据并进行解码播放,以此来理解FFmpeg在实时视频处理中...