ffmpeg简介

官网链接是http://www.ffmpeg.org/上有说明,它是音视频的分离,转换,解码的完全解决方案。 
其中最重要的就是libavcodec库。它被mplayer或者xine使用作为解码器。还有,国内比较流行的播放器影音风暴或MyMPC的后端ffdshow也是使用ffmpeg的解码库的。
ffmpeg包括一组软件,ffmpeg用于对媒体文件进行处理,ffserver是一个http的流媒体服务器,ffplay是一个基于SDL的简单播放器。两个库文件libavcodec和libavformat。

ffmpeg作为媒体文件处理软件,基本用法如下: 
ffmpeg [global_options] {[input_file_options] -i ‘input_file’} ... {[output_file_options] ‘output_file’} ...
输入输出文件通常就是待处理的多媒体文件了。可以是纯粹的音频文件,纯粹的视频文件,或者混合的。 
大部分常见的格式都能够“通杀”。象常见的各种mpeg,AVI封装的DIVX和Xvid等等

对ffmpeg命令选项的了解,先从下面的命令开始
ffmpeg -h
ffmpeg -h long
ffmpeg -h full
man ffmpeg需要安装ffmpeg的手册页条目

各选项参数的解释,详情参见

http://www.ffmpeg.org/ffmpeg.html

列出几个主要的选项 
-vcodec 视频流编码方式 
-b 视频流码率(默认只有200k,一般都需要手动设置,具体的数值视codec选择而定) 
-r 视频流帧数(一般说来PAL制式通常用25,NTSC制式通常用29) 
-s 视频解析度(分辨率,也要视codec和你的需要而定。通常改变某个视频流的解析度是很耗费CPU的事情。另:具体写法使用“数字x数字”的形式。中间是小写字母“x”,这个用过mplayer的应该都知道) 
-t 处理持续时间。 
-acodec 音频流编码方式 
-ab 音频流码率(默认是同源文件码率,也需要视codec而定) 
-ar 音频流采样率(大多数情况下使用44100和48000,分别对应PAL制式和NTSC制式,根据需要选择)

还有些可能需要用到的选项如 
-vn和-an分别是屏蔽视频流和屏蔽音频流,分别对源文件处理一次即可得到分离的音频和视频 
-author -title分别是设置媒体文件的作者和title 
-f选项是强制使用某种格式 
-target type是使用预置的格式转换(可以转成dvd,vcd或svcd)

除此之外还有些更高级的选项,如设定vbr,或设定high quality,或者设定vbr的buff和max/min码率,象一般我们自用的dvd抓轨啦,DV转vcd或dvd啦,网上下载的电影转成vcd或dvd都不一定需要用到它们。 
具体的使用方法在man里面有介绍。简单明了。

-bsf比特流过滤器设置
首先使用ffmpeg -bsfs来查看所有的比特流过滤器,使用下面的命令
ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
来匹配要复制的视频流,也是就是说,是有条件复制视频流,必须匹配上才复制

-c选项是-codec的缩写
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
意思是encodes all video streams with libx264 and copies all audio streams.

-map选项解读
指定一个或多个输入流作为输出文件的源。每个输入流由input_file_id[:stream_specifier]表示,这两个索引都从0开始计数,-stream_specifier
表示一个负map,参见下面的例子
ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
选择a.mov中的第三个流,和b.mov中的第7个流,把它们复制到输出文件中
ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
选择所有的视频流和第3个音频流,把它们复制到输出文件中
ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
除了第2个音频流以外,复制其他的流到输出文件中
ffmpeg -i INPUT -map 0 output
复制第一个文件中的所有流到输出文件中

关于ffmpeg hls更详细的官方文档,参见
http://www.ffmpeg.org/ffmpeg-all.html
在页面中搜索“hls”即可
下面是该官方网页给出的一个例子
Segment the input file, and create an M3U8 live playlist (can be used as live HLS source):
 
ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \
-segment_list_flags +live -segment_time 10 out%03d.mkv

下面是我收集的hls版本,并不好用。
ffmpeg -i inputfile.avi -c:v libx264 -c:a libvo_aacenc -hls_time 10 -hls_list_size 0 outputfile.m3u8
ffmpeg -i inputfile.avi -c copy -bsf:v h264_mp4toannexb -map 0 -hls_time 10 -hls_list_size 0 outputfile.m3u8
注意:我测试后,发现hls版本的命令生成的ts片段非常差,几乎不能观看。

目前的ffmpeg版本是支持hls的,直接使用下面的命令也会同时生成ts片段和m3u8文件,每个ts片段是默认2s,这反过来也说明ffmpeg是支持hls的
ffmpeg -i in.nut out.m3u8

对于hls切片来说,下面的命令使我测试过很好用的,特收藏如下

ffmpeg -i 1.mp4 -f segment -segment_time 10 -segment_format mpegts -segment_list list_file.m3u8 -c copy -bsf:v h264_mp4toannexb -map 0 output_file-%d.ts

这条命令的限制是:要求生成ts分片的输入视频是视频是h.264编码,音频是aac编码的视频文件,从优酷网上下载的视频片段都是符合这个条件的。

