深度解析iOS直播应用开发:流程详解、资料汇总与推流技术探讨

更新:11-17 名人轶事 我要投稿 纠错 投诉

大家好,今天给各位分享深度解析iOS直播应用开发:流程详解、资料汇总与推流技术探讨的一些知识,其中也会对进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

1. 视频流终端

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

1. 选择流媒体协议

现在直播应用大多采用RTMP协议,也有部分采用HLS协议。

使用RTMP协议时,需要看一下与流媒体服务器交互的过程。 RTMP协议默认端口为1935,使用TCP协议。并且你需要了解FLV的打包格式。

使用HLS协议,因为涉及到切片,延迟会比较大,需要了解TS流。

2. 采集音视频数据

对于直播来说,数据的来源是必不可少的,那就是从摄像头和麦克风采集数据。

在iOS平台采集音视频数据,需要使用AVFoundation.Framework框架从captureSession会话的回调中获取音视频数据。

3、音视频数据的硬编码和软编码

软编码利用CPU资源来压缩音频和视频数据,而硬编码则相反。

对于软编码,FFmpeg库现在广泛与编码库结合使用。采用FFmpeg+X624对视频数据YUV/RGB进行编码,输出H264数据。

FFmpeg+fdk_aac对音频数据PCM进行编码,输出AAC数据。

4、根据选择的流媒体协议对音视频数据进行打包

将音频和视频打包成数据包。

5、与服务器交互发送包数据

根据选择的流媒体协议,发送相应指令连接服务器。成功连接到服务器后,就可以发送数据包了。

第2 部分. 拉端

拉流就是从流媒体服务器获取音视频数据。

1. 协议分析

播放器端根据URL解析所使用的流媒体协议(RTMP、HLS)。

2. 解封装

解封装是解复用的过程,将音频和视频数据从容器格式(FLV、TS)中分离出来。

3. 解码

解码就是将获取的数据解压缩,恢复成原始数据。解码就是将H264转换成YUV,AAC转换成PCM。

解码可以采用软解码或硬解码。

软解码使用CPU资源来解压缩数据,使用FFmpeg解码。

硬解码,对于iOS平台,可以使用VideoToolbox.Framework(该框架只能在iOS 8.0及以上系统上使用)

硬解码视频数据。在Android平台上,MediaCodec可用于对视频数据进行硬解码。

4. 渲染数据

OpenGL用于渲染YUV数据并呈现视频图像。将PCM 发送到设备的硬件资源以播放和生成声音。

iOS 使用Audio Queue 方法播放流式音频,即使用AudioToolbox.Framework 框架。

三:iOS开发有用的iOS直播平台第三方资源分享:

实时美颜参考网站:http://altitudelabs.com/blog/real-time-filter/

现场测试地址:

HLS:http://live.3gv.ifeng.com/live/hongkong.m3u8凤凰卫视香港频道

SMTP: rtmp://live.hkstv.hk.lxdns.com/live/hks 香港卫视

RSTP:rtsp://rtsp.vdowowza.tvb.com/tvblive/mobileinews200.stream 互动新闻台1

HLS流媒体工具下载,处理m3u8音视频源的HLS流媒体工具下载

直播相关SDK

VideoCore在新浪云上有文档。您可以阅读iOS Streaming SDK使用文档。网易云信直播SDK好像是付费的,而且价格也不便宜。大多数公司可能不会使用它,但是你可以尝试一下并了解它。对学习有帮助!暴风云直播http://www.baofengcloud.com/apisdk/sdk/live/iossdk.html

融云直播http://www.rongcloud.cn/live

5.腾讯直播SDKhttps://www.qcloud.com/solution/video.html

直播相关开源库

BeautifyFaceDemo是基于GPUImage图像处理的。可以参考一下进行美化。

lf.swift是开源的RTMP Swift版本,你可以学习一下!看来作者是日本人,或者在日本工作,写了很多日语!

PLPlayerKit是一个不依赖FFmpeg、支持RTMP的播放器

HLS-Demohttps://github.com/yangchao0033/HLS-DemoHLS播放演示

SmarterStreaminghttps://github.com/daniulive/SmarterStreaming直播SDK(支持私有协议和RTMP推送,如windows推送/android推送/iOS推送/windows播放器/android播放器/iOS播放器)

四:iOS直播平台iOS开发。常见视频直播相关协议详解。

1.RTMP(Real Time Messaging Protocol,实时消息传递协议)

RTMP 是Adobe Systems 开发的开放协议,用于Flash 播放器和服务器之间的音频、视频和数据传输。它有三种变体:

1)、工作在TCP之上的明文协议,使用端口1935;

2)RTMPT封装在HTTP请求中,可以穿越防火墙;

3)RTMPS与RTMPT类似,但使用HTTPS连接;

Flash 使用RTMP 协议来传输对象、视频和音频。该协议建立在TCP 协议或轮询HTTP 协议之上。 RTMP协议就像一个用来保存数据包的容器。数据可以是AMF格式的数据,也可以是FLV格式的视音频数据。单个连接可以通过不同的通道传输多个网络流,并且这些通道中的数据包以固定大小的数据包传输。

