Ffmpeg使用
刚开始安装的推荐博客|--利用FFmpeg 开发音视频流:一、二、三
1、分辨率码率
主要视频格式与码率:
分辨率
200p——对应的码率是256kpbs,也就是说,一分钟需要流量1.92M,播放完毕所需的流量是192M;
360p——对应的码率是512kpbs,也就是说,一分钟需要流量3.84M,播放完毕所需的流量是384M;
720p——对应的码率是1024kpbs,也就是说,一分钟需要流量7.68M,播放完毕所需的流量是768M;
1080i——对应的码率是1800kpbs,也就是说,一分钟需要流量13.5M,播放完毕所需要的流量是1.35G;
1080P——对应的码率是3500kpbs,也就是说,一分钟所需流量26.25M,播放完比所需要的流量是2.625G。
webRTC音视频引擎,有一定的优化经验
ffmpeg使用
VoIP产品
ffmpeg -i /Users/xushiyou/Downloads/禾宝爽跑小树林.mp4 -b:v 320k 320.avi
Xcode 与 Fffmpeg组合使用 优势:
`XCode`提供了Mac平台开发环境必须的gcc编译器,要注意的是`XCode` 安装后并没有命令行的gcc可用,
还需要打开`XCode`,在某个设置里添加Command Line Tools,`XCode`就会自动下载并安装好gcc,
同时还有git也被安装了。
Ffmpeg
- libavutil是一个包含简化编程功能的库,包括随机数生成器,数据结构,数学例程,核心多媒体实用程序等等。
- libavcodec是一个包含用于音频/视频编解码器的解码器和编码器的库。
- libavformat是一个包含多媒体容器格式的解复用器和复用器的库。
- libavdevice是一个包含输入和输出设备的库,用于从许多常见的多媒体输入/输出软件框架中获取和呈现,包括Video4Linux,Video4Linux2,VfW和ALSA。
- libavfilter是一个包含媒体过滤器的库。
- libswscale是一个执行高度优化的图像缩放和色彩空间/像素格式转换操作的库。
- libswresample是一个执行高度优化的音频重采样,重新矩阵化和样本格式转换操作的库。
ffmpeg 在iOS上运行
1、gas-preprocessor 其实就是我们要编译 FFmpeg 的所需脚本文件。
2、Yasm是一个完全重写的 NASM 汇编。目前,它支持x86和AMD64指令集,接受NASM和气体汇编语法, 产出二进制,ELF32 , ELF64 , COFF , Mach - O的( 32和64 ),RDOFF2 ,的Win32和Win64对象的格式, 并生成STABS 调试信息的来源,DWARF 2 ,CodeView 8格式。
3、编译 FFmpeg-iOS-build-script
不难看出,这个脚本是转为 iOS 编译出可用的 ffmpeg 的库,这个业界良心,我们称之为`神的内裤`。。。
好吧,不搞笑,有了这个脚本,我们根本就不用下载 ffmpeg 了,脚本会帮我们下载好最新版本的 ffmpeg,
并打包成一个 iOS 可用的 ffmpeg 库提供给我们了,当然,前提是你必须要跟着博主一步一步入坑才行喔。
用最低的码率达到最少的失真,围绕这个核心衍生出来的cbr(固定码率)与vbr(可变码率),都是在这方面做的文章,不过事情总不是绝对的,从音频方面来说,码率越高,被压缩的比例越小,音质损失越小,与音源的音质越接近。
AVFormatContext: 数据文件操作者,主要是用于存储音视频封装格式中包含的信息, 在工程当中占着具足轻重的地位,因为很多函数都要用到它作为参数。同时,它也是我们进行解封装的功能结构体。
AVOutputFormat: 输出的格式,包括音频封装格式、视频装格式、字幕封装格式,所有封装格式都在 AVCodecID 这个枚举类型上面了
AVStream: 一个装载着视频/音频流信息的结构体,包括音视频流的长度,元数据信息,其中 index 属性用于标识视频/音频流。
AVCodecContext: 这个结构体十分庞大,但它的主要是用于编码使用的,结构体中的的 AVCodec *codec 就是编码所采用的编码器器, 当然,这个结构体中要存入视频的基本参数,例如宽高等,存入音频的基本参数,声道,采样率等。
AVCodec:编码器,设置编码类型,像素格式,视频宽高,fps(每秒帧数), 用于编解码音视频编码层使用。
AVIOContext:用于管理输入输出结构体。例如解码的情况下,将一个视频文件中的数据先从硬盘中读入到结构体中的 buffer 中,然后送给解码器用于解码,后面我们会用到。
AVFrame: 结构体一般用于存储原始数据(即非压缩数据,例如对视频来说是YUV,RGB,对音频来说是PCM),此外还包含了一些相关的信息。比如说,解码的时候存储了宏块类型表,QP表,运动矢量表等数据。编码的时候也存储了相关的数据。因此在使用FFMPEG进行码流分析的时候,AVFrame是一个很重要的结构体。
H.264 中,句法元素共被组织成 序列、图像、片、宏块、子宏块五个层次