FFMPEG常用命令持续更新

这里通过软件MediaInfo来查看视频信息。其中黄色为帧数,红色为比特率


基本用法:

  • 1除来上面我们通过软件来查看视频信息之外,我们还可以使用ffmpeg命令查看
ffmpeg -i vid.mp4
image.png
  • 2 拆分视频为多张图片
ffmpeg -i vid.mp4 frame%03d.png   //%d也可以。支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI


03的%表示有三位,不够三位前面补充0,运行上面这行代码,该视频一共生成了329张图片

image.png

我们可以手动指定每秒生成的图片数量

ffmpeg -i vid.mp4 frame%03d.png -r 20

这行命令表示每秒生成20张图片。我们还可以把生成的这些图片重新整合成视频。

ffmpeg -i frame%3d.png out.mp4
image.png
image.png

但是这样生成的视频,是没有声音的。但是之前的横屏播放,现在变成了竖屏播放。

  • 3从视频中提取音频文件保存为mp3
ffmpeg -i vid.mp4 -f mp3 outaudio.mp3
image.png

但是生成的mp3时长超过了视频时长。

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

  • 4将声音和无声视频 合并为有声视频
ffmpeg -i outaudio2.mp3 -i out.mp4 outav.mp4

经过这样的一翻转化之后,视频大小降低了不少


image.png
  • 5视频封装格式转换

如果只是封装格式的简单转换,那么直接输出就可以

ffmpeg -i vid.mp4 vid.mkv

将mkv转码为mp4

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 生成图片规格

image.png
  • 9 转换为gif
ffmpeg -i vid.mp4 -vframes 5 -y -f gif out5.gif

这里是将视频的前5帧转换为gif


out5.gif

将视频转换为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 设定的参数。

out6.gif

也可以直接转,未压缩

ffmpeg -i vid.mp4 vid.gif
  • 10 将图片和声音合并为mpeg4编码方式分辨率为720p的avi文件
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

在视频的中间位置添加一个水印。

image.png
14 缩放视频
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下来。

image.png
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
640x360.png
360x360.png

其中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已经满足绝大多数要求。在同一视频同一码率情况下,帧数越大,画质越不好。因为每张画面会分担每秒有限的文件体积,如果画面越多,那么每张画面所能表现的内容就越有限。

分辨率和编码率的关系:同一码率,分辨率越高,图像马赛克越多。

采样率:单位赫兹Hz。音频文件一般使用的采样率为44100Hz,这是经过反复试验之后的结果。

MPEG格式   它的英文全称为Moving Picture Expert Group,即运动图像专家组格式,家里常看的VCD、SVCD、DVD就是这种格式。MPEG文件格式是运动图像压缩算法的国际标准,它采用了有损压缩方法从而减少运动图像中的冗余信息。MPEG的压缩方法说的更加深入一点就是保留相邻两幅画面绝大多数相同的部分,而把后续图像中和前面图像有冗余的部分去除,从而达到压缩的目的。目前MPEG格式有三个压缩标准,分别是MPEG-1、MPEG-2、和MPEG-4,另外,MPEG-7与MPEG-21仍处在研发阶段。   MPEG-1:制定于1992年,它是针对1.5Mbps以下数据传输率的数字存储媒体运动图像及其伴音编码而设计的国际标准。也就是我们通常所见到的VCD制作格式。这种视频格式的文件扩展名包括.mpg、.mlv、.mpe、.mpeg及VCD光盘中的.dat文件等。   MPEG-2:制定于1994年,设计目标为高级工业标准的图像质量以及更高的传输率。这种格式主要应用在DVD/SVCD的制作(压缩)方面,同时在一些HDTV(高清晰电视广播)和一些高要求视频编辑、处理上面也有相当的应用。这种视频格式的文件扩展名包括.mpg、.mpe、.mpeg、.m2v及DVD光盘上的.vob文件等。   MPEG-4:制定于1998年,MPEG-4是为了播放流式媒体的高质量视频而专门设计的,它可利用很窄的带度,通过帧重建技术,压缩和传输数据,以求使用最少的数据获得最佳的图像质量。MPEG-4最有吸引力的地方在于它能够保存接近于DVD画质的小体积视频文件。这种视频格式的文件扩展名包括.asf、.mov和DivX 、AVI等

RTSP协议支持实时播放,而Http协议则需要缓冲一定时间才能够播放。
参考:FFmpeg开发(一)常用处理视频命令

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • 前言 如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流...
    sillen阅读 5,363评论 2 45
  • 前言 如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流...
    骚之哈塞給阅读 25,669评论 6 39
  • 前言 如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流...
    RichyLeo阅读 17,340评论 1 22
  • 写在前面: 今天往移动硬盘上拷电影的时候忽然遇见文件过大无法拷贝的问题。因为一个移动硬盘如果分区为NTFS格式,那...
    vincentgemini阅读 14,131评论 0 9
  • 0 概述 FFmpeg是一套领先的音视频多媒体处理开源框架,采用LGPL或GPL许可证。它提供了对音视频的采集、编...
    但行耕者阅读 6,762评论 0 19