1、FFMpeg

FFMpeg编译
  • Step1
    先下载文件:https://github.com/libav/gas-preprocessor
    复制gas-preprocessor.pl到/usr/bin下,
    Q1 无权限
    A1 屏蔽方法:重启Mac,按住command+R,进入recovery模式。选择打开Utilities下的终端,输入:csrutil disable并回车,然后正常重启Mac即可
  • Step2
    修改权限,需要终端在user/bin目录下
    sudo chmod a+rwx gas-preprocessor.pl
  • Step3
    安装Yasm http://www.tortall.net/projects/yasm/releases/
    解压之后,在命令行中
    cd yasm-1.2.0
    ./configure
    make
    sudo make install
  • Step4 下载
    **FFmpeg-iOS-build-script **https://github.com/kewlbear/FFmpeg-iOS-build-script
  • Step4.2 下载ffmpeg的源码
    放入ffmpeg-ios-build-script目录中
  • Step5 编译
    FFmpeg-iOS-build-script-master runo$ ./build-ffmpeg.sh
  • Step6
    编译完成后取出相关的静态包和头文件导入工程中
  • Step7 修改appdelegate.m为 .mm
    导入系统库
    libz.dylib,libbz2.dylib,libiconv.dylib
  • Step8 在viewcontroller导入#include “avformat.h”,添加一句av_register_all();
    Q 编译的时候报错: 'libavcodec/avcodec.h' file not found ,
    A 修改Header search paths 里的路径: $(PROJECT_DIR)/FFmpeg-iOS/include
    注意文件存放的位置
    Q 出现
    Undefined symbols for architecture x86_64:
    "_CMBlockBufferCreateWithMemoryBlock", referenced from:
    _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o)
    A 接着导入coreVideo.framework coreMdedia.framework VideoToolbox.framework
FFmpeg
  • ffmpeg是一个编解码框架,能够支持各种不同的编解码器,并采用统一的 api 去调用。但其默认只提供了针对各种媒体格式的解码器(基本上涵盖得比较全了),而编码器默认提供很少的几个开源的格式(或者已经无需专利保护的格式)。所以,如果你需要 FFmpeg 具备支持多种媒体格式的编码能力,你需要额外下载并安装那些编码器(主要是通过安装这些编码器获得它们的头文件、动态库及静态库用于 FFmpeg 编译),才能保证在 FFmpeg 编译时载入这些编码器的二进制代码,使 FFmpeg 具备这些编码功能。
  • 流媒体:在网络上基于流式传输,可以立即解码播放流式传输定义很广泛,主要指通过网络传送媒体(如视频、音频)的技术总称。其特定含义为通过Internet 将影视节目传送到PC机。实现流式传输有两种方法
    • 实时流式传输(Real time streaming)实时流式传输指保证媒体信号带宽与网络连接匹配,使媒体可被实时观看到。实时流式传输根据网络情况调整输出音视频的质量从而实现媒体的持续的实时传送,用户可快进或后退以观看前面或后面的内容。RTSP,需要专门的流媒体服务器,和传输协议
    • 顺序流式传输(progressive streaming)顺序流式传输是顺序下载,在下载文件的同时用户可观看在线媒体,在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的前头部分,在传输期间不根据用户连接的速度对下载顺序做调整。
  • RTSP :命令和数据分离管道
  • RTMP:命令和数据公用同一管道
  • MPEG:一种编码标准,mpeg并不是对每格视频进行压缩,而是以秒为单位,将时段内的每一格视频做比较,由于一般视频内容都是背景变化小,主体变化大,mpeg技术就是应用于这个特点,以一幅视频为主图,其余视频格只是记录参考资料及变化数据,更有效记录动态视频。
    MPEG只规定比特流的格式与解码精确度(即规定解码的方法),而任何人可依照MPEG标准以不同方式实现编码器(程序)。除了可减少因编码专利造成的商业利益纠纷外,MPEG标准的主要目的在于确保不同的编码器所产生的比特流可被其他解码器正确的解码,只要此比特流匹配标准。
  • 编码格式表


    image.png
  • 像素(pixel):视频显示的最小单位
  • 分辨率:是屏幕图像的精密度,是指显示器所能显示的所有像素有多少。
    • 显示分辨率:显示屏能显示的像素,显示分辨率一定的情况下,显示屏越小图像越清晰,反之,显示屏大小固定时,显示分辨率越高图像越清晰。
    • 视频分辨率:视频的像素
      例如:1080P,意思是1920 x 1080的视频
  • 转码率:完整视频通过压缩算法压缩时,压缩比例越大,还原后的失真越大,因为压缩过程中不可避免的丢失了视频中原来的图像数据信息,码率(bps(bit per second))就是在压缩视频的时候指定一个参数,告诉压缩软件,期望压缩后的视频的大小,平均每秒多少个比特位。
    • 例如:100分钟 1GB的视频,
      100min = 100 * 60 = 6000s
      1GB=1024MB=10241024KB = 102410241024Byte = 1024102410248bit = 8589934592bit
      那么这个视频的码率就是 1.4Mbit/s (8589934593/6000) = 1431655 bit/s
  • 视频格式:是指用什么样的方式把视频和音频数据打包成一个文件。


    image.png
  • 视频播放流程:


    image.png
    • 解协议:是指播放网络视频的时候协议网络协议:如HTTP,RTMP等,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。
    • 解封装:就是将输入的封装格式的数据分离成音频流压缩编码数据和视频流压缩编码数据。demux
    • 解码:将音/视频压缩编码数据,解码成非压缩的原始数据,decode
    • 视频音频同步:接封装中得到的参数信息,同步解码出来的音/视频数据,getframe
  • 帧率:就是fps(frame per second)每秒更新的次数
  • YUV:是图像的编码格式,Y是亮度 UV是色彩饱和度
    • YUV444: 每四个Y采样就采样四个UV 总字节大小:heightwidth3
    • YUV420:每四个Y采样就采样一个UV 总字节大小:heightwidth(1/4+1/4+2/2)相当于(u:v:y)
    • YUV422:每两个Y采样就采样一个UV 总字节大小:heightwidth(1/2+1/2+2/2)
      image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容