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

音视频开发相关资料

作者: 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