直播网站源码直播平台软件开发iOS动手做一个直播(原理篇)

上篇文章主要给出了代码,但是并没有详细说明直播相关的知识,这篇文章就说一下直播的相关理论知识。附上直播代码篇地址。 ###推流 腾讯直播平台,阿里直播平台,百度直播平台提供均为RTMP的推流和HLS/RTMP等拉流. 推流是一个直播不可缺少的成分,说起推流都会说基于RTMP协议,那什么是RTMP呢? RTMP全称:Real Time Messaging Protocol(实时消息传送协议) 1)、工作在TCP之上的明文协议,使用端口1935; 2)、RTMPT封装在HTTP请求之中,可穿越防火墙; 3)、RTMPS类似RTMPT,但使用的是HTTPS连接; RTMP协议是被Flash用 于对象、视频、音频的传输。这个协议建立在TCP协议或者轮询HTTP协议之上。RTMP协议就像一个用来装数据包的容器,这些数据既可以是AMF格式的 数据,也可以是FLV中的视音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的包都是按照固定大小的包传输的。 #####直播中常见的协议还有

  • RTSP(Real Time Streaming Protocol,实时流传输协议):定义了一对多应用程序 如何有效地通过IP网络传送多媒体数据。

  • RTP(Real-time Transport Protocol,实时传输协议):RTP是针对多媒体数据流的一种传输层协议,详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通系统(配合H.323或SIP),使它成为IP电话产业的技术基础。

  • RTCP(Real-time Transport Control Protocol,实时传输控制协议):RTCP是RTP的配套协议,为RTP媒体流提供信道外的控制。RTCP和RTP一起协作将多媒体数据打包和发送,定期在多媒体流会话参与者之间传输控制数据。 RTCP的主要功能是为RTP所提供的服务质量(QoS)提供反馈,收集相关媒体连接的统计信息,例如传输字节数,传输分组数,丢失分组数,单向和双向网络延迟等等。网络应用程序可以利用RTCP所提供的信息来提高服务质量,比如限制流量或改用压缩比小的编解码器。

####步骤 在客户端上要完成直播视频的采集及RTMP上推,主要需要以下几个步骤: 1.音视频的采集; 2.对视频进行H264编码,对音频进行AAC编码; 3.对编码后的音、视频数据进行FLV封包; 4.建立RTMP连接并上推到服务端。 而在将原始视频编码过程中,有两种方案:一种是利用第三方库FFmpeg 进行编码,一种是利用iOS自身的AVAssetWriter 或VideoToolBox.framework的VTCompressionSession进行编码。FFmpeg因其跨平台及功能丰富等诸多优势,被广泛使用。而使用AVAssetWriter编码需要将视频写入本地文件,然后通过实时监听文件内容的改变,读取文件并处理封包。从iOS8开始,VideoToolBox提供了硬件编码支持,可以使用VTCompressionSession进行编码。

