FFMPEG命令

来源:互联网 发布:java框架书籍知乎 编辑:程序博客网 时间:2024/06/02 06:16
  • 一、ffmpeg常用命令基本命令:

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 不处理音频
核心全命令使用参数。应用变换外壳ffshow。

  • 二、ffmpeg详细命令:

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 640×480 -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测试
0 0
原创粉丝点击