背景知识ffmpeg是一款领先的流媒体处理框架,支持编码,解码,转码等功能并可以在linux, Mac OS X, Microsoft Windows编译运行,用它做播放器的有:ffplay,射手播放器,暴风影音,QQ影音,用它做转码的有:格式工厂,总之:ffmpeg功能十分强大。
视音频编码技术基础
>>>生活中的视音频技术
我们日常生活中看到的视频有不同后缀如:avi,rmvb,mp4,flv,mkv等等,这些后缀的格式就是视频的封装格式(把音频和视频打包成一个文件的规范)文件的后缀看不出具体视频的视音频编码标准,我们引入MediaInfo工具:
可以看出high_2.mp4采用的是MPEG-4(mpeg4是一个“标准合集”(ISO/IEC 14496),包含了视频编码、音频编码、封装格式等一系列标准)标准的封装格式为mp4,采用了h.264视频的压缩编码标准,这个工具可以非常详细查看视频文件的各种你想要的信息比如分辨率码率帧率等。比特率bit/b 二进制中最小单位,要么0要么1,单位是:“位每秒”也叫bps,期中b就是Byte,就是比特也就是字节1个字节(1B)在计算机中占8位 1Byte=8bits,1K字节=1024B*8bpsb:比特位(bit)码率指单位时间内使用的数据流量也叫码率,分辨率相同,码率越大也就越清晰(标清,高清)例:2864Kbps(每秒计算机走了2864*1024*8这么多个比特位,也就是每秒需要2864k比特)帧率
(Frame rate)是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,简称:FPS)或“赫兹”(Hz)。此词多用于影视制作和电子游戏,所以fps越高画面刷新频率更快,也就感觉更流畅,我们在游戏中fps很低就会很卡这就是期中为什么卡的原因。
>>>直播中的性能指标基础
延迟:稳定网络下 发送和接受的时间差影响延迟的因素:1,  转发环节越多延迟越大2,  物理上的距离 (偏远山区等考虑光钎的传输)3,  由于 RTMP/HLS 是基于 TCP 之上的应用层协议,TCP 三次握手,四次挥手,慢启动过程中的每一次往返来回,都会加上一次往返耗时 ( RTT ),这些交互过程都会增加延迟。卡顿率:单位时间内播放的卡顿次数为卡顿率影响卡顿的因素:1,  造成卡顿的因素有可能是推流端发送数据中断,2,  也有可能是公网传输拥塞或网络抖动异常3,  也有可能是终端设备的解码性能太差卡顿频次越少或没有,则说明用户体验越好。首屏耗时:指第一次点击播放后,肉眼看到画面所等待的时间。技术上指播放器解码第一帧渲染显示画面所花的耗时。通常说的 “秒开”,指点击播放后,一秒内即可看到播放画面。首屏打开越快,说明用户体验越好。
Ffmpeg基本命令
-L license
-h 帮助-f fmt 强迫采用格式fmt-i filename 输入文件-y 覆盖输出文件-b:v 设置码率-s 设置分辨率-re 按着帧率发送,-c 设置编码器 当为 copy:指复制编码流-c:v  libx264  指定编码格式为h264-acodec aac(音频编码用AAC)-ac 2(声道数1或2)-ar 24000(声音的采样频率,好像PSP只能支持24000Hz)-ab 128(音频数据流量,一般选择32、64、96、128)-vol 200(200%的音量,自己改)
示例推流地址:rtmp://ps0.xxx.com/xxx  看流地址:http://pl0.xxx.com/xxx/xxx.flv                     rtmp://ps0.xxx.com/xxx1. ffmpeg推流命令ffmpeg -re -i localFile.mp4 -c copy -f flv 推流的过程中会不断打印 视频流相关的信息
2. 看流命令ffplay http://pl0.xxx.com/xxx/xxx.flvffplay 是ffmpeg 内嵌的一个播放器 当然你也可以用vlc输入这个流地址来观看
3. -c:v 命令用来转码ffmpeg转码命令ffmpeg  -i  D:/test.mov -c:v libx264 -strict -2 D:/test.mp4 (目前我们最好用mp4格式上传所以我们有时候需要最视频转码 ,把D盘下.mov的视频文件 转成 h264编码格式的test.mp4)
4. -b:v 命令用来修改码率ffmpeg 修改视频码率ffmpeg -i test.mp4 -b:v 1500k testk.mp4  (修改test.mp4 的码率为 1500k 新文件为testk.mp4)
5. -s 用来修改分辨率 ffmpeg 修改视频分辨率 :ffmpeg -i D:\test\test.mp4 -s 800*600 D:\test\testf.mp4 (修改视频文件test.mp4 分辨率 1280*720 修改为:800*600 新文件名为testf.mp4)6. -r 用来修改帧率 ffmpeg 修改视频帧率:ffmpeg --i D:\test\test.mp4--r 25 output D:\test\testr.mp4 (修改视频文件test.mp4 的帧率为 25 新文件名为 testr.mp4)
7. ffmprobe 命令可以查看 流的 音频和视频信息 非常详细

