直播-拉流和推流概述

拉流(播放)

根据协议类型(如RTMP、RTP、RTSP、HTTP等),与服务器建立连接并接收数据;

  1. 解析二进制数据,从中找到相关流信息;
  2. 根据不同的封装格式(如FLV、TS)解复用(demux);
  3. 分别得到已编码的H.264视频数据和AAC音频数据;
  4. 使用硬解码(对应系统的API)或软解码(FFMpeg)来解压音视频数据;
  5. 经过解码后得到原始的视频数据(YUV)和音频数据(AAC);
  6. 因为音频和视频解码是分开的,所以我们得把它们同步起来,否则会出现音视频不同步的现象,比如别人说话会跟口型对不上;
  7. 最后把同步的音频数据送到耳机或外放,视频数据送到屏幕上显示。

了解了播放器的播放流程后,我们可以优化以下几点:

  1. 首屏时间优化
    从步骤2入手,通过预设解码器类型,省去探测文件类型时间;
    从步骤5入手,缩小视频数据探测范围,同时也意味着减少了需要下载的数据量,特别是在网络不好的时候,减少下载的数据量能为启动播放节省大量的时间,当检测到I帧数据后就立马返回并进入解码环节。

推流

在这里插入图片描述

  1. 经过输出设备(AVCaptureVideoDataOutput)得到原始的采样数据–视频数据(YUV)和音频数据(AAC);
  2. 使用硬编码(对应系统的API)或软编码(FFMpeg)来编码压缩音视频数据;
  3. 分别得到已编码的H.264视频数据和AAC音频数据;
  4. 根据不同的封装格式(如FLV、TS、MPEG-TS);
  5. 使用HLS协议的时候加上这一步(HLS分段生成策略及m3u8索引文件);
  6. 通过流上传到服务器;
  7. 服务器进行相关协议的分发;

推流步骤说明:很容易看出推流跟播放其实是逆向的,具体流程就不多说了。

  1. 优化一:适当的Qos(Quality of Service,服务质量)策略。
    推流端会根据当前上行网络情况控制音视频数据发包和编码,在网络较差的情况下,音视频数据发送不出去,造成数据滞留在本地,这时,会停掉编码器防止发送数据进一步滞留,同时会根据网络情况选择合适的策略控制音视频发送。
    比如网络很差的情况下,推流端会优先发送音频数据,保证用户能听到声音,并在一定间隔内发关键帧数据,保证用户在一定时间间隔之后能看到一些画面的变化。
  2. 优化二:合理的关键帧配置。
    合理控制关键帧发送间隔(建议2秒或1秒一个),这样可以减少后端处理过程,为后端的缓冲区设置更小创造条件。

软硬编解选择

  1. 网上有不少关于选择软解还是硬解的分析文章,这里也介绍一些经验,但根本问题是,没有一个通用方案能最优适配所有操作系统和机型;
  2. 推流编码: 推荐Andorid4.3(API18)或以上使用硬编,以下版本使用软编;iOS使用全硬编方案;
  3. 播放解码:Andorid、iOS播放器都使用软解码方案,经过我们和大量客户的测试以及总结,虽然牺牲了功耗,但是在部分细节方面表现会较优,且可控性强,兼容性也强,出错情况少,推荐使用。
  4. 附软硬编解码优缺点对比:
编解码器类型优点缺点
软编解码各平台兼容性强;解码色彩较硬编码好;编解码可操控空间大,自由度高,更容易定制cpu消耗比较大
硬编解码功耗低,执行效率比较高不同机型的芯片对编解码的实现不同,兼容性比较差;可控性比较差

采集

采集的步骤:

  1. 创建AVCaptureSession
  2. 输入对象AVCaptureDeviceInput
  3. 输出对象AVCaptureVideoDataOutput
  4. 输出代理方法captureOutput(_:didOutputSampleBuffer:fromConnection:)

相关内容

采集数据:iOS平台上采集音视频数据,需要使用AVFoundation.Framework框架,从captureSession会话的回调中获取音频,视频数据。
传输层协议:主要采用RTMP协议居多(默认端口1935,采用TCP协议),也有部分使用HLS协议
音/视频编码解码:FFmpeg编码解码
视频编码格式:H.265、H.264、MPEG-4等,封装容器有TS、MKV、AVI、MP4等
音频编码格式:G.711μ、AAC、Opus等,封装有MP3、OGG、AAC等
渲染工具:采用OpenGL渲染YUV数据,呈现视频画面。将PCM送入设备的硬件资源播放,产生声音。iOS播放流式音频,使用Audio Queue 的方式,即,利用AudioToolbox.Framework 框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/54110.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网红直播辅助推流设备(可同时多平台推流直播)

1. 多平台推流需求 许多刚入行的小主播,不知道哪个平台适合自己,也不知道哪个平台的流量最好,因此都很希望能同时在多个平台尝试,鸡蛋分开放到多个篮子是最安全的。这就催生了多平台推流的需求。 2. 软件方案 在百度上搜索多平…

微信直播如何引流获客?

微信作为国内最大的社交平台,拥有巨大的流量,很多商家因此想通过微信直播进行引流获客。但是对于不同的行业,不同的领域的商家来说,直播引流获客的方式也不同,如创客匠人平台打通微信直播渠道,通过多种工具…

H5直播之从推流服务搭建到视频直播

最近视频直播比较火,发现目前 WEB 上主流的视频直播方案有 HLS 和 RTMP,移动 WEB 端目前以 HLS 为主,PC端则以 RTMP 为主实时性较好,接下来将围绕这两种视频流协议来展开H5直播主题分享,下面通过本文给大家分享HTML5视…

