FFmpeg系列(一)—— FFmpeg常用命令总结

1、ffplay命令

ffplay命令主要用来播放视频

1.1 ffplay播放控制:

使用ffplay播放视频时,可以使用以下快捷键控制视频播放

选项说明选项说明
q,ESC退出播放t,c循环切换字幕 / 节目流
f,左键双击全屏w循环切换过滤器或显示模式
p暂停s逐帧播放
m静音left / right向后 / 向前拖动10秒
9,0减少和增加音量down / up向后 / 向前拖动1分钟
a,v循环切换音频 / 视频流右击拖动到指定百分比播放位置

1.2 ffplay播放选项

选项说明举例
-i设置输入流ffplay -i a.mp4
-x,-y强制以指定宽度或高度播放ffplay -x 100 -y 480 a.flv
-t从头开始播放指定长度,如只播放前10sffplay -t 10 a.mp4
-ar,-ac设置采样频率和声道数ffplay -ar 48000 -ac 2 -f f32le a.pcm
-an,-vn,-sn不播放音频或视频或字幕ffplay a.mp4 -an
-acodec, -vcodec, -scodec强制使用设置的音频 / 视频/字幕解码器进行解码ffplay -vcodec h264 a.mp4
-pixel_format以指定的像素格式播放ffplay -pixel_format yuv420p a.flv
-window_title设置窗口标题(默认为输入文件名)ffplay -window_title hello a.mp4
-exitonkeydown键盘按下任何键退出播放ffplay -exitonkeydown a.mp4
-autoexit视频播放完毕后退出ffplay -autoexit a.mp4
-video_size size设置显示帧存储帧尺寸 ,仅适用没有包含帧大小的视频(如YUV)ffplay -video_size 320x240 a.yuv
-loop设置播放循环次数ffplay -loop 2 a.mp4
-framedrop如果视频不同步则丢弃视频帧。主时钟非视频时钟时默认开启。若需禁用则使用 noframedrop

更多命令请参考:http://www.ffmpeg.org/ffplay.html

1.3 ffplay常用媒体播放命令举例

功能举例
播放本地文件ffplay -window_title “test time” -ss 2 -t 10 -autoexit test.mp4
播放网络流ffplay -window_title “rtmp stream” rtmp://202.69.69.180:443/webcast/bshdlive pc
播放YUV数据ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 test.yuv
播放RGB数据ffplay -pixel_format rgb24 -video_size 320x240 -i test.rgb
播放PCM数据ffplay -ar 48000 -ac 2 -f f32le test.pcm

1.4 ffplay过滤器

功能命令
音频倍速播放ffplay -i test.mp4 -af atempo=2
视频倍速播放ffplay -i test.mp4 -vf setpts=PTS/2
音视频同时倍速播放ffplay -i test.mp4 -vf setpts=PTS/2 -af atempo=2

2、ffmpeg命令

ffmpeg命令主要用来做音视频编码,音视频格式转换

2.1 ffmpeg选项

选项说明
-i,-f,-ss,-t输入流,输出格式(默认根据后缀自动判断),开始时间,时间长度。
eg:ffmpeg -i a.mp4 -codec copy -ss 10 -t 20 -f flv a.flv
-aframes,-vframes设置要输出的音频 / 视频帧数。
-b:a,-b:v,-b音频码率 / 视频码率 / 音视频码率(比特率)
-r设定视频帧速率(1秒多少帧)
-s设置画面的宽高(用于分辨率转换)
-acodec,-vcodec音频 / 视频编码器,设置copy表示原始编解码数据必须被拷贝。
-an,-vn不处理音频 / 视频
-af,-vf音频 / 视频过滤器
-aspect设置播放时的横纵拉伸比

示例1:ffmpeg - i test.mp4 -vframes 300 -b:v 300k -r 30 -s 600x480 -aspect 16:9 -vcodec libx265 out.h265
说明:输入文件为test.mp4,输出总帧数300,视频码率300k,帧速率30,画面宽高640*480,显示横纵拉伸比16:9,视频编码器为H265,输入文件名out.h265;整个命令就是把mp4的视频文件转换成h265格式的视频文件。