获取ffmpeg最新源码方法
git clone git://source.ffmpeg.org/ffmpeg  ffmpeg
更新本地源码
git pull (--rebase)
git的使用方法详见

http://www.ffmpeg.org/git-howto.html

FFMPEG转码常用命令研究相关推荐

  1. 【网络通信 -- 直播】FFMPEG 简介与常用命令总结

    [网络通信 -- 直播]FFMPEG 简介与常用命令总结 [1]FFMPEG 简介 FFmpeg,项目的名称来自 MPEG 视频编码标准,"FF"代表"Fast Forw ...

  2. FFmpeg入门之常用命令

    ffmpeg常用命令 常用命令分类 ffmpeg处理流程 基本信息查询 如命令行: ffmpeg -codecs 录制命令 UBUNTU上录制mp4的命令 ffmpeg -thread_queue_s ...

  3. ffmpeg转码常用容器、编码格式与解编码器的搭配总结,-c与-f参数的运用

    转码 现今常用的一些编码格式以及它们所支持的容器格式如下: 特别提一点,mkv是个万能的容器格式,下面说的所有编码格式,mkv几乎都能"装",就不再列出了. 视频编码格式: h26 ...

  4. FFmpeg视频剪辑常用命令

    如果要找一个用于音视频编辑的解决方案,FFmpeg无疑是极为优秀的. 前阵子在弄一个视频剪辑类的APP,把用到的常见的一些FFmpeg命令分享处理,供读者参考. 常见命令: 视频局部裁剪: -i in ...

  5. ffmpeg AV转换常用命令

    帖子比较长,建议Ctrl+D bookmark一下,或者提交到别的什么Social bookmark sites,不想看mencoder/ffmpeg详细技术手册的,可以把它当快速简易参考看,主要的功 ...

  6. 音视频开发三:FFmpeg安装与常用命令

    前言:在不同平台下安装FFmpeg 1.mac系统下安装ffmpeg. 打开terminal,运行:brew install ffmpeg 安装完后,terminal中输入:ffmpeg,出现下面提示 ...

  7. ffmpeg 视频剪辑常用命令

    1. 从视频中抽取帧 ffmpeg -i input.mp4 -r 1 -q:v 2 D:\images\img_%02d.jpeg -i 输入视频 -r 提取频率,每秒多少帧,可以为小数 -q:v ...

  8. FFmpeg 常用命令汇总

    https://www.yuv420.com/2019/12/23/ffmpeg-chang-yong-ming-ling-hui-zong/ 引言 开源音视频处理工具FFMPEG以其强大的功能而在音 ...

  9. idea 激活码获取教程及常用命令

    1.说明: 适用于学生群体以及参加工作的群体 一年激活权限 2.申请过程: 官方申请网址点击Apply now按照流程一步步申请即可 没有校园个人邮箱的可以使用官方文件,然后上传学信网的成绩单或者学生 ...

最新文章

  1. Python元组与列表
  2. boost::fusion::count用法的测试程序
  3. IOS--工作总结--post上传文件(以流的方式上传)
  4. cython php,【整理】Cython返回C/C++ struct类型数据 | 勤奋的小青蛙
  5. 算法笔记_面试题_8.零钱兑换
  6. 速看!不止零关税,RCEP的签订对普通百姓的影响都在这里
  7. 科大讯飞和neospeech tts哪个更好
  8. linux cad转pdf文件怎么打开,PDF猫CAD转PDF官方版
  9. mysql XA 分布式事务、DTM TCC事务(多语言支持)
  10. 测试固态硬盘写入数据软件,持续写入100TB 三星840EVO耐久度测试
  11. [WSL2]WSL2迁移虚拟磁盘文件ext4.vhdx
  12. CentOS 6.5 安装使用iscsi-initiator
  13. Go 每日一库之 cron
  14. c++ 实现计算立方体面积体积 并 判断两个立方体是否相等 (类和对象学习)
  15. 自己动手修相机——解决佳能镜头光圈故障
  16. linux系统模块全选快捷键,Linux的150个命令和快捷键 整理
  17. Android对话框(普通对话框、单选对话框、多选对话框、进度条对话框)
  18. linux 删除目录下所有指定的子目录
  19. 咖说 | 全景式解读下一个加密投资热潮 NFT
  20. 最长公共子序列 (LCS) 详解+例题模板(全)

热门文章

  1. MySQL 学习笔记(9)— 事务控制语句、事务属性以及并发和隔离级别
  2. Linux下DB2数据库安装教程
  3. 软件行业项目经理主要的职责是什么?(转)
  4. 用C#来开发CAD插件,含源代
  5. android中The connection to adb is down,问题和解决 AndroidEclipseAntXML
  6. vb mysql数据导入到mssql,[请教]怎样把*.txt文本的数据导入sql数据库中?
  7. centos 多台 文件夹同步_CentOS7配置rsync实现文件同步
  8. python的切片和索引是什么_NumPy 切片和索引
  9. 五分钟没有操作自动退出_这又是什么骚操作??5只蚂蚁战略配售基金拟增设B类份额,自动赎回退出!!...
  10. linux dd命令制作u盘启动_制做linux启动U盘