ffmpeg 常用命令汇总
part 1:
经常用到ffmpeg 做一些视频数据的处理转换等,用来做测试,今天总结了一下,参考了网上部分朋友的经验,一起在这里汇总了一下,有需要的朋友可以收藏测试一下,有问题欢迎在下面回帖交流,谢谢;by ternence.hsu)
1、ffmpeg使用语法
命令格式: ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件] ffmpeg [[options][`-i' input_file]]... {[options] output_file}... 1、参数选项: (1) -an: 去掉音频 (2) -acodec: 音频选项, 一般后面加copy表示拷贝 (3) -vcodec:视频选项,一般后面加copy表示拷贝 2、格式: (1) h264: 表示输出的是h264的视频裸流 (2) mp4: 表示输出的是mp4的视频 (3)mpegts: 表示ts视频流 如果没有输入文件,那么视音频捕捉(只在Linux下有效,因为Linux下把音视频设备当作文件句柄来处理)就会起作用。作为通用的规则,选项一般用于下一个特定的文件。如果你给 –b 64选项,改选会设置下一个视频速率。对于原始输入文件,格式选项可能是需要的。缺省情况下,ffmpeg试图尽可能的无损转换,采用与输入同样的音频视频参数来输出。(by ternence.hsu) |
2、视频转换
H264视频转ts视频流 ffmpeg -i test.h264 -vcodec copy -f mpegts test.ts H264视频转mp4 ffmpeg -i test.h264 -vcodec copy -f mp4 test.mp4 ts视频转mp4 ffmpeg -i test.ts -acodec copy -vcodec copy -f mp4 test.mp4 mp4视频转flv ffmpeg -i test.mp4 -acodec copy -vcodec copy -f flv test.flv 转换文件为3GP格式 ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp 转换文件为3GP格式 v2 ffmpeg -y -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128 -r 15 test.3gp 使用 ffmpeg 编码得到高质量的视频 ffmpeg.exe -i "D:\Video\Fearless\Fearless.avi" -target film-dvd -s 720x352 -padtop 64 -padbottom 64 -maxrate 7350000 -b 3700000 -sc_threshold 1000000000 -trellis -cgop -g 12 -bf 2 -qblur 0.3 -qcomp 0.7 -me full -dc 10 -mbd 2 -aspect 16:9 -pass 2 -passlogfile "D:\Video\ffmpegencode" -an -f mpeg2video "D:\Fearless.m2v" 转换指定格式文件到FLV格式 ffmpeg.exe -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv ffmpeg.exe -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv 转码解密的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转码时候尤其有用,同时编码到几种格式并且在输入流和输出流之间建立映射) 转换文件为3GP格式 ffmpeg -i test.avi -y -b 20 -s sqcif -r 10 -acodec amr_wb -ab 23.85 -ac 1 -ar 16000 test.3gp (如果要转换为3GP格式,则ffmpeg在编译时必须加上–enable-amr_nb –enable-amr_wb,详细内容可参考:转换视频为3GPP格式) 转换文件为MP4格式(支持iPhone/iTouch) ffmpeg -y -i input.wmv -f mp4 -async 1-s 480x320 -acodec libfaac -vcodec libxvid -qscale 7 -dts_delta_threshold 1 output.mp4 ffmpeg -y -i source_video.avi input -acodec libfaac -ab 128000 -vcodec mpeg4 -b 1200000 -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4 将一段音频与一段视频混合 ffmpeg -i son.wav -i video_origine.avi video_finale.mpg 将一段视频转换为DVD格式 ffmpeg -i source_video.avi -target pal-dvd -ps 2000000000 -aspect 16:9 finale_video.mpeg (target pal-dvd : Output format ps 2000000000 maximum size for the output file, in bits (here, 2 Gb) aspect 16:9 : Widescreen) 转换一段视频为DivX格式 ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi Turn X images to a video sequence ffmpeg -f image2 -i image%d.jpg video.mpg (This command will transform all the images from the current directory (named image1.jpg, image2.jpg, etc...) to a video file named video.mpg.) Turn a video to X images ffmpeg -i video.mpg image%d.jpg (This command will generate the files named image1.jpg, image2.jpg, ... ;The following image formats are also availables : PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI.) 使用ffmpeg录像屏幕(仅限Linux平台) ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024x768 ~/test.avi (-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,-s 1024×768 指录制视频的大小为 1024×768。录制的视频文件为 test.avi,将保存到用户主目录中;如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。) 重新调整视频尺寸大小(仅限Linux平台) ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi 把摄像头的实时视频录制下来,存储为文件(仅限Linux平台) ffmpeg -f video4linux -s 320*240 -r 10 -i /dev/video0 test.asf 使用ffmpeg压制H.264视频 ffmpeg -threads 4 -i INPUT -r 29.97 -vcodec libx264 -s 480x272 -flags +loop -cmp chroma -deblockalpha 0 -deblockbeta 0 -crf 24 -bt 256k -refs 1 -coder 0 -me umh -me_range 16 -subq 5 -partitions parti4x4+parti8x8+partp8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec libfaac -ab 128k -ar 48000 -ac 2 OUTPUT (使用该指令可以压缩出比较清晰,而且文件转小的H.264视频文件) |
3、网络推送
udp视频流的推送 ffmpeg -re -i 1.ts -c copy -f mpegts udp://192.168.0.106:1234 |
4、视频拼接
裸码流的拼接,先拼接裸码流,再做容器的封装 ffmpeg -i "concat:test1.h264|test2.h264" -vcodec copy -f h264 out12.h264 |
5、图像相关
截取一张352x240尺寸大小的,格式为jpg的图片 ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg 把视频的前30帧转换成一个Animated Gif ffmpeg -i test.asf -vframes 30 -y -f gif a.gif 截取指定时间的缩微图,-ss后跟的时间单位为秒 ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg |
6、音频处理
转换wav到mp2格式 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’在输出流的顺序上定义了哪一路输入流是用于每一个输出流的。) |
7、切割ts分片
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 6 -hls_time 5 output1.m3u8
============================================================================
part 2:
一、ffmpeg命令详解
ffmpeg非常强大,轻松几条命令就可以完成你的工作。
把darkdoor.[001-100].jpg序列帧和001.mp3音频文件利用mpeg4编码方式合成视频文件darkdoor.avi:
$ ffmpeg -i 001.mp3 -i darkdoor.%3d.jpg -s 1024x768 -author skypp -vcodec mpeg4 darkdoor.avi
ffmpeg还支持mov格式:
$ ffmpeg -i darkdoor.%3d.jpg darkdoor.mov
要查看你的ffmpeg支持哪些格式,可以用如下命令:
$ ffmpeg -formats | less
还可以把视频文件导出成jpg序列帧:
$ ffmpeg -i bc-cinematic-en.avi example.%d.jpg
debian下安装ffmpeg很简单:
#apt-get install ffmpeg
######################################
下面是转来的使用说明,慢慢研究吧,嘿嘿
######################################
ffmpeg使用语法
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使用语法
Ffmpeg使用语法
ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
如果没有输入文件,那么视音频捕捉(只在Linux下有效,因为Linux下把音视频设备当作文件句柄来处理)就会起作用。作为通用的规则,选项一 般用于下一个特定的文件。如果你给 –b 64选项,改选会设置下一个视频速率。对于原始输入文件,格式选项可能是需要的。缺省情况下,ffmpeg试图尽可能的无损转换,采用与输入同样的音频视 频参数来输出。
ffmpeg转换所涉及到的选项较多,可参考ffmpeg选项详解。
ffmpeg支持多种文件格式和多种音频、视频编码器,可参考ffmepg格式详解,(附:常见视频文件格式详解)
视频文件截图
- 截取一张352x240尺寸大小的,格式为jpg的图片
ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg
- 把视频的前30帧转换成一个Animated Gif
ffmpeg -i test.asf -vframes 30 -y -f gif a.gif
- 截取指定时间的缩微图
ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg
-ss后跟的时间单位为秒
- 转换文件为3GP格式
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
或
ffmpeg -y -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128 -r 15 test.3gp
视频格式转换
- 如何使用 ffmpeg 编码得到高质量的视频
ffmpeg.exe -i "D:\Video\Fearless\Fearless.avi" -target film-dvd -s 720x352 -padtop 64 -padbottom 64 -maxrate 7350000 -b 3700000 -sc_threshold 1000000000 -trellis -cgop -g 12 -bf 2 -qblur 0.3 -qcomp 0.7 -me full -dc 10 -mbd 2 -aspect 16:9 -pass 2 -passlogfile "D:\Video\ffmpegencode" -an -f mpeg2video "D:\Fearless.m2v"
ffmpeg.exe -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv ffmpeg.exe -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv
- 转码解密的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转码时候尤其有用。
- 同时编码到几种格式并且在输入流和输出流之间建立映射
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’在输出流的顺序上定义了哪一路输入流是用于每一个输出流的。
- 转换文件为3GP格式
ffmpeg -i test.avi -y -b 20 -s sqcif -r 10 -acodec amr_wb -ab 23.85 -ac 1 -ar 16000 test.3gp
注:如果要转换为3GP格式,则ffmpeg在编译时必须加上–enable-amr_nb –enable-amr_wb,详细内容可参考:转换视频为3GPP格式
屏幕录制
- 使用ffmpeg录像屏幕
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024x768 ~/test.avi
:其中,-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,-s 1024×768 指录制视频的大小为 1024×768。录制的视频文件为 test.avi,将保存到用户主目录中
如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。
- 重新调整视频尺寸大小
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi
注:ffmpeg的屏幕录制功能只能在Linux环境下有效。
视频采集
- 把摄像头的实时视频录制下来,存储为文件
ffmpeg -f video4linux -s 320*240 -r 10 -i /dev/video0 test.asf
三、ffmepg使用
各种转换例子见:
FFmpeg Howto
程序下载:
Unofficial FFmpeg Win32 Builds(需要使用代理访问)
或:
FFMPEG FULL SDK V3.0
The generic syntax is:
ffmpeg [[infile options][`-i' infile]]… {[outfile options] outfile}…
As a general rule, options are applied to the next specified file. Therefore, order is important, and you can have the same option on the command line multiple times. Each occurrence is then applied to the next input or output file.
* To set the video bitrate of the output file to 64kbit/s:ffmpeg -i input.avi -b 64k output.avi
* To force the frame rate of the input and output file to 24 fps:
ffmpeg -r 24 -i input.avi output.avi
* To force the frame rate of the output file to 24 fps:
ffmpeg -i input.avi -r 24 output.avi
* To force the frame rate of input file to 1 fps and the output file to 24 fps:
ffmpeg -r 1 -i input.avi -r 24 output.avi
The format option may be needed for raw input files.
By default, FFmpeg tries to convert as losslessly as possible: It uses the same audio and video parameters for the outputs as the one specified for the inputs.
转换文件为3GP格式ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
或ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp
转换指定格式文件到FLV格式
ffmpeg.exe -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv
ffmpeg.exe -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv
***************************************************************************
ffmpeg -i F:\tools\ffmpeg.rev10464\test.avi -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 F:\tools\ffmpeg.rev10464\test.flv
ffmpeg -i "F:\tools\ffmpeg.rev10464\test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 "test.jpg"
ffmpeg.exe -i F:\闪客之家\闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv
ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv
使用-ss参数 作用(time_off set the start time offset),可以从指定时间点开始转换任务。如:
转换文件格式的同时抓缩微图:
ffmpeg -i "test.avi" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
对已有flv抓图:
ffmpeg -i "test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
-ss后跟的时间单位为秒
Ffmpeg转换命令
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500
-ab 24 -f 3gp test.3gp
或者
ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp
ffmpeg参数设定解说
-bitexact 使用标准比特率
-vcodec xvid 使用xvid压缩
-s 320x240 指定分辨率
-r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)
画面部分,选其一
-b <比特率> 指定压缩比特率,似乎ffmpeg是自动VBR的,指定了就大概是平均比特率,比如768,1500这样的
就是原来默认项目中有的
-qscale <数值> 以<数值>质量为基础的VBR,取值0.01-255,约小质量越好
-qmin <数值> 设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31
-sameq 使用和源同样的质量
声音部分
-acodec aac 设定声音编码
-ac <数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质
的DVDrip就可以用2
-ar <采样率> 设定声音采样率,PSP只认24000
-ab <比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换
君默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上
-vol <百分比> 设定音量,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍
这样,要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去
判断,而音质参数可以在原来的基础上提升一点,听起来要舒服很多,也不会太大(看情况调整
例子:ffmpeg -y -i "1.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.***"
解释:以上命令可以在Dos命令行中输入,也可以创建到批处理文件中运行。不过,前提是:要在ffmpeg所在的目录中执行(转换君所在目录下面的cores子目录)。
参数:
-y(覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了)
-i "1.avi"(输入文件是和ffmpeg在同一目录下的1.avi文件,可以自己加路径,改名字)
-title "Test"(在PSP中显示的影片的标题)
-vcodec xvid(使用XVID编码压缩视频,不能改的)
-s 368x208(输出的分辨率为368x208,注意片源一定要是16:9的不然会变形)
-r 29.97(帧数,一般就用这个吧)
-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和768,我改成1500,PSP就说文件损坏了)
"1.***"(输出文件名,也可以加路径改文件名)
机器强劲的话,可以多开几个批处理文件,让它们并行处理。
E:\ffmpeg.exe -i I:\1.wmv -b 360 -r 25 -s 320x240 -hq -deinterlace -ab 56 -ar 22050 -ac 1 D:\2.flv
===========================================
ffmpeg.exe -i F:\闪客之家\闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv 使用-ss参数 作用(time_off set the start time offset),可以从指定时间点开始转换任务。如:
转换文件格式的同时抓缩微图:
ffmpeg -i "test.avi" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
对已有flv抓图:
ffmpeg -i "test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
-ss后跟的时间单位为秒 Ffmpeg转换命令
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
或者
ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp ffmpeg参数设定解说
-bitexact 使用标准比特率
-vcodec xvid 使用xvid压缩
-s 320x240 指定分辨率
-r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)
画面部分,选其一
-b <比特率> 指定压缩比特率,似乎ffmpeg是自动VBR的,指定了就大概是平均比特率,比如768,1500这样的就是原来默认项目中有的
-qscale <数值> 以<数值>质量为基础的VBR,取值0.01-255,约小质量越好
-qmin <数值> 设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31
-sameq 使用和源同样的质量 声音部分
-acodec aac 设定声音编码
-ac <数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质的DVDrip就可以用2
-ar <采样率> 设定声音采样率,PSP只认24000
-ab <比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换君默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上
-vol <百分比> 设定音量,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍 这样,要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去判断,而音质参数可以在原来的基础上提升一点,听起来要舒服很多,也不会太大(看情况调整 例子:ffmpeg -y -i "1.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.***"
解释:以上命令可以在Dos命令行中输入,也可以创建到批处理文件中运行。不过,前提是:要在ffmpeg所在的目录中执行(转换君所在目录下面的cores子目录)。
参数:
-y(覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了)
-i "1.avi"(输入文件是和ffmpeg在同一目录下的1.avi文件,可以自己加路径,改名字)
-title "Test"(在PSP中显示的影片的标题)
-vcodec xvid(使用XVID编码压缩视频,不能改的)
-s 368x208(输出的分辨率为368x208,注意片源一定要是16:9的不然会变形)
-r 29.97(帧数,一般就用这个吧)
-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和768,我改成1500,PSP就说文件损坏了)
"1.***"(输出文件名,也可以加路径改文件名)
P.S. 版主机器强劲的话,可以多开几个批处理文件,让它们并行处理。 E:\ffmpeg.exe -i I:\1.wmv -b 360 -r 25 -s 320x240 -hq -deinterlace -ab 56 -ar 22050 -ac
============================================================================
part 3:
在cmd中先将目录切换到ffmpeg.exe对应的文件目录: cd D:\study\ffmpeg\ffmpeg-20160910-09317e3-win64-static\bin
注意:-命令名;前面要加ffmpeg。eg: 查看版本信息:ffmpeg -version
1. ffmpeg 是什么?
ffmpeg(命令行工具) 是一个快速的音视频转换工具。
2. ffmpeg 的使用方式
命令行: ffmpeg [全局选项] {[输入文件选项] -i ‘输入文件’} ... {[输出文件选项] ‘输出文件’} ...
3. ffmpeg 可使用的选项
3.1 通用选项
ff* 工具的通用选项是共享的。(FFplayFFprobe)
‘-L’ 显示 license ‘-h, -?, -help, --help [arg]’ 打印帮助信息;可以指定一个参数 arg ,如果不指定,只打印基本选项 可选的 arg 选项: ‘long’ 除基本选项外,还将打印高级选项 ‘full’ 打印一个完整的选项列表,包含 encoders, decoders, demuxers, muxers, filters 等的共享以及私有选项 ‘decoder=decoder_name’ 打印名称为 “decoder_name” 的解码器的详细信息 ‘encoder=encoder_name’ 打印名称为 “encoder_name” 的编码器的详细信息 ‘demuxer=demuxer_name’ 打印名称为 “demuxer_name” 的 demuxer 的详细信息 ‘muxer=muxer_name’ 打印名称为 “muxer_name” 的 muxer 的详细信息 ‘filter=filter_name’ 打印名称为 “filter_name” 的过滤器的详细信息 ‘-version’ 显示版本信息 ‘-formats’ 显示有效的格式 ‘-codecs’ 显示 libavcodec 已知的所有编解码器 ‘-decoders’ 显示有效的解码器 ‘-encoders’ 显示有效的编码器 ‘-bsfs’ 显示有效的比特流过滤器 ‘-protocols’ 显示有效的协议 ‘-filters’ 显示 libavfilter 有效的过滤器 ‘-pix_fmts’ 显示有效的像素格式 ‘-sample_fmts’ 显示有效的采样格式 ‘-layouts’ 显示通道名称以及标准通道布局 ‘-colors’ 显示认可的颜色名称 ‘-hide_banner’ 禁止打印欢迎语;也就是禁止默认会显示的版权信息、编译选项以及库版本信息等
3.2 一些主要选项
-
‘-f fmt (input/output)’
-
强制输入或输出文件格式。通常,输入文件的格式是自动检测的,
-
输出文件的格式是通过文件扩展名来进行猜测的,所有该选项大
-
多数时候不需要。
-
‘-i filename (input)’
-
输入文件名
-
‘-y (global)’
-
覆盖输出文件而不询问
-
‘-n (global)’
-
不覆盖输出文件,如果一个给定的输出文件已经存在,则立即
-
退出
-
‘-c[:stream_specifier] codec (input/output,per-stream)’
-
‘-codec[:stream_specifier] codec (input/output,per-stream)’
-
为一个或多个流选择一个编码器(当使用在一个输出文件之前时)
-
或者一个解码器(当使用在一个输入文件之前时)。codec 是一个
-
编码器/解码器名称或者一个特定值“copy”(只适用输出)。
-
‘-t duration (output)’
-
当到达 duration 时,停止写输出。
-
duration 可以是一个数字(秒),或者使用hh:mm:ss[.xxx]形式。
-
-to 和 -t 是互斥的,-t 优先级更高。
-
‘-to position (output)’
-
在 position 处停止写输出。
-
duration 可以是一个数字(秒),或者使用hh:mm:ss[.xxx]形式。
-
-to 和 -t 是互斥的,-t 优先级更高。
-
‘-fs limit_size (output)’
-
设置文件大小限制,以字节表示
-
‘-ss position (input/output)’
-
当作为输入选项时(在 -i 之前),在输入文件中跳转到 position。
-
需要注意的是,在大多数格式中,不太可能精确的跳转,因此,
-
ffmpeg 将跳转到 position 之前最接近的位置。当进行转码
-
并且 ‘-accurate_seek’ 打开时(默认),位于跳转点和 position
-
之间的额外部分将被解码并且丢弃。当做流拷贝或者当使用
-
‘-noaccurate_seek’时,它将被保留下来。
-
当作为输出选项时(在输出文件名前),解码但是丢弃输入,直到
-
时间戳到达 position。
-
position 可以是秒或者 hh:mm:ss[.xxx] 形式
-
‘-itsoffset offset (input)’
-
设置输入时间偏移。 offset 将被添加到输入文件的时间戳。指定
-
一个正偏移,意味着相应的流将被延时指定时间。
-
‘-timestamp date (output)’
-
在容器中设置录音时间戳
-
‘-metadata[:metadata_specifier] key=value (output,per-metadata)’
-
设置metadata key/value对
-
‘-target type (output)’
-
指定目标文件类型(vcd, svcd, dvd, dv, dv50)。
-
type 可以带有 pal-, ntsc- 或 film- 前缀,以使用相应的标准。
-
所有的格式选项(bitrate, codecs, buffer sizes)将自动设定。
-
‘-dframes number (output)’
-
设置要录制数据帧的个数。这是 -frames:d 的别名
-
‘-frames[:stream_specifier] framecount (output,per-stream)’
-
framecount 帧以后,停止写流。
-
‘-q[:stream_specifier] q (output,per-stream)’
-
‘-qscale[:stream_specifier] q (output,per-stream)’
-
使用固定质量范围(VBR)。
-
‘-filter[:stream_specifier] filtergraph (output,per-stream)’
-
创建filtergraph 指定的过滤图,并使用它来过滤流。
-
‘-filter_script[:stream_specifier] filename (output,per-stream)’
-
该选项与‘-filter’相似,唯一的不同是,它的参数是一个存放
-
过滤图的文件的名称。
-
‘-pre[:stream_specifier] preset_name (output,per-stream)’
-
指定匹配流的预设
-
‘-stats (global)’
-
打印编码进程/统计信息。默认打开,可以使用 -nostats 禁用。
-
‘-stdin’
-
开启标准输入交互。默认打开,除非标准输入作为一个输入。
-
可以使用 -nostdin 禁止。
-
‘-debug_ts (global)’
-
打印时间戳信息。默认关闭。
-
‘-attach filename (output)’
-
添加一个附件到输出文件中
-
‘-dump_attachment[:stream_specifier] filename (input,per-stream)’
-
提取匹配的附件流到filename指定的文件中。
3.3 视频选项
-
‘-vframes number (output)’
-
设置录制视频帧的个数。这是 -frames:v 的别名
-
‘-r[:stream_specifier] fps (input/output,per-stream)’
-
设置帧率(Hz 值, 分数或缩写)
-
‘-s[:stream_specifier] size (input/output,per-stream)’
-
设置帧大小。格式为 ‘wxh’ (默认与源相同)
-
‘-aspect[:stream_specifier] aspect (output,per-stream)’
-
设置视频显示长宽比
-
‘-vn (output)’
-
禁止视频录制
-
‘-vcodec codec (output)’
-
设置视频 codec。这是 -codec:v 的别名
-
‘-pass[:stream_specifier] n (output,per-stream)’
-
选择pass number (1 or 2)。用来进行双行程视频编码。
-
‘-passlogfile[:stream_specifier] prefix (output,per-stream)’
-
设置 two-pass 日志文件名前缀,默认为“ffmpeg2pass”。
-
‘-vf filtergraph (output)’
-
创建 filtergraph 指定的过滤图,并使用它来过滤流。
3.4 高级视频选项
-
‘-pix_fmt[:stream_specifier] format (input/output,per-stream)’
-
设置像素格式。
-
‘-sws_flags flags (input/output)’
-
设置软缩放标志
-
‘-vdt n’
-
丢弃阈值
-
‘-psnr’
-
计算压缩帧的 PSNR
-
‘-vstats’
-
复制视频编码统计信息到‘vstats_HHMMSS.log’
-
‘-vstats_file file’
-
复制视频编码统计信息到 file
-
‘-force_key_frames[:stream_specifier] time[,time...] (output,per-stream)’
-
‘-force_key_frames[:stream_specifier] expr:expr (output,per-stream)’
-
在指定的时间戳强制关键帧
-
‘-copyinkf[:stream_specifier] (output,per-stream)’
-
当进行流拷贝时,同时拷贝开头的非关键帧
-
‘-hwaccel[:stream_specifier] hwaccel (input,per-stream)’
-
使用硬件加速来解码匹配的流
-
‘-hwaccel_device[:stream_specifier] hwaccel_device (input,per-stream)’
-
选择硬件加速所使用的设备。该选项只有‘-hwaccel’同时指定时才有意义。
3.5 音频选项
‘-aframes number (output)’ 设置录制音频帧的个数。这是 -frames:a 的别名 ‘-ar[:stream_specifier] freq (input/output,per-stream)’ 设置音频采样率。 ‘-aq q (output)’ 设置音频质量。这是 -q:a 的别名 ‘-ac[:stream_specifier] channels (input/output,per-stream)’ 设置音频通道数。 ‘-an (output)’ 禁止音频录制 ‘-acodec codec (input/output)’ 设置音频codec。这是-codec:a的别名 ‘-sample_fmt[:stream_specifier] sample_fmt (output,per-stream)’ 设置音频采样格式 ‘-af filtergraph (output)’ 创建filtergraph 所指定的过滤图,并使用它来过滤流
3.6 字幕选项
‘-scodec codec (input/output)’ 设置字幕codec。这是 -codec:s 的别名 ‘-sn (output)’ 禁止字幕录制
3.7 高级选项
-
‘-map [-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]] | [linklabel] (output)’
-
指定一个或多个流作为输出文件的源。
-
命令行中的第一个 -map 选项,指定输出流0的源,
-
第二个 -map 选项,指定输出流1的源,等等。
-
‘-map_channel [input_file_id.stream_specifier.channel_id|-1][:output_file_id.stream_specifier]’
-
将一个给定输入的音频通道映射到一个输出。
-
‘-map_metadata[:metadata_spec_out] infile[:metadata_spec_in] (output,per-metadata)’
-
设置下一个输出文件的 metadata 信息。
-
‘-map_chapters input_file_index (output)’
-
从索引号为 input_file_index 的输入文件中拷贝章节到下一个输出文件中。
-
‘-timelimit duration (global)’
-
ffmpeg 运行 duration 秒后推出
-
‘-dump (global)’
-
将每一个输入包复制到标准输出
-
‘-hex (global)’
-
复制包时,同时复制负载
-
‘-re (input)’
-
以本地帧率读取数据。主要用来模拟一个采集设备,
-
或者实时输入流(例如:当从一个文件读取时).
-
‘-vsync parameter’
-
视频同步方法
-
‘-async samples_per_second’
-
音频同步方法
-
‘-shortest (output)’
-
当最短的输入流结束时,终止编码
-
‘-muxdelay seconds (input)’
-
设置最大解封装-解码延时
-
‘-muxpreload seconds (input)’
-
设置初始解封装-解码延时
-
‘-streamid output-stream-index:new-value (output)’
-
为一个输出流分配一个新的stream-id。
-
‘-bsf[:stream_specifier] bitstream_filters (output,per-stream)’
-
为匹配的流设置比特流过滤器
-
‘-filter_complex filtergraph (global)’
-
定义一个复杂的过滤图
-
‘-lavfi filtergraph (global)’
-
定义一个复杂的过滤图。相当于‘-filter_complex’
-
‘-filter_complex_script filename (global)’
-
该选项类似于‘-filter_complex’,唯一的不同是
-
它的参数是一个定义过滤图的文件的文件名
-
‘-accurate_seek (input)’
-
打开或禁止在输入文件中的精确跳转。默认打开。
-
更详细的高级选项说明,请查阅 ffmpeg 文档
4. ffmpeg 使用示例
1) 输出 YUV420P 原始数据 ffmpeg -i test.mp4 test.yuv 2) 从视频前10s中提取图像,1s提取一帧 ffmpeg -i test.mp4 -t 10 -r 1 -f image2 pic-%03d.jpeg 3) 从视频中提取音频 ffmpeg -i test.mp4 -vn music.mp2 4) 转换 wav 格式,同时改变其采样率 ffmpeg -i test.wav -ar 32K test.mp2 5) 输出 mp3 原始 PCM 数据 ffmpeg -i test.mp3 -f s16le test.pcm
================================================================================================
part 4:
使用网络上的各种转码软件,比如爱剪辑,简直崩溃了!比如,它竟然强行把你要编辑的视频的前面,插入了他的广告!很不爽,决定用ffmpeg。 ffmpeg做IT media的都知道,很强大,只不多对windows用户比较麻烦,用命令行不方便。好吧,只能说,这篇文章估计只有小众朋友看的。呜呜
废话不说,直接贴出来吧。 贴出来之前,先mark一下 ffmpeg的使用方式: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
常用参数说明: 主要参数: -i 设定输入流 -f 设定输出格式 -ss 开始时间 视频参数: -b 设定视频流量,默认为200Kbit/s -r 设定帧速率,默认为25 -s 设定画面的宽与高 -aspect 设定画面的比例 -vn 不处理视频 -vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器 音频参数: -ar 设定采样率 -ac 设定声音的Channel数 -acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器 -an 不处理音频
1. 视频格式转换
(其实格式转换说法不太准确,但大家都这么叫,准确的说,应该是视频容器转换) 比如一个avi文件,想转为mp4,或者一个mp4想转为ts。 ffmpeg -i input.avi output.mp4
ffmpeg -i input.mp4 output.ts
我目测这个已经能满足很多人的需求了。
2. 提取音频
比如我有一个“晓松奇谈”,可是我不想看到他的脸,我只想听声音, 地铁上可以听,咋办? ffmpeg -i 晓松奇谈.mp4 -acodec copy -vn output.aac
上面的命令,默认mp4的audio codec是aac,如果不是会出错,咱可以暴力一点,不管什么音频,都转为最常见的aac。 ffmpeg -i 晓松奇谈.mp4 -acodec aac -vn output.aac
3. 提取视频
我目测有些IT员工,特别是做嵌入式的,比如机顶盒,想debug一下,没有音频的情况下,播放一个视频几天几夜会不会crash,这时候你需要一个纯视频文件,可以这么干。 ffmpeg -i input.mp4 -vcodec copy -an output.mp4
4. 视频剪切
经常要测试视频,但是只需要测几秒钟,可是视频却有几个G,咋办?切啊! 下面的命令,就可以从时间为00:00:15开始,截取5秒钟的视频。 ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4
-ss表示开始切割的时间,-t表示要切多少。上面就是从开始,切5秒钟出来。
5. 码率控制
码率控制对于在线视频比较重要。因为在线视频需要考虑其能提供的带宽。
那么,什么是码率?很简单: bitrate = file size / duration 比如一个文件20.8M,时长1分钟,那么,码率就是: biterate = 20.8M bit/60s = 20.8*1024*1024*8 bit/60s= 2831Kbps 一般音频的码率只有固定几种,比如是128Kbps, 那么,video的就是 video biterate = 2831Kbps -128Kbps = 2703Kbps。
说完背景了。好了,来说ffmpeg如何控制码率。 ffmpg控制码率有3种选择,-minrate -b:v -maxrate -b:v主要是控制平均码率。 比如一个视频源的码率太高了,有10Mbps,文件太大,想把文件弄小一点,但是又不破坏分辨率。 ffmpeg -i input.mp4 -b:v 2000k output.mp4
上面把码率从原码率转成2Mbps码率,这样其实也间接让文件变小了。目测接近一半。 不过,ffmpeg官方wiki比较建议,设置b:v时,同时加上 -bufsize -bufsize 用于设置码率控制缓冲器的大小,设置的好处是,让整体的码率更趋近于希望的值,减少波动。(简单来说,比如1 2的平均值是1.5, 1.49 1.51 也是1.5, 当然是第二种比较好) ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k output.mp4
-minrate -maxrate就简单了,在线视频有时候,希望码率波动,不要超过一个阈值,可以设置maxrate。 ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k -maxrate 2500k output.mp4
6. 视频编码格式转换
比如一个视频的编码是MPEG4,想用H264编码,咋办? ffmpeg -i input.mp4 -vcodec h264 output.mp4
相反也一样 ffmpeg -i input.mp4 -vcodec mpeg4 output.mp4
当然了,如果ffmpeg当时编译时,添加了外部的x265或者X264,那也可以用外部的编码器来编码。(不知道什么是X265,可以Google一下,简单的说,就是她不包含在ffmpeg的源码里,是独立的一个开源代码,用于编码HEVC,ffmpeg编码时可以调用它。当然了,ffmpeg自己也有编码器) ffmpeg -i input.mp4 -c:v libx265 output.mp4
ffmpeg -i input.mp4 -c:v libx264 output.mp4
7. 只提取视频ES数据
这个可能做开发的人会用到,顺便提一下吧。 ffmpeg –i input.mp4 –vcodec copy –an –f m4v output.h264
8. 过滤器的使用
这个我在另一篇博客提到了,这里贴一下吧。
8.1 将输入的1920x1080缩小到960x540输出:
ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
//ps: 如果540不写,写成-1,即scale=960:-1, 那也是可以的,ffmpeg会通知缩放滤镜在输出时保持原始的宽高比。
8.2 为视频添加logo
比如,我有这么一个图片 想要贴到一个视频上,那可以用如下命令: ./ffmpeg -i input.mp4 -i iQIYI_logo.png -filter_complex overlay output.mp4 结果如下所示: 要贴到其他地方?看下面: 右上角: ./ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w output.mp4 左下角: ./ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=0:H-h output.mp4 右下角: ./ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w:H-h output.mp4
8.3 去掉视频的logo
有时候,下载了某个网站的视频,但是有logo很烦,咋办?有办法,用ffmpeg的delogo过滤器。 语法:-vf delogo=x:y:w:h[:t[:show]] x:y 离左上角的坐标 w:h logo的宽和高 t: 矩形边缘的厚度默认值4 show:若设置为1有一个绿色的矩形,默认值0。
ffmpeg -i input.mp4 -vf delogo=0:0:220:90:100:1 output.mp4
结果如下所示:
9. 抓取视频的一些帧,存为jpeg图片
比如,一个视频,我想提取一些帧,存为图片,咋办? ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
-r 表示每一秒几帧 -q:v表示存储jpeg的图像质量,一般2是高质量。 如此,ffmpeg会把input.mp4,每隔一秒,存一张图片下来。假设有60s,那会有60张。
60张?什么?这么多?不要不要。。。。。不要咋办?? 可以设置开始的时间,和你想要截取的时间呀。 ffmpeg -i input.mp4 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
-ss 表示开始时间 -t表示共要多少时间。 如此,ffmpeg会从input.mp4的第20s时间开始,往下10s,即20~30s这10秒钟之间,每隔1s就抓一帧,总共会抓10帧。
怎么样,好用吧。^^
其他小众的用法
1.输出YUV420原始数据
对于一下做底层编解码的人来说,有时候常要提取视频的YUV原始数据。 怎么坐?很简答: ffmpeg -i input.mp4 output.yuv
怎么样,是不是太简单啦?!!!哈哈
如果你想问yuv的数据,如何播放,我不会告诉你,RawPlayer挺好用的!!
那如果我只想要抽取某一帧YUV呢? 简单,你先用上面的方法,先抽出jpeg图片,然后把jpeg转为YUV。 比如: 你先抽取10帧图片。 ffmpeg -i input.mp4 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
结果:
-
-rw-rw-r-- 1 chenxf chenxf 296254 7月 20 16:08 pic-001.jpeg
-
-rw-rw-r-- 1 chenxf chenxf 300975 7月 20 16:08 pic-002.jpeg
-
-rw-rw-r-- 1 chenxf chenxf 310130 7月 20 16:08 pic-003.jpeg
-
-rw-rw-r-- 1 chenxf chenxf 268694 7月 20 16:08 pic-004.jpeg
-
-rw-rw-r-- 1 chenxf chenxf 301056 7月 20 16:08 pic-005.jpeg
-
-rw-rw-r-- 1 chenxf chenxf 293927 7月 20 16:08 pic-006.jpeg
-
-rw-rw-r-- 1 chenxf chenxf 340295 7月 20 16:08 pic-007.jpeg
-
-rw-rw-r-- 1 chenxf chenxf 430787 7月 20 16:08 pic-008.jpeg
-
-rw-rw-r-- 1 chenxf chenxf 404552 7月 20 16:08 pic-009.jpeg
-
-rw-rw-r-- 1 chenxf chenxf 412691 7月 20 16:08 pic-010.jpeg
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
然后,你就随便挑一张,转为YUV:ffmpeg -i pic-001.jpeg -s 1440x1440 -pix_fmt yuv420p xxx3.yuv
如果-s参数不写,则输出大小与输入一样。
当然了,YUV还有yuv422p啥的,你在-pix_fmt 换成yuv422p就行啦!
2. H264编码profile & level控制
背景知识
先科普一下profile&level吧,知道的请飘过。(这里讨论最常用的H264)
H.264有四种画质级别,分别是baseline, extended, main, high:
1、Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;
2、Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;(用的少)
3、Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),
也支持CAVLC 和CABAC 的支持;
4、High profile:高级画质。在main Profile 的基础上增加了8x8内部预测、自定义量化、 无损视频编码和更多的YUV 格式;
H.264 Baseline profile、Extended profile和Main profile都是针对8位样本数据、4:2:0格式(YUV)的视频序列。在相同配置情况下,High profile(HP)可以比Main profile(MP)降低10%的码率。
根据应用领域的不同,Baseline profile多应用于实时通信领域,Main profile多应用于流媒体领域,High profile则多应用于广电和存储领域。
下图清楚的给出不同的profile&level的性能区别。
profile
level
2.1 ffmpeg如何控制profile&level
举3个例子吧ffmpeg -i input.mp4 -profile:v baseline -level 3.0 output.mp4
ffmpeg -i input.mp4 -profile:v main -level 4.2 output.mp4
ffmpeg -i input.mp4 -profile:v high -level 5.1 output.mp4
如果ffmpeg编译时加了external的libx264,那就这么写:ffmpeg -i input.mp4 -c:v libx264 -x264-params "profile=high:level=3.0" output.mp4
从压缩比例来说,baseline< main < high,对于带宽比较局限的在线视频,可能会选择high,但有些时候,做个小视频,希望所有的设备基本都能解码(有些低端设备或早期的设备只能解码baseline),那就牺牲文件大小吧,用baseline。自己取舍吧!
苹果的设备对不同profile的支持。
2.2. 编码效率和视频质量的取舍(preset, crf)
除了上面提到的,强行配置biterate,或者强行配置profile/level,还有2个参数可以控制编码效率。
一个是preset,一个是crf。
preset也挺粗暴,基本原则就是,如果你觉得编码太快或太慢了,想改改,可以用profile。
preset有如下参数可用:
ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow and placebo.
编码加快,意味着信息丢失越严重,输出图像质量越差。
CRF(Constant Rate Factor): 范围 0-51: 0是编码毫无丢失信息, 23 is 默认, 51 是最差的情况。相对合理的区间是18-28.
值越大,压缩效率越高,但也意味着信息丢失越严重,输出图像质量越差。
举个例子吧。ffmpeg -i input -c:v libx264 -profile:v main -preset:v fast -level 3.1 -x264opts crf=18
(参考自:https://trac.ffmpeg.org/wiki/Encode/H.264)
2.3. H265 (HEVC)编码tile&level控制
背景知识
和H264的profile&level一样,为了应对不同应用的需求,HEVC制定了“层级”(tier) 和“等级”(level)。
tier只有main和high。
level有13级,如下所示:
不多说,直接给出怎么用。(supposed你用libx265编码)ffmpeg -i input.mp4 -c:v libx265 -x265-params "profile=high:level=3.0" output.mp4
===================================================================================
part 5:
转flv
ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv
简单的转换:
ffmpeg -i IpCam.ts IpCam.flv
注意:bitrate否则转换后图像模糊:20M 合适
ffmpeg -i IpCam.ts -b 20000000 IpCam.flv
ffmpeg 推rtmp 流
ffmpeg -re -i ~/2012.flv -f flv rtmp://192.168.1.102/myapp/test1
ffmpeg -re -i RealStream.fifo -f flv -b 20000000 rtmp://localhost/myapp/test1
信息查询
ffmpeg -formats
查看所有支持的容器格式
ffmpeg -codecs
查看所有编解码器
ffmpeg -filters
查看所有可用的filter
ffmpeg -pix_fmts
查看所有支持的图片格式
ffmpeg -sample_fmts
查看所有支持的像素格式
ffprobe -i money.mp4
查看媒体信息
格式转换
ffmpeg -i money.mp4 -c:v mpeg2video -b:v 500k -c:a libmp3lame -f mpegts money.ts
ffmpeg -i money.mp4 -c:v libx264 -minrate:v 500k -maxrate:v 500k -bufsize:v 125k -c:a libmp3lame -f mpegts money.ts
ffmpeg -i money.mp4 -c:v libx264 -x264opts bitrate=500:vbv-maxrate=500:vbv-bufsize=166:nal_hrd=cbr -c:a libmp3lame -f mpegts money_cbr_500k.ts
-i 输入文件名
-c:v 设置视频编码器
-v:b 设置码率
-c:a 设置音频编码器
-f 设置文件格式(容器)
-minrate:v 500k -maxrate:v 500k -bufsize:v 125k 设置CBR(不太好用)
-x264opts bitrate=500:vbv-maxrate=500:vbv-bufsize=166:nal_hrd=cbr 设置CBR(好用)
选择其中第一个视频流输出,设置码率
ffmpeg -i money.mp4 -map 0:v:0 -c:v libx264 -b:v 500k money_500k.mp4
ffmpeg -i money.mp4 -map 0:v:0 -c:v libx264 -b:v 300k money_300k.mp4
ffmpeg -i money.mp4 -map 0:v:0 -c:v libx264 -b:v 100k -s 336x188 money_100k.mp4
选择其中第一个音频流输出
ffmpeg -i money.mp4 -map 0:a:0 money_audio.mp4
使用图片合成翻转的视频:
ffmpeg -framerate 30 -pattern_type glob -i '*.jpg' -c:v libx264 -r 30 -vf vflip,hflip out.mp4
====================================================================================
part 6:
1.分离视频音频流
ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流 ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流
2.视频解复用
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264 ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
3.视频转码
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264 //转码为码流原始文件 ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //转码为码流原始文件 ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //转码为封装文件 //-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制
4.视频封装
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
5.视频剪切
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取图片 ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切视频 //-r 提取图像的频率,-ss 开始时间,-t 持续时间
6.视频录制
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
7.YUV序列播放
ffplay -f rawvideo -video_size 1920x1080 input.yuv
8.YUV序列转AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
常用参数说明:
主要参数: -i 设定输入流 -f 设定输出格式 -ss 开始时间 视频参数: -b 设定视频流量,默认为200Kbit/s -r 设定帧速率,默认为25 -s 设定画面的宽与高 -aspect 设定画面的比例 -vn 不处理视频 -vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器 音频参数: -ar 设定采样率 -ac 设定声音的Channel数 -acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器 -an 不处理音频
------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------
1、将文件当做直播送至live
[plain] view plain copy
- ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName
ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName
2、将直播媒体保存至本地文件
[plain] view plain copy
- ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
3、将其中一个直播流,视频改用h264压缩,音频不变,送至另外一个直播服务流
[plain] view plain copy
- ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream
4、将其中一个直播流,视频改用h264压缩,音频改用faac压缩,送至另外一个直播服务流
[plain] view plain copy
- ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream
ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream
5、将其中一个直播流,视频不变,音频改用faac压缩,送至另外一个直播服务流
[plain] view plain copy
- ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream
ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream
6、将一个高清流,复制为几个不同视频清晰度的流重新发布,其中音频不变
[plain] view plain copy
- ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec copy -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec copy -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec copy -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec copy -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec copy -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec copy -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k
7、功能一样,只是采用-x264opts选项
[plain] view plain copy
- ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a copy -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a copy -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a copy -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a copy -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a copy -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a copy -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k
8、将当前摄像头及音频通过DSSHOW采集,视频h264、音频faac压缩后发布
[plain] view plain copy
- ffmpeg -r 25 -f dshow -s 640×480 -i video=”video source name”:audio=”audio source name” -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name
ffmpeg -r 25 -f dshow -s 640×480 -i video=”video source name”:audio=”audio source name” -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name
9、将一个JPG图片经过h264压缩循环输出为mp4视频
[plain] view plain copy
- ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4
ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4
10、将普通流视频改用h264压缩,音频不变,送至高清流服务(新版本FMS live=1)
[plain] view plain copy
- ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv “rtmp://server/live/h264Stream live=1〃<br style="box-sizing: border-box;" /><br style="box-sizing: border-box;" /><br style="box-sizing: border-box;" />
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv “rtmp://server/live/h264Stream live=1〃<br style="box-sizing: border-box;" /><br style="box-sizing: border-box;" /><br style="box-sizing: border-box;" />
------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------
1.采集usb摄像头视频命令:
ffmpeg -t 20 -f vfwcap -i 0 -r 8 -f mp4 cap1111.mp4
./ffmpeg -t 10 -f vfwcap -i 0 -r 8 -f mp4 cap.mp4
具体说明如下:我们采集10秒,采集设备为vfwcap类型设备,第0个vfwcap采集设备(如果系统有多个vfw的视频采集设备,可以通过-i num来选择),每秒8帧,输出方式为文件,格式为mp4。
2.最简单的抓屏:
ffmpeg -f gdigrab -i desktop out.mpg
3.从屏幕的(10,20)点处开始,抓取640x480的屏幕,设定帧率为5 :
ffmpeg -f gdigrab -framerate 5 -offset_x 10 -offset_y 20 -video_size 640x480 -i desktop out.mpg
4.ffmpeg从视频中生成gif图片:
ffmpeg -i capx.mp4 -t 10 -s 320x240 -pix_fmt rgb24 jidu1.gif
5.ffmpeg将图片转换为视频:
http://blog.sina.com.cn/s/blog_40d73279010113c2.html
===========================================================================
part 7:
FFMPEG以其强大的功能而在音视频领域著称,更重要的是它还是开源的!音视频格式转换、裁剪、拼接、提取字幕或某音轨等等,它都能胜任,可谓一把瑞士军刀,小巧但功能强大,是音视频研究的必备利器之一。
示例
1. 转换成H264编解码
[plain] view plain copy
- ffmpeg -i input_file -vcodec h264 output_file
ffmpeg -i input_file -vcodec h264 output_file
其中 -i 表示输入文件, -vcodec h264 表示视频编解码方式为 H264。
2. 转换成H265编解码
[plain] view plain copy
- ffmpeg -i input_file -vcode hevc output_file
ffmpeg -i input_file -vcode hevc output_file
其中 -i 表示输入文件, -vcodec hevc 表示视频编解码方式为 H265,注意ffmpeg 中名称为 hevc,不是H265!
3. 设置输出视频的分辨率
[plain] view plain copy
- ffmpeg -i input_file -vcodec h264 -s 1280x720 output_file
ffmpeg -i input_file -vcodec h264 -s 1280x720 output_file
其中 -s 表示分辨率。
4. 设置输出文件的音视频比特率
[plain] view plain copy
- ffmpeg -i input_file -vcodec h264 -b:v 10M -b:a 128K output_file
ffmpeg -i input_file -vcodec h264 -b:v 10M -b:a 128K output_file
其中 -b:v 10M 表示视频码率为10Mbps, -b:a 128K 表示音频码率为 128Kbps,注意FFMPEG对于码率控制,有时候不太准确,跟输入源有一定关系。
5. 剪切某段视频
[plain] view plain copy
- ffmpeg -ss 0:05:00 -t 0:1:30 -i input_file -vcodec copy -acodec copy output_file
- ffmpeg -ss 300 -t 90 -i input_file -vcodec copy -acodec copy output_file
-
ffmpeg -ss 0:05:00 -t 0:1:30 -i input_file -vcodec copy -acodec copy output_file
-
ffmpeg -ss 300 -t 90 -i input_file -vcodec copy -acodec copy output_file
上面的两种方式等价,时间格式支持 HH:MM:SS或者秒数。 -ss 开始时间, -t 持续时间, -vcodec copy 保持原视频编码, -acodec copy 保持原音频编码。
6. 分离音视频流保存为不同文件
[plain] view plain copy
- ffmpeg -i input_file -vcodec copy -an output_file_video //提取视频流
- ffmpeg -i input_file -acodec copy -vn output_file_audio //提取音频流
-
ffmpeg -i input_file -vcodec copy -an output_file_video //提取视频流
-
ffmpeg -i input_file -acodec copy -vn output_file_audio //提取音频流
其中 -an 表示不处理音频, -vn 表示不处理视频。
7.合并多个音视频文件为一个文件
[plain] view plain copy
- ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
8. 提取视频图像保存为图片文件
[plain] view plain copy
- ffmpeg –i input_file –r 1 –f image2 image-%3d.jpeg //提取图片
ffmpeg –i input_file –r 1 –f image2 image-%3d.jpeg //提取图片
其中 -r 表示提取图像的频率,-f 表示输出格式, %3d 表示文件命名方式(也即生成的图片名为 image-001.jpeg, image-002.jpeg, ...., image-999.jpeg)。
9. 转换成YUV原始文件
[plain] view plain copy
- ffmpeg -i input_file -vcodec rawvideo -an output_file_yuv
ffmpeg -i input_file -vcodec rawvideo -an output_file_yuv
10. YUV序列转出AVI文件
[plain] view plain copy
- ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
11. 控制关键帧间隔和B帧
[plain] view plain copy
- ffmpeg –i input_file –vcodec h264 –bf 0 –g 25 –s 854x480 –an –f m4v output_file
ffmpeg –i input_file –vcodec h264 –bf 0 –g 25 –s 854x480 –an –f m4v output_file
其中-bf 控制B帧数目,-g 控制关键帧间隔, -f 控制文件格式(format,注意与codec的区别)。
12. 录制rtsp网络数据流
[plain] view plain copy
- ffmpeg –i rtsp://192.168.1.100:5555/test_stream –vcodec copy out.avi
ffmpeg –i rtsp://192.168.1.100:5555/test_stream –vcodec copy out.avi
将rtsp的网络视频流文件保存为 out.avi 本地文件
13. 在多音轨文件中提取某音轨文件
得分两步走,第一步,查看源文件,找到对应的音频序号;第二步,将对应的音频序号流提取出来。如下所示:
[plain] view plain copy
- <strong><span style="color:#ff0000;">D:>ffmpeg -i Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv</span></strong>
- ffmpeg version N-66931-gbbd8c85 Copyright (c) 2000-2014 the FFmpeg developers
- built on Oct 17 2014 01:05:12 with gcc 4.9.1 (GCC)
- configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfi
- g --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
- enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-lib
- opencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinge
- r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --
- enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-
- libx265 --enable-libxavs --enable-libxvid --enable-zlib
- libavutil 54. 10.100 / 54. 10.100
- libavcodec 56. 8.100 / 56. 8.100
- libavformat 56. 9.100 / 56. 9.100
- libavdevice 56. 1.100 / 56. 1.100
- libavfilter 5. 1.106 / 5. 1.106
- libswscale 3. 1.101 / 3. 1.101
- libswresample 1. 1.100 / 1. 1.100
- libpostproc 53. 3.100 / 53. 3.100
- Input #0, matroska,webm, from 'D:\Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv':
- Metadata:
- title : X-MEN__DAYS_OF_FUTURE_PAST.Title800
- encoder : libebml v0.7.8 + libmatroska v0.8.1
- creation_time : 2014-10-07 14:08:43
- Duration: 02:11:35.18, start: 0.000000, bitrate: 28873 kb/s
- Chapter #0:0: start 0.000000, end 213.338000
- Metadata:
- title : (01)00:00:00:000
- Chapter #0:1: start 213.338000, end 480.688000
- Metadata:
- title : (02)00:03:33:338
- Chapter #0:2: start 480.688000, end 628.628000
- Metadata:
- title : (03)00:08:00:688
- Chapter #0:3: start 628.628000, end 838.045000
- Metadata:
- title : (04)00:10:28:628
- Chapter #0:4: start 838.045000, end 1022.021000
- Metadata:
- title : (05)00:13:58:045
- Chapter #0:5: start 1022.021000, end 1216.089000
- Metadata:
- title : (06)00:17:02:021
- Chapter #0:6: start 1216.089000, end 1331.330000
- Metadata:
- title : (07)00:20:16:089
- Chapter #0:7: start 1331.330000, end 1597.887000
- Metadata:
- title : (08)00:22:11:330
- Chapter #0:8: start 1597.887000, end 1832.038000
- Metadata:
- title : (09)00:26:37:887
- Chapter #0:9: start 1832.038000, end 2069.776000
- Metadata:
- title : (10)00:30:32:038
- Chapter #0:10: start 2069.776000, end 2160.992000
- Metadata:
- title : (11)00:34:29:776
- Chapter #0:11: start 2160.992000, end 2298.087000
- Metadata:
- title : (12)00:36:00:992
- Chapter #0:12: start 2298.087000, end 2437.101000
- Metadata:
- title : (13)00:38:18:087
- Chapter #0:13: start 2437.101000, end 2753.792000
- Metadata:
- title : (14)00:40:37:101
- Chapter #0:14: start 2753.792000, end 2933.847000
- Metadata:
- title : (15)00:45:53:792
- Chapter #0:15: start 2933.847000, end 3118.156000
- Metadata:
- title : (16)00:48:53:847
- Chapter #0:16: start 3118.156000, end 3283.113000
- Metadata:
- title : (17)00:51:58:156
- Chapter #0:17: start 3283.113000, end 3471.426000
- Metadata:
- title : (18)00:54:43:113
- Chapter #0:18: start 3471.426000, end 3648.186000
- Metadata:
- title : (19)00:57:51:426
- Chapter #0:19: start 3648.186000, end 3806.594000
- Metadata:
- title : (20)01:00:48:186
- Chapter #0:20: start 3806.594000, end 4029.567000
- Metadata:
- title : (21)01:03:26:594
- Chapter #0:21: start 4029.567000, end 4183.596000
- Metadata:
- title : (22)01:07:09:567
- Chapter #0:22: start 4183.596000, end 4391.470000
- Metadata:
- title : (23)01:09:43:596
- Chapter #0:23: start 4391.470000, end 4531.860000
- Metadata:
- title : (24)01:13:11:470
- Chapter #0:24: start 4531.860000, end 4647.726000
- Metadata:
- title : (25)01:15:31:860
- Chapter #0:25: start 4647.726000, end 4770.098000
- Metadata:
- title : (26)01:17:27:726
- Chapter #0:26: start 4770.098000, end 5090.710000
- Metadata:
- title : (27)01:19:30:098
- Chapter #0:27: start 5090.710000, end 5218.254000
- Metadata:
- title : (28)01:24:50:710
- Chapter #0:28: start 5218.254000, end 5464.250000
- Metadata:
- title : (29)01:26:58:254
- Chapter #0:29: start 5464.250000, end 5643.679000
- Metadata:
- title : (30)01:31:04:250
- Chapter #0:30: start 5643.679000, end 5853.180000
- Metadata:
- title : (31)01:34:03:679
- Chapter #0:31: start 5853.180000, end 6114.817000
- Metadata:
- title : (32)01:37:33:180
- Chapter #0:32: start 6114.817000, end 6292.995000
- Metadata:
- title : (33)01:41:54:817
- Chapter #0:33: start 6292.995000, end 6439.808000
- Metadata:
- title : (34)01:44:52:995
- Chapter #0:34: start 6439.808000, end 6689.766000
- Metadata:
- title : (35)01:47:19:808
- Chapter #0:35: start 6689.766000, end 7002.745000
- Metadata:
- title : (36)01:51:29:766
- Chapter #0:36: start 7002.745000, end 7212.413000
- Metadata:
- title : (37)01:56:42:745
- Chapter #0:37: start 7212.413000, end 7354.972000
- Metadata:
- title : (38)02:00:12:413
- Chapter #0:38: start 7354.972000, end 7831.907000
- Metadata:
- title : (39)02:02:34:972
- Chapter #0:39: start 7831.907000, end 7895.095000
- Metadata:
- title : (40)02:10:31:907
- Chapter #0:40: start 7895.095000, end 7895.178884
- Metadata:
- title : (41)02:11:35:095
- <strong>Stream #0:0: Video: hevc (Main), yuv420p(tv), 3840x2160, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 48003.07 tbn, 48003
- .07 tbc (default)
- Stream #0:1(eng): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
- <span style="color:#33ff33;">Stream #0:2(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s</span>
- Stream #0:3(spa): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
- Stream #0:4(fra): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
- Stream #0:5(por): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
- Stream #0:6(rus): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 768 kb/s
- Stream #0:7(tha): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
- Stream #0:8(ukr): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s</strong>
- <span style="color:#ff0000;">At least one output file must be specified</span>
- D:>
-
<strong><span style="color:#ff0000;">D:>ffmpeg -i Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv</span></strong>
-
ffmpeg version N-66931-gbbd8c85 Copyright (c) 2000-2014 the FFmpeg developers
-
built on Oct 17 2014 01:05:12 with gcc 4.9.1 (GCC)
-
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfi
-
g --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
-
enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-lib
-
opencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinge
-
r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --
-
enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-
-
libx265 --enable-libxavs --enable-libxvid --enable-zlib
-
libavutil 54. 10.100 / 54. 10.100
-
libavcodec 56. 8.100 / 56. 8.100
-
libavformat 56. 9.100 / 56. 9.100
-
libavdevice 56. 1.100 / 56. 1.100
-
libavfilter 5. 1.106 / 5. 1.106
-
libswscale 3. 1.101 / 3. 1.101
-
libswresample 1. 1.100 / 1. 1.100
-
libpostproc 53. 3.100 / 53. 3.100
-
Input #0, matroska,webm, from 'D:\Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv':
-
Metadata:
-
title : X-MEN__DAYS_OF_FUTURE_PAST.Title800
-
encoder : libebml v0.7.8 + libmatroska v0.8.1
-
creation_time : 2014-10-07 14:08:43
-
Duration: 02:11:35.18, start: 0.000000, bitrate: 28873 kb/s
-
Chapter #0:0: start 0.000000, end 213.338000
-
Metadata:
-
title : (01)00:00:00:000
-
Chapter #0:1: start 213.338000, end 480.688000
-
Metadata:
-
title : (02)00:03:33:338
-
Chapter #0:2: start 480.688000, end 628.628000
-
Metadata:
-
title : (03)00:08:00:688
-
Chapter #0:3: start 628.628000, end 838.045000
-
Metadata:
-
title : (04)00:10:28:628
-
Chapter #0:4: start 838.045000, end 1022.021000
-
Metadata:
-
title : (05)00:13:58:045
-
Chapter #0:5: start 1022.021000, end 1216.089000
-
Metadata:
-
title : (06)00:17:02:021
-
Chapter #0:6: start 1216.089000, end 1331.330000
-
Metadata:
-
title : (07)00:20:16:089
-
Chapter #0:7: start 1331.330000, end 1597.887000
-
Metadata:
-
title : (08)00:22:11:330
-
Chapter #0:8: start 1597.887000, end 1832.038000
-
Metadata:
-
title : (09)00:26:37:887
-
Chapter #0:9: start 1832.038000, end 2069.776000
-
Metadata:
-
title : (10)00:30:32:038
-
Chapter #0:10: start 2069.776000, end 2160.992000
-
Metadata:
-
title : (11)00:34:29:776
-
Chapter #0:11: start 2160.992000, end 2298.087000
-
Metadata:
-
title : (12)00:36:00:992
-
Chapter #0:12: start 2298.087000, end 2437.101000
-
Metadata:
-
title : (13)00:38:18:087
-
Chapter #0:13: start 2437.101000, end 2753.792000
-
Metadata:
-
title : (14)00:40:37:101
-
Chapter #0:14: start 2753.792000, end 2933.847000
-
Metadata:
-
title : (15)00:45:53:792
-
Chapter #0:15: start 2933.847000, end 3118.156000
-
Metadata:
-
title : (16)00:48:53:847
-
Chapter #0:16: start 3118.156000, end 3283.113000
-
Metadata:
-
title : (17)00:51:58:156
-
Chapter #0:17: start 3283.113000, end 3471.426000
-
Metadata:
-
title : (18)00:54:43:113
-
Chapter #0:18: start 3471.426000, end 3648.186000
-
Metadata:
-
title : (19)00:57:51:426
-
Chapter #0:19: start 3648.186000, end 3806.594000
-
Metadata:
-
title : (20)01:00:48:186
-
Chapter #0:20: start 3806.594000, end 4029.567000
-
Metadata:
-
title : (21)01:03:26:594
-
Chapter #0:21: start 4029.567000, end 4183.596000
-
Metadata:
-
title : (22)01:07:09:567
-
Chapter #0:22: start 4183.596000, end 4391.470000
-
Metadata:
-
title : (23)01:09:43:596
-
Chapter #0:23: start 4391.470000, end 4531.860000
-
Metadata:
-
title : (24)01:13:11:470
-
Chapter #0:24: start 4531.860000, end 4647.726000
-
Metadata:
-
title : (25)01:15:31:860
-
Chapter #0:25: start 4647.726000, end 4770.098000
-
Metadata:
-
title : (26)01:17:27:726
-
Chapter #0:26: start 4770.098000, end 5090.710000
-
Metadata:
-
title : (27)01:19:30:098
-
Chapter #0:27: start 5090.710000, end 5218.254000
-
Metadata:
-
title : (28)01:24:50:710
-
Chapter #0:28: start 5218.254000, end 5464.250000
-
Metadata:
-
title : (29)01:26:58:254
-
Chapter #0:29: start 5464.250000, end 5643.679000
-
Metadata:
-
title : (30)01:31:04:250
-
Chapter #0:30: start 5643.679000, end 5853.180000
-
Metadata:
-
title : (31)01:34:03:679
-
Chapter #0:31: start 5853.180000, end 6114.817000
-
Metadata:
-
title : (32)01:37:33:180
-
Chapter #0:32: start 6114.817000, end 6292.995000
-
Metadata:
-
title : (33)01:41:54:817
-
Chapter #0:33: start 6292.995000, end 6439.808000
-
Metadata:
-
title : (34)01:44:52:995
-
Chapter #0:34: start 6439.808000, end 6689.766000
-
Metadata:
-
title : (35)01:47:19:808
-
Chapter #0:35: start 6689.766000, end 7002.745000
-
Metadata:
-
title : (36)01:51:29:766
-
Chapter #0:36: start 7002.745000, end 7212.413000
-
Metadata:
-
title : (37)01:56:42:745
-
Chapter #0:37: start 7212.413000, end 7354.972000
-
Metadata:
-
title : (38)02:00:12:413
-
Chapter #0:38: start 7354.972000, end 7831.907000
-
Metadata:
-
title : (39)02:02:34:972
-
Chapter #0:39: start 7831.907000, end 7895.095000
-
Metadata:
-
title : (40)02:10:31:907
-
Chapter #0:40: start 7895.095000, end 7895.178884
-
Metadata:
-
title : (41)02:11:35:095
-
<strong>Stream #0:0: Video: hevc (Main), yuv420p(tv), 3840x2160, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 48003.07 tbn, 48003
-
.07 tbc (default)
-
Stream #0:1(eng): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
-
<span style="color:#33ff33;">Stream #0:2(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s</span>
-
Stream #0:3(spa): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
-
Stream #0:4(fra): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
-
Stream #0:5(por): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
-
Stream #0:6(rus): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 768 kb/s
-
Stream #0:7(tha): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
-
Stream #0:8(ukr): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s</strong>
-
<span style="color:#ff0000;">At least one output file must be specified</span>
-
D:>
执行上面的命令,查看原始文件,发现它有8个音轨!,我们只提取第二个音轨流(上图标识为绿色的那个),命令如下所示:
[plain] view plain copy
- ffmpeg -i Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv -map 0:2 audio_2.wav
ffmpeg -i Xmen_HEVC_4K_Multi_Audio_28Mbps.mkv -map 0:2 audio_2.wav
14. 多个视频文件拼接
首先创建一个需要拼接的文件,例如 concat.txt,内容如下:
file 'orig_20160616113303_0.avi'
file 'orig_20160616113303_1.avi'
然后执行如下命令
[plain] view plain copy
- ffmpeg -f concat -i concat.txt -c copy orig_20160616113303_merge.avi
ffmpeg -f concat -i concat.txt -c copy orig_20160616113303_merge.avi
FFMPEG常用参数说明
主要参数:
-i 设定输入流
-f 设定输出格式
-ss 开始时间
-formats 查看所有支持的容器格式
-codecs 查看所有编解码器
-filters 查看所有可用的filter
-pix_fmts 查看所有支持的图片格式
-sample_fmts 查看所有支持的像素格式
-i input_file 查看媒体文件input_file的信息(注意后面不再接其它参数,例如: ffmpeg -i test.mp4,查看 test.mp4视频信息)
视频参数:
-b 设定视频流量,默认为200Kbit/s
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频
小结
ffmpeg功能强大,参数配置众多,最好的方式查看它的命令行帮助文档,各个参数都有详细的说明,唯一的遗憾就是没有例子,对于初入媒体领域的人来说,门槛比较高。不明白的参数,可以多试试,再接合MediaInfo工具查看具体信息,通过VLC或者FFMPEG自带的 ffplay播放器播放,就容易理解了。
===========================================================================
part 8:
格式转换 (将file.avi 转换成output.flv)
ffmpeg -i file.avi output.flv
-i 表示输入文件
:现在有个视频video.avi,有个音频 audio.mp3,将其合并成output.avi
两个命令 ( video2.avi 是中间文件 ,用完可删)
ffmpeg -i video.avi -vcodec copy -an video2.avi
ffmpeg -i video2.avi -i audio.mp3 -vcodec copy -acodec copy output.avi
-i 表示输入文件
-vcodec copy 表示 force video codec ('copy' to copy stream) 这个不知怎么译 ,估计是直接copy
-acodec copy 这个说的应该是音频了 跟上面一样
-an : 表示 disable audio 估计是audio no 之类的缩写 表示去掉video.avi 原有的音频
方法2 好像可以直接指定两个输入文件 ,
ffmpeg -i /tmp/a.wav -i /tmp/a.avi /tmp/a.avi 两个文件 的顺序很重
从视频里提取声音(声音与视频的分离)
ffmpeg -i 人生若只如初见.flv -vn r.mp3 从flv 文件 中提取声音并保存为mp3 格式
-vn : 表示忽略视频 估计是video no 之类的缩写
ffmpeg -i 人生若只如初见.flv -an r.flv 只留视频不留声音
-an : 表示 忽略 声音 估计是audio no 之类的缩写
从视频里提取图片( )
ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg -ss 第8秒处 截一图
压缩mp3 文件
如果你觉得mp3 文件 有点大,想变小一点那么可以通过-ab 选项改变音频的比特率 (bitrate)
ffmpeg -i input.mp3 -ab 128 output.mp3 //这里将比特率设为128
你可以用file 命令查看一下源文件 的信息
z.mp3: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
其中的192 kbps 就是这个东西
mp3中比特率的含义是:在压缩音频文件至mp3时,由压缩软件所确定数码文件在播放时每秒传 送给播放器大小,其单位是:千位/秒;英文的含义是:kbps - = kilobits per second。现在mp3文件的最高数位率是320 kbps。这样的文件体积很大,每分钟的音乐超过两兆字节。如果采用可变比特率(VBR)编码来生成mp3文件,获得与320 kbps相当音质,文件的体积会缩小25~50%。请注意:播放时间相同,而歌曲不同,所获的压缩mp3文件的一般不相同,这是因为VBR编码所生成的 mp3文件的大小不仅仅取决于播放时间的长度,还取决于源音频文件的其它因素。
录音(要有可用的麦克风,并且如果用alsa 的话,好像得安alsa-oss,重启)
ffmpeg -f oss -i /dev/dsp out.avi (should hava oss or alsa-oss)
ffmpeg -f alsa -ac 2 -i hw:0, 0 out.avi (should )
ffmpeg -f alsa -ac 2 -i pulse (should hava PulseAudio)
oss 是linux 下的声音相关的东西,与alsa 一样,不过oss 是商业的, 而/dev/dsp 是oss 用到的麦克的设备吧,可以这样理解
屏幕录像
ffmpeg -f x11grab -s xga -r 10 -i :0.0+0+0 wheer.avi
ffmpeg -f x11grab -s 320x240 -r 10 -i :0.0+100+200 wheer.avi
:0:0 表示屏幕(个人理解,因为系统变量$DISPLAY值就是:0.0) 而100,表示距左端100象素,200表示距上端200
-s 设置窗口大小
-r 10 好像是设置频率,不懂
ffmpeg -f x11grab -s xga -qscale 5 -r 10 -i :0.0+0+0 wheer.avi
-qscale 8 设定画面质量,值 越小越好
屏幕录像,同时录音
ffmpeg -f oss -i /dev/dsp -f x11grab -r 30 -s 1024x768 -i :0.0 output.mkv
ffmpeg -ac 2 -f oss -i /dev/dsp -f x11grab -r 30 -s 1024x768 -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 output.mkv
看到这,你会发现这个命令有多强大,
如果我屏幕上打开了一个窗口,我只想录这个窗口的内容,如何确定这个窗口的坐标位置呢
可以用另外一个命令
xwininfo 输入这个命令后,用鼠标点选目标窗口,
就会出现目标窗口的坐标,宽高等一系列信息
Absolute upper-left X: 276
Absolute upper-left Y: 57
Relative upper-left X: 2
Relative upper-left Y: 23
Width: 742
Height: 499
Depth: 24
Visual: 0x21
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x20 (installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +276+57 -262+57 -262-244 +276-244
-geometry 80x24+274+34 看到这一行了没 ()
比如根据上面的信息
ffmpeg -f oss -i /dev/dsp -f x11grab -r 30 -s 1280x752 -i :0.0+0+23 output.avi
Another thing you can change is the video frame rate (FPS). In the example above we used -r 30 which means capture at 30 FPS. You can change this value to whatever frame rate you want.
这个 -r 30 应该是每秒钟取样几次,估计是一秒截三十次屏,
切头去尾
ffmpeg -ss 00:00:10 -t 00:01:22 -i 五月天-突然好想你.mp3 output.mp3
只要 从第10秒开始截取,共截取1:22时长的内容
视频文件的连接,如两个flv 文件 连接成一
好像必须先将文件 转成mpg ,dv 等格式的文件后才能进行连接
- 连接复数的AVI影片档之范例(在此范例中须一度暂时将AVI档转换成MPEG-1档(MPEG-1, MPEG-2 PS, DV格式亦可连接))
ffmpeg -i input1.avi -sameq inputfile_01.mpg -r 20 ffmpeg -i input2.avi -sameq inputfile_02.mpg -r 20 cat inputfile_01.mpg inputfile_02.mpg > inputfile_all.mpg ffmpeg -i inputfile_all.mpg -sameq outputfile.avi 上面将 input1.avi input2.avi 合并成outputfile.avi -sameq 表示 相同的质量(可能指的是画面,不太清楚) -r 指频率 =====================================================================下面是wiki 上给的几个例子
参数
FFmpeg可使用众多参数,参数内容会根据ffmpeg版本而有差异,使用前建议先参考参数及编解码器的叙述。此外,参数明细可用 ffmpeg -h
显示;编解码器名称等明细可用 ffmpeg -formats
显示。
下列为较常使用的参数。
[编辑 ] 主要参数
- -i 设定输入档名。
- -f 设定输出格式。
- -y 若输出档案已存在时则覆盖档案。
- -fs 超过指定的档案大小时则结束转换。
- -ss 从指定时间开始转换。
- -title 设定标题。
- -timestamp 设定时间戳。
- -vsync 增减Frame使影音同步。
[编辑 ] 影像参数
- -b 设定影像流量,默认为200Kbit/秒。( 单位请参照下方注意事项 )
- -r 设定FrameRate值,默认为25。
- -s 设定画面的宽与高。
- -aspect 设定画面的比例。
- -vn 不处理影像,于仅针对声音做处理时使用。
- -vcodec 设定影像影像编解码器,未设定时则使用与输入档案相同之编解码器。
[编辑 ] 声音参数
- -ab 设定每Channel (最近的SVN 版为所有Channel的总合)的流量。( 单位 请参照下方注意事项 )
- -ar 设定采样率。
- -ac 设定声音的Channel数。
- -acodec 设定声音编解码器,未设定时与影像相同,使用与输入档案相同之编解码器。
- -an 不处理声音,于仅针对影像做处理时使用。
- -vol 设定音量大小,256为标准音量。(要设定成两倍音量时则输入512,依此类推。)
[编辑 ] 注意事项
- 以-b及ab参数设定流量时,根据使用的ffmpeg版本,须注意单位会有kbits/sec与bits/sec的不同。(可用ffmpeg -h显示说明来确认单位。)
例如,单位为bits/sec的情况时,欲指定流量64kbps时需输入‘ -ab 64k ’;单位为kbits/sec的情况时则需输入‘ -ab 64 ’。
- 以-acodec及-vcodec所指定的编解码器名称,会根据使用的ffmpeg版本而有所不同。例如使用AAC编解码器时,会有输入aac与 libfaac的情况。此外,编解码器有分为仅供解码时使用与仅供编码时使用,因此一定要利用
ffmpeg -formats
确 认输入的编解码器是否能运作。
[编辑 ] 范例
- 将MPEG-1影片转换成MPEG-4格式之范例
ffmpeg -i inputfile.mpg -f mp4 -acodec libfaac -vcodec mpeg4 -b 256k -ab 64k outputfile.mp4
- 将MP3声音转换成MPEG-4格式之范例
ffmpeg -i inputfile.mp3 -f mp4 -acodec libaac -vn -ab 64k outputfile.mp4
- 将DVD的VOB档转换成VideoCD格式的MPEG-1档之范例
ffmpeg -i inputfile.vob -f mpeg -acodec mp2 -vcodec mpeg1video -s 352x240 -b 1152k -ab 128k outputfile.mpg
- 将AVI影片转换成H.264格式的M4V档之范例
- ffmpeg -i inputfile.avi -f mp4 -acodec libfaac -vcodec libx264 -b 512k -ab 320k outputfile.m4v
- 将任何影片转换成东芝REGZA可辨识的MPEG2格式之范例
- ffmpeg -i inputfile -target ntsc-svcd -ab 128k -aspect 4:3 -s 720x480 outputfile.mpg
- 连接复数的AVI影片档之范例(在此范例中须一度暂时将AVI档转换成MPEG-1档(MPEG-1, MPEG-2 PSDV格式亦可连接)、
ffmpeg -i input1.avi -sameq inputfile_01.mpg ffmpeg -i input2.avi -sameq inputfile_02.mpg cat inputfile_01.mpg inputfile_02.mpg > inputfile_all.mpg ffmpeg -i inputfile_all.mpg -sameq outputfile.avi ============================================================================= http://ffmpeg.org/ffmpeg-doc.html http://ubuntuforums.org/showthread.php?t=1392026 同时搞明白的一些问题在alsa 体系中声卡(也可能是麦克风,)叫hw:0,0 而在oss 体系中叫/dev/dsp (用词可能不太专业) Linux在安装了声卡后,会有一些设备文件生成。采集数字样本的/dev/dsp文件,针对混音器的/dev/mixer文件,用于音序器的/dev/sequencer,/dev/audio文件一个基于兼容性考虑的声音设备文件。只要向dev/audio中输入wav文件就能发出声音。而对/dev/dsp文件读取就能得到WAV文件格式的声音文件。