ffmpeg基础的更多相关文章

  1. FFmpeg基础一

    来源:http://blog.csdn.net/chance_yin/article/details/10323441 一.研究数字多媒体,首先要了解几个基本术语(ffmpeg的相关文档几乎都是英文的 ...

  2. FFmpeg Basics学习笔记(1)ffmpeg基础

    1 FFmpeg的由来 FFmpeg缩写中,FF指的是Fast Forward,mpeg是 Moving Pictures Experts Group的缩写.官网:ffmpeg.org 编译好的可执行 ...

  3. FFmpeg基础库编程开发学习笔记——视频常见格式

    声明一下:这些关于ffmpeg的文章仅仅是用于记录我的学习历程和以便于以后查阅,文章中的一些文字可能是直接摘自于其它文章.书籍或者文献,学习ffmpeg相关知识是为了使用在Android上,我也才是刚 ...

  4. FFmpeg基础知识之————H264编码profile & level控制

    H.264有四种画质级别,分别是baseline, extended, main, high: 1.Baseline Profile:基本画质.支持I/P 帧,只支持无交错(Progressive)和 ...

  5. ffmpeg基础与编译_在VS2008下调试output_example.c(详细步骤)

    注意:这个是编译Debug版本的.必要资源:FFMPEG SDK 3.2(已经编译好的,可以去http://www.bairuitech.com/html/ruanjianxiazai/ffmpeg/ ...

  6. FFmpeg基础库编程开发学习笔记——音频常见格式及字幕格式

    声明一下:这些关于ffmpeg的文章仅仅是用于记录我的学习历程和以便于以后查阅,文章中的一些文字可能是直接摘自于其它文章.书籍或者文献,学习ffmpeg相关知识是为了使用在Android上,我也才是刚 ...

  7. ffmpeg基础使用

    https://www.jianshu.com/p/ddafe46827b7  

  8. 【转】FFmpeg 基本用法

    FFmpeg FFmpeg 基本用法 本课要解决的问题 1.FFmpeg的转码流程是什么? 2.常见的视频格式包含哪些内容吗? 3.如何把这些内容从视频文件中抽取出来? 4.如何从一种格式转换为另一种 ...

  9. ffmpeg基本用法

    FFmpeg FFmpeg 基本用法 本课要解决的问题 1.FFmpeg的转码流程是什么? 2.常见的视频格式包含哪些内容吗? 3.如何把这些内容从视频文件中抽取出来? 4.如何从一种格式转换为另一种 ...

随机推荐

  1. vs2008及以上的ActiveX测试容器在哪儿

    解压缩 vssetupdir \Samples\1033\VC2010Samples.zip ,位于C++\MFC\ole\TstCon\ vs2008中的sample的话,要改TCProps项目的L ...

  2. oracle基础教程(8)oracle修改字符集

    oracle基础教程(8)oracle修改字符集 1.用dba连接数据库 -->sqlplus / as sysdba 2.查看字符集 -->SELECT parameter, value ...

  3. 学习taobao框架

    参考:https://github.com/xulingbo/xulingbo.github.io/issues http://blog.csdn.net/hguisu/article/details ...

  4. Markdown 软件

    <<github.css>> Markdown 软件 :Typora / Haroopad / Markdownpad2 Markdownpad2软件注册及下载地址 邮箱地址: ...

  5. some notes about spring aop

    1 . timeCountIntecetor implements handlerInterceptor { preHandle(); postHandle(); afterComplete(); } ...

  6. Hbase数据导入导出

    平时用于从生产环境hbase到导出数据到测试环境. 导入数据: import java.io.BufferedReader; import java.io.File; import java.io.F ...

  7. 【javascript基础】系列

    这是本人记录的javascript基础知识,希望能给大家的学习带来一点帮助. [javascript基础]1.基本概念 [javascript基础]2.函数 [javascript基础]3.变量和作用 ...

  8. Java中遍历Map集合的四种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  9. Silverlight ComboBox with TreeView

    本代码根据国外同名控件代码修改而来--对于N-Tier项目,要求数据源都实现一个接口显然很不方便,因此做了如下修改: 删除接口定义及相关代码 增加了DisplayMember属性,用于标明在Combo ...

  10. 反转链表,时间复杂度O(n),空间复杂度O(1)

    原理:使用三个指针,p,q指向交换的元素,r指向后续元素 代码如下: class Node{ int data; Node next; Node(int data){ this.data=data; ...