2.RTSP(Real Time Streaming Protocol,实时流媒体协议)

RTSP 定义一对多应用程序如何通过IP 网络有效地传送多媒体数据。 RTSP提供了可扩展的框架,数据源可以包括实时数据和现有的存储数据。该协议的目的是控制多个数据发送连接,提供选择UDP、组播UDP和TCP等发送通道的方法,提供选择基于RTP的发送机制的方法。

RTSP语法和操作与HTTP/1.1类似,但它并不特别强调时间同步,因此对网络延迟的容忍度更高。代理服务器的缓存功能同样适用于RTSP,并且由于RTSP具有重定向功能,可以根据实际负载情况切换提供服务的服务器,避免过多的负载集中在同一台服务器上而造成的延迟。

3.RTP(Real-time Transport Protocol,实时传输协议)

RTP 是多媒体数据流的传输层协议,详细介绍了通过Internet 传输音频和视频的标准数据包格式。 RTP协议常用于流媒体系统(使用RTCP协议)、视频会议和一键通系统(使用H.323或SIP),使其成为IP电话行业的技术基础。

RTP建立在UDP协议之上,通常与RTCP一起使用。它不提供准时交付机制或其他服务质量(QoS) 保证。它依赖于低层服务来实现这个过程。

RTP 不保证交付或防止乱序交付,也不确定底层网络的可靠性。它只是发送,而不管数据包在传输过程中是否丢失,或者接收方是否收到数据包。 RTP实现有序传输。 RTP 中的序列号允许接收方重新组织发送方的数据包序列。同时,序列号也可以用来确定适当的数据包位置。例如,在视频解码中,不需要顺序解码。

4、RTCP(Real-time Transport Control Protocol,实时传输控制协议)

RTCP是RTP的支持协议,为RTP媒体流提供通道外控制。 RTCP和RTP协同工作来打包和发送多媒体数据,在多媒体流会话参与者之间周期性地传输控制数据。

RTCP的主要功能是反馈RTP提供的服务质量(QoS)并收集相关媒体连接的统计信息,例如传输的字节数、传输的数据包数、丢失的数据包数、单向和双向网络延迟等。网络应用程序可以使用RTCP提供的信息来提高服务质量,例如限制流量或切换到压缩比较低的编解码器。

1.实时美颜参考网站:http://altitudelabs.com/blog/real-time-filter/

关于深度解析iOS直播应用开发:流程详解、资料汇总与推流技术探讨到此分享完毕,希望能帮助到您。

用户评论

酒笙倾凉

我想学做直播APP,这个内容太棒了!

    有20位网友表示赞同!

从此我爱的人都像你

整理直播APP的流程,真是有帮助,我一直在找这种资料!

    有13位网友表示赞同!

你是梦遥不可及

推流和拉流都是重点技术吧,这篇文章会详细讲解吗?

    有7位网友表示赞同!

惯例

HLS和RTMP的区别在哪里呢?希望这篇文章能解释清楚。

    有13位网友表示赞同!

tina

视频直播越来越流行了,做个自己的直播APP真是太酷了!

    有7位网友表示赞同!

一笑傾城゛

我最近也在学习iOS开发,这个话题正好对我很适用。

    有9位网友表示赞同!

红尘滚滚

看了标题,感觉这篇博客会很有用,忍不住想收藏了!

    有16位网友表示赞同!

■孤独像过不去的桥≈

想了解更多关于SMTP的信息,这篇文章应该能给我一些启发。

    有15位网友表示赞同!

一样剩余

PLPlayerKit的使用方法在里边有讲解吗?我很期待学习。

    有11位网友表示赞同!

雪花ミ飞舞

做直播APP需要处理很多技术细节,这篇博客可以帮我解决一部分难题!

    有5位网友表示赞同!

七级床震

希望能介绍一些直播APP的设计思路和用户体验方面的知识。

    有9位网友表示赞同!

あ浅浅の嘚僾

我正在尝试用iOS开发直播功能,希望能从这篇文章中学到经验。

    有10位网友表示赞同!

伤离别

学习iOS开发是一个很有挑战的过程,感谢作者分享这些宝贵信息!

    有14位网友表示赞同!

念初

想了解不同直播平台的技术实现差异,希望这篇文章能让我有所收获。

    有6位网友表示赞同!

拥菢过后只剰凄凉

看了标题感觉很全面,应该能涵盖直播APP开发的绝大部分知识点。

    有19位网友表示赞同!

独角戏°

技术文档和文章总是很好帮助学习!期待这个博客能详细讲解每个步骤。

    有10位网友表示赞同!

闲肆

我有很多关于直播App的问题,希望这篇文章能帮我找到答案。

    有5位网友表示赞同!

南初

直播技术的更新迭代速度很快,学习这些最新的技术非常有必要!

    有6位网友表示赞同!

半梦半醒i

制作一套完整的直播系统需要哪些硬件配置呢?希望能在这篇文章里了解。

    有17位网友表示赞同!

【深度解析iOS直播应用开发:流程详解、资料汇总与推流技术探讨】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:正品Coach包包购买指南:九大推荐购物渠道一览 下一篇:室内读经班开设决策解析