FFMPEG-01

FFMPEG下载编译与安装

FFmpeg命令分类

1. 基本信息查询命令
2. 录制命令
3. 分解复用命令
4. 处理原始数据命令
5. 裁剪与合并命令
6. 图片与视频的转换
7. 直播相关命令
8. 各种滤镜命令

FFmpeg处理流程

输入文件 =(解包)=> 编码数据包 =(编码)=> 解码后数据帧 =(编码)=> 编码数据包 =(打包)=> 输出文件

1. 基本信息查询命令

常用的查询命令有如下15个
命令 作用
-version 显示版本
-format 显示可用的格式
-demuxers 显示可用的demuxers
-protocols 显示可用的协议
-muxers 显示可用的muxers
-filters 显示可用的过滤器
-devices 显示可用的设备
-pix_fmts 显示可用的像素格式
-codecs 显示所有编解码器
-sample_fmts 显示可用的采样格式
-decoders 显示可用的解码器
-layouts 显示channel名称
-encoders 显示所有的编码器
-colors 显示是别的颜色名称
-bsfs 显示比特流filter

2. 录制命令

2.1 FFmpeg录制屏幕
  • ffmpeg -f avfoundation -i 1 -r 30 out.yuv
    -f : 指定使用avfoundation采集数据
    -i : 指定从哪儿采集数据(输入源),参数是一个设备
    索引号(1.表示输入源是屏幕)
    -r:指定帧率(rate,帧)。
    按ffmpeg官方文档说-r与-framerate作用相同,但实际测试时发现不同。-framerate 用于限制输入,而-r用于限制输出。
    .yuv 原始数据

注意,桌面的输入对帧率没有要求,所以不用限制桌面的帧率。其实限制了也没用。

2.1 查询设备索引号
  • ffmpeg -f avfoundation -list_devices true -i ""


    设备索引号查询.png
2.2 FFmpeg录音命令
  • ffmpeg -f avfoundation -i :0 out.wav
    :0 表示使用麦克风设备,表示音频设备前面要加冒号
2.3 FFmpeg录视频
  • ffmpeg -framerate 30 -f avfoundation -i 0 video.mp4
    -framerate 上面已经解释过了,是限制输入的比特率的
    此外还有:
    -video_size用来限制视频尺寸,如 1280x720

3. 分解与复用

流拷贝是通过将 copy 参数提供给-codec选项来选择流的模式。它使得ffmpeg省略了指定流的解码和编码步骤,所以它只能进行多路分解和多路复用。 这对于更改容器格式或修改容器级元数据很有用。

3.1 多媒体格式的转换
  • ffmpeg -i f35.mov -c:v copy -c:a copy f35.flv
    -i:输入文件
    -c:v(-vcodec) copy: 视频编码处理方式
    -c:a(-acodec) copy: 音频编码处理方式
    copy 指明只拷贝,不做编解码
3.1.1 抽取视频
  • ffmpeg -i f35.mov -vcodec copy -an f35.h264
    an: a 代表音频,n 代表 no 也就是无音频的意思。
3.1.2 抽取音频
  • ffmpeg -i f35.mov -acodec copy -vn f35.aac
    vn: v 代表视频,n 代表 no 也就是无视频的意思。

4. 处理原始数据命令

4.1 FFmpeg提取YUV数据
  • ffmpeg -i f35.mov -an -c:v rawvideo -pix_fmt yuv420p f35.yuv
    -i: 输入的源
    -an: 不包含音频
    -c:v rawvideo 对视频编码处理成rawvideo格式
    -pix_fmt yuv420p 像素格式设置成yuv 4:2:0(最常用的像素格式类型)
4.2 FFmpeg提取PCM数据
  • ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
    -ar:音频采样率 rate
    -ac:声道的数量
    -f:数据存储格式
    s16le:一种数据存储方式
  • ffplay -ar 44100 -ac 2 -f s16le f35.pcm
    播放的时候,我们也需要带上采样率,声道数量以及数据存储格式这些参数来告诉ffplay如何去播放pcm文件

5. 滤镜命令

先看一下FFmpeg滤镜的流程:


滤镜流程图.png
5.1 视频裁剪
  • ffmpeg -i f36.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy f36_out.mp4
    -vf: 表示视频滤镜
    crop: 滤镜的类型,裁剪
    in_w: 输入视频的宽度
    in_h: 输入视频的高度
    还有很多有意思的滤镜,可以看一下简书FFMPEG 入门这篇文章里面举的例子

6. FFmpeg音视频裁剪

6.1 裁剪
  • ffmpeg -i f36.mp4 -ss 00:00:10 -t 6 f36_crop_10.mp4
    -ss 表示音视频从哪个时间开始裁剪
    -t 表示裁剪时长
6.2 合并
  • ffmpeg -f concat -i inputs.txt out.flv
    -f concat : 告诉ffmpeg要对后面的文件进行拼接
    -i inputs.txt: i 表示输入源, inputs.txt里面存储着要拼接的文件列表
    inputs.txt 内容是 ‘file filename’ 格式的,如:

file 'f36_crop_10.ts'
file 'f36_crop_6.ts'

注意,这里合并的两个文件需要是ts格式的,入过不是ts格式的文件,合并的时候就会出现一些奇奇怪怪的问题。原因后面再研究。

7. 图片/视频互转命令

7.1 视频转图片
  • ffmpeg -i f35.mov -r 1 -f image2 ./images/image-%3d.jpeg
    -i 指定的输入文件
    -r 转换图片的帧率,即:每秒转换出多少张图片
    -f 告诉ffmpeg:要将输出的文件转换成什么格式,如:image2
7.2 图片转视频
  • ffmpeg -i image-%3d.png images.mp4
    这样转出的视频速度会非常快,因为视频是30fps的,而图片裁剪为1fps,这样我们的到的图片数量很少,得到的视频也会播放的相当快

8. 直播推/拉流

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

推荐阅读更多精彩内容

  • 前言 如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流...
    sillen阅读 5,367评论 2 45
  • 前言 如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流...
    RichyLeo阅读 17,358评论 1 22
  • 更多音视频知识请点击:专注音视频开发 ffmpeg 的封装转换 FFmpeg的封装转换部分,主要是通过libavf...
    C_GO流媒体后台开发阅读 4,868评论 1 4
  • 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an output_fi...
    XLAccount阅读 3,061评论 0 8
  • 天空拉开了窗帘 太阳与早晨照旧一前一后出了门 他们是孪生兄弟 车窗外的树,把阳光切割的一明一暗、东倒西歪 一层层隐...
    几吸几呼阅读 181评论 0 0