美文网首页
音视频开发相关资料

音视频开发相关资料

作者: focusHYD | 来源:发表于2019-04-24 15:28 被阅读0次

    编码就是按照一定的格式记录采样和量化后的数据.

    编码中软编码和硬编码的区别?

    硬编码,就是使用GPU计算,获取数据结果,优点速度快,效率高.

    软编码,就是通过CPU来计算,获取数据结果.

    压缩算法分为2种,有损压缩与无损压缩.

    解码:将压缩的数据还原

    . 直播APP需求剖析

    2.1 直播项目流程

    在直播项目中,一般常见有8个步骤.

    • 音视频采集
    • 视频滤镜
    • 音视频编码
    • 推流
    • 流媒体服务器处理
    • 拉流
    • 音视频解码
    • 音视频播放
    屏幕快照 2019-04-24 下午3.25.52.png
    • 采集视频,音频

    • 使用iOS原生框架 AVFoundation.framework

    • 视频滤镜处理

    • 使用iOS原生框架 CoreImage.framework

    • 使用第三方框架 GPUImage.framework

    CoreImageGPUImage 框架比较: 在实际项目开发中,开发者更加倾向使用于GPUImage框架. 首先它在使用性能上与iOS提供的原生框架,并没有差别;其次它的使用便利性高于iOS原生框架,最后也是最重要的GPUImage框架是开源的.而大家如果想要学习GPUImage框架,建议学习OpenGL ES,其实GPUImage的封装和思维都是基于OpenGL ES.

    视频和音频分开编码的

    视频**音频编码压缩

    • 硬编码

    • 视频: VideoToolBox框架

    • 音频: AudioToolBox 框架

    • 软编码

    • 视频: 使用FFmpeg,X264算法把视频原数据YUV/RGB编码成H264

    • 音频: 使用fdk_aac 将音频数据PCM转换成AAC

    推流

    • 推流: 将采集的音频.视频数据通过流媒体协议发送到流媒体服务器

    • 推流技术

    • 流媒体协议: RTMP\RTSP\HLS\FLV

    • 视频封装格式: TS\FLV

    • 音频封装格式: Mp3\AAC

    流媒体服务器

    • 数据分发
    • 截屏
    • 实时转码
    • 内容检测

    拉流

    • 拉流: 从流媒体服务器中获取音频\视频数据
    • 流媒体协议: RTMP\RTSP\HLS\FLV

    音视频解码

    • 硬解码

    • 视频: VideoToolBox框架

    • 音频: AudioToolBox 框架

    • 软解码

    • 视频: 使用FFmpeg,X264算法解码

    • 音频: 使用fdk_aac 解码

    播放

    • ijkplayer 播放框架
    • kxmovie 播放框架

    ijkplayer,kxmovie 都是基于FFmpeg框架封装的

    H264压缩的视频文件。vlc可以播放、先解码再播放

    视频、和音频怎么同步的?

    根据时间戳来实现同步

    1秒播放16张图片 fps 播放速度

    视频压缩的原理:IPB

    • I帧: 保留了一张完整视频帧. 解码关键!(帧内预测压缩)
    • P帧: 先前参考帧.差异数据.解码需要依赖于I帧
    • B帧: 双向参考帧,解码时既需要I帧,也需要P帧!

    花屏:解码出现错误就是花屏问题、解决:当出现错误就不去显示、等待下一段视频出来接显示、出来的问题是卡顿;

    帧:图片

    帧间预测压缩:一组图片压缩

    帧内预测压缩:一张图片压缩

    H.264码流在网络中传输时实际是以NALU的形式进行传输的.

    1、SPS :序列参数集、PPS:图像参数集

    2、写入文件

    3、NSLU

    大端:读取内存的方式、

    小端:

    大端 转小端 CFSwapInt32HostToBig

    iOS 系统默认的是小端模式

    参考与:老师

    相关文章

      网友评论

          本文标题:音视频开发相关资料

          本文链接:https://www.haomeiwen.com/subject/bfuggqtx.html