ffmpeg -i vid.mp4 -f mp3 -ar 44100 -ac 2 -ab 192 outaudio2.mp3
指定采样率44100,通道2立体声,码率192kbps
ffmpeg -i xiaguangcheng.mp4 -b:a 128k dest1.mp3 //mp3与原视频时长相等
ffmpeg -i xiaguangcheng.mp4 -f mp3 dest2.mp3 //mp3为原视频时长的两倍
ffmpeg -i xiaguangcheng.mp4 -f mp3 -ar 44100 -ac 2 -ab 128 xia2.mp3 //mp3为原视频时长的两倍
ffmpeg -i mothin.mkv -vn -ar 44100 -ac 2 -ab 128 -f mp3 xia3.mp3
ffmpeg -i vid.mkv -vcodec copy -acodec copy vid1.mp4
-vcodec copy 和 -acodec copy 表示所使用的视频和音频编码格式,为原样拷贝。
6对视频切片操作
ffmpeg -i vid.mp4 -ss 00:00:03 -t 5 vid2.mp4
表示从vid.mp4的第三秒开始切割,长度为5秒,然后将切割出来的视频生成vid2.mp4.
这个操作还可以用来提供切片文件索引给h5用来做hls直播源。
ffmpeg -i vid.mp4 -strict -2 -c:v libx264 -c:a aac -f hls test.m3u8
主要把视频源切成若干个.ts格式的视频片段然后生成一个.m3u8的切片文件索引提供给html5的video做hls直播源
7加减速视频
ffmpeg -i vid.mp4 -vf "setpts=0.5*PTS" vid3.mp4
但是发现这样的加速只是将视频画面加速了,但是视频声音并没有加速,因此本来14秒的视频,现在7秒就播放玩了,但是还有7秒却在播放原来最后7秒的声音。
ffmpeg -i vid.mp4 -vf "setpts=2.0*PTS" vid4.mp4
这个是减速视频
8截取指定视频时间图片
ffmpeg -i vid.mp4 -y -f image2 -t 0.001 -ss 10 -s 1920x1080 haha.png
-f 指定格式
-t 延长时间
-ss 开始时间单位为秒
-s 生成图片规格
将视频转换为gif
ffmpeg -ss 00:00:00.000 -i vid.mp4 -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 out6.gif
将输入的文件从(-ss)设定的时间开始以10帧频率,输出到320x240大小的 gif 中,时间长度为-t 设定的参数。
ffmpeg -i frame%3d.png -i silian.mp3 -s hd720 -vcodec mpeg4 out7.avi
这里有个问题,为什么我并没有设定合成视频的帧数,这些图片还是会合成之前分离出这些图片的那个视频的时间长度?
11 设置输出文件帧数
ffmpeg -i vid.mp4 -r 1 outv1.avi
将vid.mp4 以帧数为1输出为outv1.avi。这样我们在观看outv1.avi的时候,就会发现每张图会停顿一秒,直至播放结束。
ffmpeg -r 1 -i vid.mp4 -r 24 outav3.avi
vid.mp4中的每帧图片都会在outav3.avi中播放一秒
12 设置输出文件编码率
ffmpeg -i vid.mp4 -b:v 64k -bufsize 64k outav6.mp4
设置输出文件编码率 64 kbit/s
13 添加水印
ffmpeg -i vid.mp4 -i icon.png -filter_complex overlay="(main_w/2)-(overlay_w/2):(main_h/2)-(overlay_h)/2" output222.mp4
在视频的中间位置添加一个水印。
ffmpeg -i test.mp4 -vf scale=-1:480 -acodec aac -vcodec h264 test1.mp4
其中vf参数用来指定视频滤镜,其中scale表示缩放,后面的数字表示缩放至-1:480px。宽度和高度只需要指定一个就可以了,这里指定了宽度为480,高度会根据原视频的比例来计算。手机拍摄的视频一般都是音频为aac,视频为h264编码。另外音频还有faac编码。
15 录制网络视频
ffmpeg -i https://kangaiweishi.com/test2.mp4 -vcodec copy xiaguangcheng.mp4
可以将视频从“https://kangaiweishi.com/test2.mp4”这个网址里面copy下来。
16 分离视频音频
ffmpeg -i xiaguangcheng.mp4 -vcodec copy -an abc.mp4 //分离出来的abc.mp4是没有声音的
ffmpeg -i xiaguangcheng.mp4 -acodec copy -vn edf.aac //分离出来edf.aac的音频文件,但是播放不了
ffmpeg -i abc.mp4 -i edf.aac -vcodec copy -acodec copy xia.mp4 //这样播放的话,有画面也有声音
17 视频解复用 没懂什么意思
ffmpeg -i xiaguangcheng.mp4 -vcodec copy -an -f m4v xia.264
18 视频转码
ffmpeg -i xiaguangcheng.mp4 -vcodec h264 -s 352*278 -an -f m4v xia1.264
转码为码流原始文件,还是没懂
ffmpeg -i xiaguangcheng.mp4 -vcodec h264 -bf 0 -g 25 -s 352*278 -an -f m4v xia2.264 //-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制
转码为封装文件
ffmpeg -i xiaguangcheng.avi -vcodec mpeg4 -vtag xvid -qsame xia_xvid.avi //这行命令执行不通过
19 ffmpeg 裁剪视频尺寸
如果视频为640x360的横向视频,我们要一个尺寸为360x360的正方形视频,那么我们就可以将横向视频进行裁剪。
ffmpeg -i xiaguangcheng.mp4 -strict -2 -vf crop=360:360:140:0 xiaxia.mp4
其中crop=width:height:x:y。因为只裁剪宽度,所以y为0,不用动,x=(640-360)/2=140;
20 转换视频格式
ffmpeg -i xiaguangcheng.mp4 -c:v libx264 -crf 30 xia12.avi
-crf是控制转码后视频的质量,0-51,值越小视频质量越高文件越大。建议值在18-28之间。
附录基本概念
比特率,就是每秒钟输出多少kb的参数。800Kbps表示没秒视频占用100KB空间大小。
帧数:单位fps,每秒钟播放的图片数。30fps流畅,50fps已经行云流水,60fps已经满足绝大多数要求。在同一视频同一码率情况下,帧数越大,画质越不好。因为每张画面会分担每秒有限的文件体积,如果画面越多,那么每张画面所能表现的内容就越有限。