音视频开发三:FFmpeg安装与常用命令
前言:在不同平台下安装FFmpeg
1、mac系统下安装ffmpeg。
打开terminal,运行:brew install ffmpeg
安装完后,terminal中输入:ffmpeg,出现下面提示即安装成功。
2、window环境下安装ffmpeg.
进入FFmpeg官网
下载完后解压到一个地方。
配置环境变量,配置到bin目录即可。
配置好后,打开命令窗口。输入ffmpeg,出现如下信息即配置成功。
一:FFmpeg处理音视频的流程
二:FFmpeg处理音视频的命令。
1、基本信息查询。
-version 显示版本-demuxers 显示可用的demuxers-muxers 显示可用的muxers-devices 显示可用的设备-decoders 显示可用的解码器-encoders 显示可用的编码器-formats 显示可用的格式-protocols 显示可用的协议-filters 显示可用的过滤器-pix_fmts 显示可用的像素格式-sample_fmts 显示可用的采样格式-layouts 显示channel名称-colors 显示识别的颜色名称示例:ffmpeg -version
2、录制命令
mac下的录制命令:(退出录制屏幕:control+c)
ffmpeg -f avfoundation -i 1 -r 30 out.mp4-f:指定使用 avfoundation 采集数据-i:指定从哪采集数据,他是一个文件索引号-r:指定帧率
window下的录制命令:(退出录制屏幕:ctrl+c)
ffmpeg -f gdigrab -i desktop luping.mp4-f:指定使用 gdigrab 采集数据-i:指定从哪采集数据,他是一个文件索引号
2.2、播放yuv格式数据:
ffplay -s 3360x2100 -pix_fmt uyvy422 out.yuv
2.3、查看可用设备
mac系统下的命令:
ffmpeg -f avfoundation -list_devices true -i ""
2.4、录制音频
mac系统下的命令:
ffmpeg -f avfoundation -i :0 out.wav:0 代表音频设备
3、分解与复用
3.1、多媒体格式转换
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv-i:输入文件-vcodec :视频编码处理方式-acodec:音频编码处理方式copy:指明只拷贝,不做编解码
3.2、提取音频
ffmpeg -i out.mp4 -acodec copy -vn out.aacvn:v 代表视频,n 代表 no 也就是无视频的意思。
3.3、提取视频
ffmpeg -i out.mp4 -acodec copy -an out.h264an: a 代表视频,n 代表 no 也就是无音频的意思。
3.4、视频和音频合成
ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy muxer.mp4
4、提取原始数据
4.1、提取YUV数据
ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv-c:v rawvideo 指定将视频转成原始数据-pixel_format yuv420p 指定转换格式为yuv420p
ffplay -s wxh out.yuv
4.2、YUV转H264
ffmpeg -f rawvideo -pix_fmt yuv420p -s 320x240 -r 30 -i out.yuv -c:v libx264 -f rawvideo out.h264
4.3、提取PCM数据
ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcmffplay -ar 44100 -ac 2 -f s16le -i out.pcm
4.4、PCM转WAV
ffmpeg -f s16be -ar 8000 -ac 2 -acodec pcm_s16be -i input.raw output.wav
5、滤镜命令
ffmpeg可以使用libavfilter库中的过滤器处理原始音频和视频帧。 几个链式过滤器形成一个过滤器图形。 ffmpeg区分两种类型的过滤器图形:简单和复杂。
5.1、视频高度和宽度减小(默认是视频中心点)
ffmpeg -i out.mp4 -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy crop.mp4-vf:使用视频滤镜crop:裁剪视频in_w-200:宽度减小200in_h-200:高度减小200-c:v:视频编码器-c:a:音频编码器
6、音视频的裁剪与合并
ffmpeg -i out.mp4 -ss 00:00:00 -t 10 out1.mp4-ss 指定裁剪的开始时间,精确到秒-t 被裁剪后的时长。这种截取的好处是特别快,因为它不会对视频重新编码,直接截取相关时间,导出视频,但是这种方式会导致:如果视频结尾不是关键帧,那么视频最后就会出现一段空白。
ffmpeg -ss 00:00:00 -t 12 -accurate_seek -i input.mp4 -codec copy -avoid_negative_ts 1 output.mp4这样截取视频之后,空白视频是没有了,但是时间不会精确截取,它会找到下一个关键帧,补全这个视频,所以,导致连续分割的视频之间存在细微的交集。
ffmpeg -ss 00:00:00 -t 12 -i input.mp4 -c:v libx264 -c:a aac -strict experimental -b:a 98k output.mp4避免关键帧的丢失并精确截取时间,需要重新编码视频。
视频拼接:
新建一个files.txt文件,其中加入(必须是单引号)
file 'input1.mp4'
file 'input3.mp4'
file 'input5.mp4'
ffmpeg -f concat -i files.txt -c copy output.mp4这一行指令使用了-c copy,说明他只适用于视频切割产生的分段,被合并的视频必须是相同的参数!!!
如果你需要合并参数不同的视频,把-c copy去掉
或者自己写压制参数,
参考参数:
-c:v libx264 -crf 23 -profile:v high -level 5 -c:a aac -b:a 240k
7、视频转图片。
ffmpeg -i out.mp4 -r 1 -f image2 image-%3d.jpeg
8、图片转视频
ffmpeg -i image-%3d.jpeg images.mp4
9、视频转GIF
ffmpeg -i zhihui.mp4 -ss 00:00:00 -t 3 play.gif00:00:00 开始时间,分别为 时:分:秒
-t 3 :代表时长为3秒,时间越长生成的gif越大
10、视频去水印
ffmpeg -i logo.mp4 -filter_complex "delogo=x=450:y=1100:w=268:h=178:show=0" delogo.mp4-i:指定从哪采集数据-filter_complex:指定要使用的滤镜delogo:去水印的滤镜x=:开始的x轴位置y=:开始的y轴位置w=:水印的宽度h=:水印的高度show=:是否有绿色的框(0:无框;1:有框)
11、视频裁剪(裁剪出一个矩形)
ffmpeg -i logo.mp4 -vf crop=200:400:200:400 crop.mp4-vf:指定使用的滤镜crop:视频裁剪滤镜200:400:200:400 宽度:高度:x起始位置:y起始位置等同于如下:
ffmpeg -i logo.mp4 -vf crop=w=200:h=400:x=200:y=400 crop.mp4
12、视频拉流
ffmpeg -i http://video01.youju.sohu.com/9f03c23c-5bb0-4946-b82a-947182d9dd362_0_0.mp4 meinv.mp4
13、视频转换格式
ffmpeg -y -i view_view.ifox -acodec copy video.mp4view_view.ifox:原始视频格式
video.mp4:目标视频格式
音视频开发三:FFmpeg安装与常用命令相关推荐
- Android 音视频开发(三) -- Camera2 实现预览、拍照功能
音视频 系列文章 Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音):AudioTrack播放音频 Android 音视频开发(二) – Camera1 实现预览.拍 ...
- 【秒懂音视频开发】07_音频录制01_命令行
命令简介 FFmpeg的bin目录中提供了3个命令(可执行程序),可以直接在命令行上使用. 3个命令 ffmpeg ffmpeg的主要作用:对音视频进行编解码. # 将MP3文件转成WAV文件 ffm ...
- 音视频开发基础(二)常用的直播协议
如今网络的发展已经从1G,2G,3G,4G逐渐过渡到5G,5G网络的出现,音视频的使用就变得越来越广.从以前的泛娱乐过渡到了更深次的领域,比如在线教育,在线会议-然而,要想有完美的视屏体验,还是要从很 ...
- Android 音视频开发学习思路
Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) ...
- Android音视频开发从入门到精通,我这一路走来的经验分享
前不久,在国家统计局针对北京市进行的农民工市民化状况进行的调研中,从事信息技术,软件技术等IT服务业的人员也被当做农民工. 编程的门槛不高,薪资水平也还可观.这一直是"三百六十行,行行转IT ...
- iOS音视频开发七:视频采集
将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第七篇:iOS 视频采集 Demo.这个 ...
- iOS音视频开发八:视频编码,H.264 和 H.265 都支持
我们将通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第八篇:iOS 视频编码 Demo. ...
- Android 音视频开发(一) -- 使用AudioRecord 录制PCM(录音);AudioTrack播放音频
前言,音视频这块,确实比较难入门,本着学习的态度,我这边也跟着 Android 音视频开发入门指南 打怪升级,留下个脚印,大家共勉. 音视频 系列文章 Android 音视频开发(一) – 使用Aud ...
- Android 音视频开发(六) -- Android Mediaprojection 截屏和录屏
Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音):AudioTrack播放音频 Android 音视频开发(二) – Camera1 实现预览.拍照功能 Andro ...
最新文章
- 百亿级数据分表后怎么分页查询?
- 寒假每日一题(入门组)【week3 完结】
- 围观一下tp的游戏保护 一
- 【剑指offer】面试题56 - I:数组中数字出现的次数 I
- 软件开发中Alpha、Beta、RC、GA版本的含义
- 为什么要使用MQ消息中间件?
- 进程的定义组成组织方式特征
- python3实例车代码_Python编程pygame模块实现移动的小车示例代码
- 程序员面试题之解读构造函数
- bch纠错码 码长8_浅析BCH码的编码方法.docx
- 运筹学实验报告c语言,运筹学教案-实验.doc
- vga分辨率与时序配置
- 员工满意度调查问卷的设计注意事项
- Postgres-XL 9.5简易搭建
- Java及依赖和Maven
- GitHub疯传,这个Leetcode刷题手册到底有多流弊?
- 如何设计USB TYPE-C接口的显示器和电视机,形态三独立功能的双USB-C接口 +一个HDMI接口的显示器
- python怎样发音_python在线发音_python翻译
- DbContext 查询(三)
- 老慜的A5作业——p5.js 动态、周期、随机、面向对象