####H264编码与AAC编码

  • H.264编码 还记得之前的一次面试中,谈到H264编码,当时完全不知道(-_-`). H264是一种高压缩率的编码标准,如何压缩嘞?一般的视频采集都是25帧/秒,也就是每秒截图25次,其实每一张图片的内容都相差不大,压缩的办法就是利用算法,只将每张图片变动差异化的部分保存下来,这样视频文件就小多了。这里放几篇学习的文章,了解 H.264 编码,iOS8系统H264视频硬件编解码说明,H.264硬编码代码。
  • AAC编码 iOS音频AAC视频H264编码 推流最佳方案

####服务器的搭建 说了这么多到服务器的搭建了,这里提供两个流媒体服务器搭建的地址,按照这个地址我们可以自己搭建服务器进行推流。因为过程和截图实在是比较详细,我就不再重复截图一遍了,传送门:iOS基于RTMP 的视频推流 与 HLS-搭建Nginx流媒体服务器(3)以及IOS手机直播Demo技术简介。需要知道的就是,现在直播应用,采用RTMP协议居多,也有部分使用HLS协议。 采用RTMP协议,就要看下它与流媒体服务器交互的过程,RTMP协议的默认端口是1935,采用TCP协议。并且需要了解FLV的封装格式。 ####拉流 直播测试的实现的总体思路大致就是,(开源推流框架:腾讯,优酷等)+ (Nginx+RTMP) + (ijkplayer)。 我们要实现我们的直播播放,就是把获取到的数据解压缩,恢复成原始数据。解码就是将H264变成YUV,AAC变成PCM。 解码可以使用软解码,硬解码。 软解码就是利用CPU资源去解压缩数据,采用的方式是FFmpeg解码。 硬解码,对于iOS平台来说,可以使用VideoToolbox.Framework(该框架只能在iOS 8.0及以上系统使用)。为了方便我们的实现,我们采用的一般方式是第三方的SDK,网易云直播,暴风云直播,腾讯云直播,新浪云,VideoCore ,以及哔哩哔哩的ijkplayer等。 有比较多的SDk可以帮助我们去实现播放和推流 。 ####名词介绍

  • HLS HTTP Live Streaming,HLS 是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。 这里介绍两个介绍比较不错的文章如何使用iOS实现《芈月传》的直播、点播、缓存?-HTTP Live Streaming (HLS)(一),如何使用iOS实现《芈月传》的直播、点播、缓存?-HTTP Live Streaming (HLS)(二)

直播网站源码直播平台软件开发iOS动手做一个直播(原理篇)相关推荐

  1. iOS动手做一个直播app开发(代码篇)

    iOS动手做一个直播app开发(代码篇) ###开篇 好久没写简书,因为好奇的我跑去学习直播了,今天就分享一下我的感慨. 目前为止直播还是比较热点的技术的,简书,git上有几篇阅读量和含金量都不错的文 ...

  2. 直播网站源码实现消息推送需要怎么做,以PHP为例

    最近,关于消息实时推送在很多项目中应用广泛,这样做的好处能实现信息的实时推送,方便对方及时接收消息,加快了消息通知的时效性,提高了工作效率.在众多的消息推送三方中,技术比较成熟完善的有很多,下面,我们 ...

  3. 未来的直播网站源码可实现,CycleGAN,视频换脸?

    未来的直播网站源码可实现,CycleGAN,视频换脸? 直播现在很火热,它满足了人们通过互联网更深度交流的欲望.做直播网站的成本除了技术.机器,主要是网络带宽,越清晰,带宽成本越高.阿里云上3M带宽的 ...

  4. python开发直播网站_开发直播网站源码的三种计算机语言

    直播网站源码开发所用的语言,根据未来运营平台不同,其选择也不同.一般来说,如果是PC后台,那么会采用PHP语言编写,如果是在安卓上开发,则选择Java语言,如果是在iOS上开发,则采用object-c ...

  5. 在线直播网站源码开发,视频的采集如何实现?

    支撑在线直播网站源码发展的关键就是直播技术的实现,在整个流媒体传输中视频的采集时开始,一般利用到的是设备端的摄像头,我们在实现视频采集时,不仅需要获取摄像头的调用权限,还要获取到视频录制的数据. 我们 ...

  6. 用H5做直播网站源码,如何实现格式推流和播放

    上一篇文章我们讲到,在了解视频流协议HLS与RTMP.明晰目前直播网站源码的主流形式,以及实现直播的简要流程后,我们来继续讲利用Html5实现直播网站源码的剩余步骤. Html5直播网站源码实现录制 ...

  7. 视频直播系统源码,平台在日间和夜间模式之间来回切换

    视频直播系统源码,平台在日间和夜间模式之间来回切换实现的相关代码 import 'package:flutter/material.dart'; import 'package:flutter_wid ...

  8. 视频直播网站源码,uniapp页面跳转的几种方法和区别

    视频直播网站源码,uniapp页面跳转的几种方法和区别 保留当前页面,可跳转到非 tabBar 页面,使用uni.navigateBack可以返回到原页面(可传参) uni.navigateTo({u ...

  9. 直播网站源码实现IM即时聊天

    IM及时聊天承担着直播网站源码系统信息.用户之间私聊消息传递的重担,即时聊天可以说是直播网站源码重要的基础功能之一.IM即时聊天的实现原理是用户在发出信息后,先经过IM服务器,再传递给另一个用户,相当 ...

最新文章

  1. 实验三-密码破解技术
  2. Oracle中table的大小计算方式
  3. P2240 【深基12.例1】部分背包问题(贪心)难度⭐
  4. 系统调优一之内存子系统
  5. 学习python需要什么基础-自学python需要什么基础,要掌握哪些知识?
  6. springboot进行图片上传并访问资源
  7. iOS开发之SQLite--C语言接口规范(三)——Binding Values To Prepared Statements
  8. Android 开发 Tips
  9. 87-区间线段树(板子)--那个苑区的人最瘦
  10. Axure tabstrip and different control
  11. 俄罗斯黑客入侵冬奥会系统,还甩锅给朝鲜?
  12. WPF 使用附加属性增加控件属性
  13. 数论入门 2021-2-28
  14. uniapp 使用本地数据库
  15. 计算机二级背景图设置,计算机二级。 ppt2010。 背景图片,柔化边缘椭圆 图片样式效果 怎么弄??...
  16. android摇骰子动画,Android实现微信摇骰子游戏
  17. 程序员坐行李箱迎寒风编码 2 小时,目击者:激励我写了一篇论文!
  18. 静态网网页设计成品下载
  19. 怎么靠网络的正常渠道赚钱?
  20. ROS2利用cartographer算法进行激光建图

热门文章

  1. 前端实现模拟购物商城案例实现
  2. 【Windows】【Linux】---- Java证书导入
  3. 超大XML文件怎么打开
  4. 【笔记分享】十一种滤波算法
  5. 解决企业数字化“历史遗留问题”,低代码具备天然优势 | 专访腾讯云微搭骆勤
  6. EasyUi之Dialog(对话框窗口)
  7. 完美Vista纯洁版下载原版Vista Ultimate ghost(完美激活 可以通过正版验证)
  8. 从第一行代码到20万行开源,我已经走过了三年
  9. HBase Shell启动缓慢及操作耗时长的原因分析与解决
  10. JDK 19:针对Java 19的功能