美文网首页
iOS开发-音视频开发

iOS开发-音视频开发

作者: Jack_Baiyx | 来源:发表于2021-04-14 17:23 被阅读0次

一.学习背景

5G网络作为第5代的移动通信网络,它的网络峰值传播速度可1以达到10Gbps/s.这比4G的的传输速度快数百倍.举个例子,整部超高画质电影下载可在1秒钟之内下载完成.

当然,随着5G技术的诞生,用在智能终端分享3D电影,游戏或者超高画质节目的时代已经毫无悬念的向我们走来.

想必大家也逐步了解,国内外的互联网公司也已经布局音视频,3D技术方面的开发者招聘和相关产品研发.目前落地推广最普遍的就是直播类项目和小视频类的项目.当然未来的方向肯定不止如此.

1.2何为编码?

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

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

  • 硬编码:硬编码: 使用非CPU进行编码,例如使用GPU芯片处理
  • 软编码: 使用CPU来进行编码计算

1.2.2 软编码与硬编码的区分?

软编码: 实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点。

硬编码:性能高,低码率下通常质量低于硬编码器,但部分产品在GPU硬件平台移植了优秀的软编码算法(如X264)的,质量基本等同于软编码。

读者理解: 硬编码,就是使用GPU计算,获取数据结果,优点速度快,效率高. 软编码,就是通过CPU来计算,获取数据结果.

1.2.3 压缩算法

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

  • 无损压缩:解压后的数据可以完全复原,在常用的压缩格式中,无损压缩使用频次较低
  • 有损压缩:解压后数据不能完全复原,会丢失一部分信息.压缩比越小,丢失的信息就会越多.信号还原的失真就会越大.

需要根据不同的场景(考虑因素包括存储设备,传输网络环境,播放设备等)选用不同的压缩编码算法.

二. 直播APP需求剖析

2.1 直播项目流程

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

  • 音视频采集
  • 视频滤镜
  • 音视频编码
  • 推流
  • 流媒体服务器处理
  • 拉流
  • 音视频解码
  • 音视频播放

这个在开发者面试一些有意向或者目前业务中包含直播需求的公司,最为常见的面试题.不管在我们过往的工作经验是否有直播或音视频相关经验.这个一块都是你必须能了解.希望大家可以简单的了解.

2.2 相关框架的学习与使用场景

直播app架构
采集视频,音频
  • 使用iOS原生框架 AVFoundation.framework
  • 视频滤镜处理
使用iOS原生框架 CoreImage.framework
  • 使用第三方框架 GPUImage.framework
  • CoreImage 与 GPUImage 框架比较:

在实际项目开发中,开发者更加倾向使用于GPUImage框架.

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

视频\音频编码压缩
  • 视频: 使用FFmpeg,X264算法把视频原数据YUV/RGB编码成H264
  • 音频: 使用fdk_aac 将音频数据PCM转换成AAC
  • 视频: VideoToolBox框架
  • 音频: AudioToolBox 框架
  • 硬编码
  • 软编码
推流
  • 流媒体协议: RTMP\RTSP\HLS\FLV
  • 视频封装格式: TS\FLV
  • 音频封装格式: Mp3\AAC
  • 推流: 将采集的音频.视频数据通过流媒体协议发送到流媒体服务器
  • 推流技术
流媒体服务器
  • 数据分发
  • 截屏
  • 实时转码
  • 内容检测
拉流
  • 拉流: 从流媒体服务器中获取音频\视频数据
  • 流媒体协议: RTMP\RTSP\HLS\FLV
音视频解码
  • 视频: 使用FFmpeg,X264算法解码
  • 音频: 使用fdk_aac 解码
  • 视频: VideoToolBox框架
  • 音频: AudioToolBox 框架
  • 硬解码
  • 软解码
播放
  • ijkplayer,kxmovie 都是基于FFmpeg框架封装的
  • ijkplayer 播放框架
  • kxmovie 播放框架

相关文章

  • iOS音视频

    iOS 音视频开发(一)常用音视频框架介绍iOS 音视频开发(二)AVAudioRecorder录音、AVAudi...

  • iOS 音视频开发(一)常用音视频框架介绍

    文章规划iOS 音视频开发(一)常用音视频框架介绍(本篇)iOS 音视频开发(二)AVAudioRecorder实...

  • iOS-17 音视频

    链接:iOS 音视频开发-常用音频、视频框架介绍(一) - 简书 iOS 音视频开发-AVAudioRecorde...

  • iOS音视频开发-视频会话捕捉

    好久没写东西了,iOS音视频开发抽出时间整理一下,权当备忘吧。iOS音视频开发原理文章在网上有很多了,就不记录了。...

  • 音视频内容

    音视频 目的 数据来源及去向 具体执行过程 参考其他简书内容 iOS音视频开发闲谈(理论步骤)iOS音频播放(一)...

  • iOS开发-音视频开发

    一.学习背景 5G网络作为第5代的移动通信网络,它的网络峰值传播速度可1以达到10Gbps/s.这比4G的的传输速...

  • iOS视频开发(一):视频采集

    前言 作为iOS音视频开发之视频开发的第一篇,本文介绍iOS视频采集的相关概念及视频采集的工作原理,后续将对采集后...

  • 视频采集篇

    相关框架iOS中关于音视频的类都在AVFoundation,做音视频,首先导入这个框架 开发步骤 1创建捕捉会话(...

  • iOS开发-音视频开发概述

    一.学习背景 5G网络作为第5代的移动通信网络,它的网络峰值传播速度可1以达到10Gbps/s.这比4G的的传输速...

  • 音视频开发:OpenGL + OpenGL ES + Metal

    音视频开发涉及的三种API,OpenGL篇主要是进行基本知识学习,OpenGL ES是当前iOS开发的主流的框架,...

网友评论

      本文标题:iOS开发-音视频开发

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