ffmpeg 常用命令功能汇总

主要命令:
	ffmpeg [input_file_options] -i input_file  [output_file_options] output_file
	注意: "-i input_file" 表示输入的文件或设备.
	     输入文件或设备相关的配置必须在"-i input_file"前设定, 在之后写的是用于输出文件的配置. 


ffmpeg -version  //查看ffmpeg版本号,并编译时配置
 
ffmpeg -formats  //Show available formats (including devices).

ffmpeg -devices  //Show available devices.

ffmpeg -codecs   //Show all codecs known to libavcodec.

ffmpeg -decoders //Show available decoders.

ffmpeg -encoders //Show all available encoders.

ffmpeg -protocols //Show available protocols.

ffmpeg -pix_fmts  //Show available pixel formats.


参数选项:

-f  用于指定文件格式. 可用"ffmpeg -formats"是看能支持的文件格式
	rawvideo用于指定只有纯图像像素数据的文件

-i  用于指定输入文件或设备名

-y  用于不用确认直接替换存在的输出文件

-t  用于指定输入或输出文件的持续时间.

-ss 用于指定视频文件从什么时间开始

-to 用于指定视频文件在什么时间结束

-vframes number 用于指定输出多少帧数据到输出文件

-framerate number 用于指定输入文件或设备的帧率

-r  用于指定输入或输出文件的帧率,多少帧每秒(fps)
    // -re 是指按播放的速度来读取输入帧数据并传输

-s和-video_size  用于指定图像的分辨率, 如"-video_size 640x480"
    // -video_size 只能用于指定输入文件或设备的分辨率, -s可用于指定输入和输出

-aspect 用于指定图像比例. "4:3", "16:9"

-vn  用于指定没有视频图像输出.

-vcodec codec  用于指定输出文件使用什么编码格式. "-vcodec copy"表示使用原文件的编码格式, "-vcodec h264"表示使用h264编码

-pix_fmt 或 -pixel_format  用于指定输入或输出的图像像素格式。可用"ffmpeg -pix_fmts"查看支持的像素格式.
	 

-an  用于指定没有声音数据输出

-acodec codec 指定使用的声音编解码器

-b 100k  用于指定输出视频文件的码率为100k, 数字越大越清晰.
   -b:v 可用于指定视频的码率
   -b:a 可用于指定音频的码率


1. 视频文件简单转换成另一个格式的视频文件, 会默认使用H264编码格式输出视频文件.
   ffmpeg -i input.avi output.mkv

2. 把一个视频文件my.avi和一个声音文件my.mp3合并成一个音视频文件my.mkv 
   ffmpeg –i my.avi –i my.mp3 –vcodec copy –acodec copy my.mkv


3. 把音视频文件my.mkv里的声音数据去掉生成只有图像的my.avi文件, 并使用h264编码
   ffmpeg -i my.mkv -vcodec h264 -an my.avi

4. 把音视频文件my.mkv里的图像数据去掉生成只有声音的my.aac文件, 并使用aac编码
   ffmpeg -i my.mkv -acodec aac -vn my.aac

5. 把多个图像文件使用h264编码封装成avi文件,如有my0.jpg, my1.jpg ... my99.jpg
   ffmpeg -i my%d.jpg  -vcodec h264 my.avi

6. 指定音视频文件把1分30秒到5分20秒的内容输出到另一个文件
   ffmpeg -ss 00:01:30 -i my.avi -to 00:05:20 -vcodec copy -acodec copy my.mkv

7. 把视频文件里内容输出成多张图像
   ffmpeg -i my2.avi -r 1 -f image2  my%d.jpg

   只输出一张图像
   ffmpeg -i my2.avi -r 1 -f image2 -t 0.0001 my%d.jpg