chatgpt赋能python:Python中连接函数的使用

Python中连接函数的使用 在Python编程中,连接函数是一个非常重要的部分。连接函数主要是用来连接字符串和序列。它可以把多个字符串或序列合并成一个字符串或序列。本篇文章将介绍Python中连接函数的基本用法。 连接字符串 使用加号()可以…

chatgpt赋能python:Python内连接介绍

Python内连接介绍 Python是一种高级编程语言,因其简单易懂、易于学习、高效易用而备受欢迎。内连接是Python编程中的一个重要概念,其可以用于连接两个或更多数据集,极大地方便了数据的处理和分析。 Python内连接是指通过相同的列将两个或更…

chatgpt赋能python:Python连接Hive:深度剖析

Python连接Hive:深度剖析 简介 近年来,数据分析和处理在企业中扮演着越来越重要的角色。因此,数据仓库系统(如Hive)的需求也越来越迫切。对于数据分析工程师和开发人员而言,Hive提供了一种基于Hadoop的SQ…

chatgpt赋能python:Python如何连接数据库?

Python如何连接数据库? Python作为一种高级编程语言,已经被广泛应用于数据科学和Web开发。连接数据库是Python的一项重要功能,可以使我们的代码访问各种数据源来收集、分析和存储数据。在这篇文章中,我们将介绍Python如何连接各种…

【VMware workstation】虚拟机/主机互相ping不通的问题排查

环境:主机 Windows10 VMware workstation pro; 虚拟机 Windows XP 参考:VMware虚拟机和主机互相ping不通排查以及解决 workstation下载:感谢原作者!截止到目前是可用的 问题描述 虚拟机无法上网,主机与虚拟机互相pi…

免费主机 虚拟主机 香港虚拟主机

免费主机 虚拟主机 香港虚拟主机http://zhuji.zzhinan.com/

虚拟呼叫中心运营管理平台压力测试

今次将以实际的案例来说明,asterisk 的并发量,通过对比发现asterisk 1.8 性能比asterisk1.4 版本高了很多。 普通4线程的CPU,2G 内存,Asterisk 1.8 运行100路并发,系统负载最大负载也只有到1,但是Asterisk …

host-only模式,主机能ping通虚拟机,虚拟机无法ping通主机解决办法

一、问题描述 今天配环境发现VMware下的虚拟机处于host-only模式时:主机能ping通虚拟机,虚拟机无法ping通主机。 二、解决办法 1、打开控制面板—->Windows防火墙——>允许应用或功能xxx 2.勾选“文件和打印机共享” 然后点确定。

为什么VM虚拟机ping得通主机,但主机ping不通虚拟机?

云计算这门课程要搭建hadoop集群环境,我就按着老师得要求,在我win 10里的VMware中安装了Ubuntu。 确认安装Hadoop,然后两台机子还要互ping。之前的步骤顺风顺水,到这一步就出现问题了。我主机ping不通虚拟机,但是Ubun…

VMware 主机与虚拟机ping不通问题

VMnet1:是host-only,也就是说,选择用VMnet1就相当于VMware提供了一台虚拟机,仅虚拟机和真实系统连接,虚拟机可用与真实系统共享文件,但是虚拟机无法访问外网 VMnet8:是网络地址转换&#xff08…

为什么选择香港虚拟主机?

虚拟主机的工作原理是在单个物理服务器托管多个站点——在这台共享的服务器上,各种用户以非常低的成本来享受资源配置,适合不需要高级配置或流量不高的小型网站。而位于香港数据中心的虚拟主机通常拥有免备案、高稳定性的特点,尤其适合拓宽国…

对于主机ping不通vmware虚拟机,虚拟机能ping通主机的一种解决方案

如果都在vmware的网络适配器的参数和主机中VMnet8网络配置好了都不能解决的话,可以试试重启VMnet8网络 先禁用再启动

Callnovo全球联络中心云通讯CRM平台系列(一)

技术赋能语音电话组件为全球来电顾客打造优质体验 为了实现全球客服中心优质运营管理,给客服中心一线客服人员和全球来电顾客打造优质体验,每一家进军全球市场的出海企业都一定会通过自建或者外包,部署一套专业且完善的全球客诉解决方案。其…

关于虚拟机能ping通主机,而主机不能ping通虚拟机的问题

Ping不通虚拟机或者主机这个问题恐怕让很多同学头疼吧?如果你是关于标题的问题,可以参考一下,如果是其他问题请移步其他博客。当然也欢迎大家前来阅读指正!第一次写,写的不好的地方大家多包涵! 这个问题是我…

经济回暖、兴趣电商升级,品牌在竞争白热化的市场中如何突围?| D3大会圆桌回顾

冬去春来,消费市场韧性回弹,消费趋势正处于“转折”和“跃升”的阶段。新的机遇和挑战也将伴随着新的思维、方法和模式,呈现出更多元的变化和创新:渠道虚实融合,内容为王,社会化媒体成为主战场等消费场景不…

计算机的负面影响英语作文,关于电脑的坏处英语作文

电脑,大家并不陌生,电脑能带给我们什么呢? 我觉得电脑是我们学习中的好伙伴,电脑可以用来查资料,电脑可以用来看你最想了解的新闻,电脑可以用来写博文,发表你自己的文章,发表你... 这学期&…

依赖计算机英语作文,过度依赖电脑的英语作文

过度依赖电脑的英语作文 在平时的学习、工作或生活中,大家对作文都再熟悉不过了吧,借助作文人们可以反映客观事物、表达思想感情、传递知识信息。为了让您在写作文时更加简单方便,以下是小编为大家收集的过度依赖电脑的.英语作文,…