示例2:ffmpeg -i test.mp4 -acodec copy -vn audio.mp3
说明:提取音频数据,保持原有的封装格式

更多选项请参考:http://www.ffmpeg.org/ffmpeg.html

2.2 ffmpeg提取像素格式举例

功能命令
提取 3 秒YUV数据,分辨率和源视频一致ffmpeg -i a.mp4 -t 3 -pix_fmt yuv420p out.yuv
提取 3 秒YUV数据,分辨率转为 320x240ffmpeg -i a.mp4 -t 3 -pix_fmt yuv420p -s 320x240 out.yuv
提取 3 秒RGB数据,分辨率转为 320x240ffmpeg -i a.mp4 -t 3 -pix_fmt rgb24 -s 320x240 out.rgb
RGB 和 YUV 之间的转换ffmpeg -s 320x240 -pix_fmt yuv420p i a.yuv -pix_fmt rgb24 out.rgb
提取PCM数据ffmpeg -i a.mp3 -ar 48000 -ac 2 -sample_fmt s16 out.wav

2.3 ffmpeg转封装举例

功能命令
保持编码格式ffmpeg -i test.mp4 -codec copy out.ts //根据后缀自动选择格式
改变编码格式ffmpeg -i a.mp4 -vcodec libx265 -acodec libmp3lame out.mkv
mp4转tsffmpeg -i a.mp4 -codec copy -vbsf h264_mp4toannexb out.ts //vbsf是为了做兼容
修改帧率ffmpeg -i a.mp4 -r 15 out.mp4 //每秒15帧
修改音视频码率ffmpeg -i a.mp4 -b:v 400k -b:a 192k out.mp4
修改视频分辨率ffmpeg -i a.mp4 -s 480x270 out.mp4
修改音频采样率ffmpeg -i a.mp4 -ar 44100 out.mp4

2.4 视频裁剪拼接、图片与视频转换

功能命令说明
视频裁剪ffmpeg -i a.mp4 -ss 00:05:00 -t 10 -codec copy out.mp4从第5分钟开始视频裁剪10秒的视频
ts视频拼接ffmpeg -f concat -i ts.txt -codec copy out.mp4推荐使用ts格式进行拼接
截取1张图片ffmpeg -i a.mp4 -y -f image2 -ss 00:00:05 -vframes 1 -s 640x360 out.jpg从第5秒开始截一张图,-y覆盖同名图片
截取5张图片ffmpeg -i a.mp4 -t 5 -s 640x360 -r 10 out%03d.jpg%03d表示三位数的整数
图片转视频ffmpeg -f image2 -i out%03d.jpg -r 5 video.gif将out开头的五张图片转成MP4视频

注:视频拼接的ts.txt文件里面存放的是要拼接的视频文件列表,一个文件写一行,格式为file ‘1.ts’。

2.5 ffmpeg过滤器

裁剪视频:ffplay -i input.mp4 -vf crop=iw/3:ih:iw/3*2:0
说明:crop后面的参数依次为:裁剪区域的宽和高,以及裁剪区域左上角坐标值x, y,上面这条命令功能为:裁剪掉左侧2/3,只保留右侧的1/3的视频

添加文字水印:ffplay -i a.mp4 -vf “drawtext=fontsize=50:fontfile=FreeSerif.ttf:text=‘hello world’:fontcolor=green:x=400:y=200:alpha=0.3”
说明:-vf是视频过滤器,上面这条命令功能为:在视频(400, 200)位置显示一个hello world的文字水印,字体大小50,颜色为绿色,透明度为0.3

添加图片水印:ffplay -i a.mp4 -vf “movie=logo.png[watermark];[in][watermark]overlay=x=10:y=10[out]” out.mp4
说明:在视频左上角(10, 10)位置显示一张图片水印

画中画:ffplay -i a.mp4 -vf “movie=b.mp4[sub];[in][sub]overlay=x=20:y=20[out]”
说明:a.mp4作为主视频播放,b.mp4作为画中画在屏幕左上角(20, 20)的位置显示播放。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值