8. 从音视频文件里生成yuyv422格式的数据
   ffmpeg -i 99bear.mp4  -r 1 -f rawvideo -pix_fmt yuyv422 my.yuyv

   //yuv数据可用ffplay来播放
   ffplay -f rawvideo -video_size 640x480 -pixel_format yuyv422 my.yuyv 


9. 改变原视频文件的分辨率大小为640x480, 使用h264编码, 声音使用aac编码, 并指定视频输出的码率为100k.
   ffmpeg -i 78.flv -vcodec h264 -acodec aac -s 640x480 -b:v 100k 78.avi

10. 指定把视频文件里在第500秒开始30帧图像数据保存为gif, 指定一秒2张图像的速率
    ffmpeg -ss 500 -r 2 -i 99bear.mp4 -vframes 30 my.gif


11. 合并多个同格式的视频文件. 如把"1.flv  2.flv  3.flv"三个文件合并为my.avi
    先创建一个文本文件files.txt, 里面记录要合并的文件名:
    files.txt:
	    file '1.flv'
	    file '2.flv'
    	    file '3.flv'
    然后:
          ffmpeg -f concat -i files.txt -vcodec copy -acodec copy my.avi


12. 视频文件增加logo.
	  ffmpeg -i God.rm -i logo.png -filter_complex overlay my.avi
    
    指定logo的位置, overlay=logo在视频里开始显示的x坐标:y坐标. 可以用变量W/w, H/h来表示, W表示视频图像的宽度 H表示视频图像的高度, w表示logo的宽度, h表示logo的高度
  
    如右下角: ffmpeg -i God.rm -i logo.png -filter_complex overlay=W-w:H-h my.avi
    如居中:  ffmpeg -i God.rm -i logo.png -filter_complex overlay=W/2-w/2:H/2-h/2 my.avi


13. 操作摄像头.
    查看摄像头所支持的数据格式及分辨率:
    ffmpeg -f v4l2 -list_formats all -i /dev/video0
    
    录制10秒摄像头里的内容, 并指定帧率为10和使用h264编码:
    ffmpeg -t 10 -f v4l2 -r 10 -i /dev/video0  -vcodec h264 ./a.avi

    录制摄像头的内容为gif,并指定分辨率及帧率:
    ffmpeg -f v4l2 -video_size 320x240 -r 2 -i /dev/video0  o.gif


14. 操作声卡, 录音10秒并使用aac编码:
    ffmpeg -t 10 -f alsa -i default -acodec aac my.aac	

    录音10秒保存为wav文件:
    ffmpeg -t 10 -f alsa -i default my.wav

15. 录屏,指定录制的分辨率及帧率, 并使用h264编码:
    ffmpeg -f x11grab -video_size 1024x768 -r 10 -i :0 -vcodec h264 ./a.avi

    录屏,并指定从屏幕的坐标10:20开始区域录制:
    ffmpeg -f x11grab -video_size 800x600 -r 5 -i :0.0+10,20 -vcodec h264 ./b.avi

    录屏并录制声音:
    ffmpeg -f x11grab -r 5 -i :0 -f alsa -i default -vcodec h264 -acodec aac my.avi

udp视频流测试:

      1)  使用udp接收视频流数据:
	      ffplay udp:/127.0.0.1:7788
     2)  使用ffmpeg推送udp视频流:
	     ffmpeg -re -i /disk3/allshares/MV/66.mp4 -f h264 udp://127.0.0.1:7788

rtsp推流的测试:

	1)  直接使用ffplay播放码流:
		ffplay -rtsp_flags listen -f rtsp -i rtsp://127.0.0.1:7788

    2) 使用ffmpeg接收码流并保存为文件:  
	 ffmpeg -rtsp_flags listen -f rtsp -i rtsp://127.0.0.1:7788 aa.mp4

    3) 使用ffmpeg推rtsp流:
	 ffmpeg -re -i /disk3/allshares/MV/66.mp4 -vcodec copy -acodec copy -f rtsp rtsp://127.0.0.1:7788
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值