首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何像抖音直播一样,从 App 直播间到桌面画中画实现画面无缝切换?丨有问有答

目前 App 内使用腾讯云的播放播放 flv 的,切到桌面画中画小窗时必须使用系统的 AVPictureInPictureController + AVPlayerAVPlayer 不支持 flv...,所以只能播放 hls。...在 App 的直播间依然使用腾讯云的播放播放 flv 的,同时在 flv 的首帧渲染成功后,再拉起一个 AVPlayer播放一路占位的 hls (可以静音、全黑、小尺寸画面)。...需要注意的是: 1)App 要开启后台播放音频,继续播放 flv 的声音; 2)支持后台渲染的能力,支持退后台后,旁路渲染 view 能平滑渲染 flv ,这需要设置好 MPNowPlayingInfoCenter.nowPlayingInfo...如果 hls 那路一直不出问题还好,画中画始终依赖 flv 的状态控制 UI 就好,但是如果 hls 那路流出错导致 AVPlayer 报错就会直接影响到画中画的状态。

1.7K20

基于 HTTP 的低延迟流媒体播放器的性能

我们的实验捕获并报告了几个性能指标,例如平均比特率、下载的媒体数据量、延迟以及缓冲切换统计数据。这些结果随后用于描述观察到的 LL-HLS 和基于 LL-DASH 的播放器的性能差异。...低延迟自适应算法的其他变体可以在 LL-HLS播放器中找到,例如 HLS.js、Shaka 播放器 和 Apple 的 AVPlayer。...当第一个主要带宽波动发生时(即图 3 中的时间间隔 [250 - 340]),AVPlayer 遇到缓冲区变空的情况,并且在重新缓冲恢复播放后无法保持低延迟。...在比特率方面(参见图 4),我们注意到 Shaka 播放器在 10 分钟的会话中达到了最高的平均值 (1228 kbps),其次是 AVPlayer (1136 kbps) 和 HLS.js (849...HLS.js 和 Shaka 播放器更接近的实时边缘,因此,它们比 AVPlayer 更容易重新缓冲HLS.js 为 36 次,Shaka 播放器为 12 次)。

8.7K40
您找到你想要的搜索结果了吗?
是的
没有找到

直播推优化丨音视频工业实战

在推端发生断流,在各级缓冲没有消耗完音视频数据之前,如果能恢复数据生产,还是有希望避免播放端出现断播或卡顿的。这样一来,实现推断流重连还是很有必要的。...对于这种情况,可以支持退后台继续推,不过有几点需要注意: 1)退后台如果继续采集音频可能涉及到隐私问题。对于这个问题,可以退后台停止采集,但是保持推静音音频数据。...当然,如果产品上可以退后台继续采集音频,就使用系统的能力持续采集就好了。 2)退后台无法继续采集视频,这时候如果不推视频数据,那么可能会引起 CDN 和播放器的不兼容的问题。...3)由于退后台时间较长后,App 的网络请求可能被系统中断,甚至 App 可能被杀死。对于这个问题,可以尝试一些后台保活的方案,比如 iOS 可以在退后台播放静音音频来保活。...主流直播技术延时 HLS:延时主要来自编码解码时产生延时、网络延时、CDN 分发延时。由于它是切片协议,延时分两大块,一个是服务端有切片缓冲延时,另一个是在播放端防抖缓冲会有延时。

1.1K20

编码,打包,CDN交付和视频播放器端的延迟优化

就编码阶梯而言,建议在阶梯的下端添加一个轻量级,切片的大小比通常的要小一些,以便在困难网络条件下,移动设备仍然能够访问。...视频播放器通常经过优化,可为最终用户提供不间断的播放,这意味着播放器会优先考虑缓冲区长度而不是降低延迟。但并不意味着完全缺乏启用低延迟的选项,而是在每个播放器的初始化设置中默认不启用这些选项。...实时边缘时间粘性(Live Edge-Time stickiness):即使播放器以预期延迟开始播放,也可能在重新缓冲的情况下,在重新缓冲之前的最后已知时刻恢复播放。...这通常是默认情况下在所有播放器中发生的情况,但是一些播放器提供了在空缓冲区后重新加载播放列表/清单的选项(当音频或视频轨道的缓冲区变为零秒并且卡在其上时),或者及时向前寻求播放并且同时关注实时边缘时间。...对不可用切片的恢复能力(Resilience to segments unavailability):可能是某个特定的媒体切片根本不可用,或者与播放器的期望相比有一些延迟。

2K40

企鹅电竞直播关键技术大揭秘

(企鹅电竞Android终端目前就是采用FLV) HLS HTTP LiveStreaming (HTTP协议传输)---常见H5页面播放视频都采用HLS协议; HLS是苹果推出的解决方案,将视频分成...推:主播将本地采集的视频源和音频源通过编码器编码后,推送到后台服务器(腾讯云),目前企鹅电竞推端,Android和IOS端使用腾讯云RTMP推,PC端使用OBS推,所以经常也称为“RTMP发布...腾讯云后台:腾讯云后台收到上传的(upload)后,后台会对该流进行转码操作,比如转码为H265/h264的,转码后的也被称为转码,转码再经过DC源的分发,分发扩散到CDN中,最终提供用户播放使用...(这部分内容在推流出类型章节详细描述) 播放端:用户在Android、IOS、PC、H5、游戏内置页面等渠道拉后,进行硬解/软解码,目前企鹅电竞主流播放协议移动终端使用FLV、H5页面使用HLS两种播放协议...创建直播间:推开始前,先要给主播创建一个直播间,否则创建直播间失败,推也会终止; 第七步:开始推:以上步骤完成,及进入推状态,完成主播的一次直播请求;以上任何一个步骤失败,开播则不能成功。

5K30

【Android 高性能音频】AAudio 状态机 ( 创建 | 打开 Open | 开始 Started | 暂停 Paused | 刷写 Flushed | 停止 Stopped | 关闭 )

: // 设置音频格式 AAudioStreamBuilder_setFormat(builder, sampleFormat_); 设置 AAudio 音频缓冲区大小 : 这里的缓冲区是播放器的缓冲区...状态下 , 如果调用 AAudioStream_requestPause() 方法 , 就会进入该状态 ; 此时播放器是暂停的 , 可以随时恢复播放 , 调用 AAudioStream_requestStart...() 方法 , 可以恢复播放 , 进入 Started 状态 ; ④ Flushed : 刷写状态 , 在 Paused 状态下 , 调用 AAudioStream_requestFlush() 方法..., 就会进入该状态 , 这是将播放缓冲区中的数据播放完毕 , 可以清空缓冲区 ; 调用 AAudioStream_requestStart() 方法 , 可以恢复播放 , 进入 Started 状态...: 如果成功 , 返回 AAUDIO_OK , 如果失败会返回对应的错误码 ; IV .

63720

如何快速搭建完整的视频直播系统?| 码云周刊第 69 期

项目简介:HTML5 播放器、M3U8 直播和点播、RTMP 直播、低延迟、推/播地址鉴权、优化浏览器兼容性,HLS+扩展。...项目地址:Tinywan/html5-dash-hls-rtmp 3、项目名称:yjPlay ?...旧版实现的视频推功能。 自定义介绍字幕、歌词滚动显示,同时滚动显示翻译歌词、切歌。 显示排队播放歌曲,渲染视频。 通过弹幕获取实时cpu温度。 闲时随机播放预留歌曲。 播放音乐时背景图片随机选择。...项目简介:SGPlayer 是一款基于 AVPlayer、FFmpeg 的媒体资源播放器框架。...支持 RTMP、RTSP 等直播。 支持选择音频轨道。 支持控制音频输出音量。 支持无损视频截图。 支持近所有常用媒体格式。 极简的事件通知机制。 项目地址:Single/SGPlayer

2.4K20

新知 | 流媒体源流常见问题与延迟分析处理

播放端常见的问题主要集中在播放失败播放没声音,音画不同步或者画面卡住不动,出现延迟很高等等。造成这些问题的常见原因有几类,这里结合案例展开讲一下。...在这个案例中,视频的GOP过大引发CDN下发的缓存过长,播放器缓存过多,导致延迟过大。 右边的案例中,客户原始地址播放失败的,但转码可以正常播放。分析了这个客户的播放文件,发现它下发没有关键帧。...第四类,音视频内容存在设备兼容性问题 左边的案例中,内容在其他平台,比如说PC、Web、安卓等播放都是正常的,但是在iOS上的HLS播放不了。...例如客户端发送了一段数据之后,等待服务器和ACK,如果超时200毫秒还没收到,那么下一次客户端会进行重试。但是如果下一次的ACK再次丢失,超时时间有可能会扩大到400毫秒。...当RTT较长时,快直播可以提高FEC的冗余,使得不需要借助重传,直接通过冗余的数据包就可以进行恢复。另外通过带宽估计算法动态调整jitterbuffer,使得缓冲更适应当前网络的状态。

1.6K30

HLS

RTMP,实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。...HLS 的基本原理就是当采集推端将视频推送到流媒体服务器时,服务器将收到的信息每缓存一段时间就封包成一个新的 ts 文件,同时服务器会建立一个 m3u8 的索引文件来维护最新几个 ts 片段的索引...相对于常见的流媒体直播协议,例如 RTMP 协议、RTSP 协议等,HLS 最大的不同在于直播客户端获取到的并不是一个完整的数据,而是连续的、短时长的媒体文件,客户端不断的下载并播放这些小文件。...HLS 是苹果推出的流媒体协议,在 iOS 平台上可以获得天然的支持,采用系统提供的 AVPlayer 就能直接播放,不用自己开发播放器。...正在上传…重新上传取消 RTMP 相对于 HLS 来说,采用 RTMP 协议时,从采集推端到流媒体服务器再到播放端是一条数据,因此在服务器不会有落地文件。

3.7K41

HLS 协议:直播回放首选这个协议?丨音视频基础

对于 HLS 直播,相对于常见的流媒体直播协议,例如 RTMP 协议、RTSP 协议等,HLS 最大的不同在于直播客户端获取到的并不是一个完整的数据,而是连续的、短时长的媒体文件(如 MPEG-TS...格式),客户端不断的下载并播放这些小文件。...HLS 作为苹果公司提出的协议,在 iOS 客户端上得到了很好的支持,比如 AVPlayer 和 Safari 都支持对 HLS 流媒体的播放;再加上 M3U8/TS 封装格式可以在直播中持续处理和存储流媒体数据...HLS 协议的整体框架如下图所示: HLS 协议涉及到 3 个部分: 1)服务端组件 服务端组件主要的职责是处理上传链路的媒体,并对齐进行编码和格式封装,为资源分发做好准备。...在典型的 HLS 协议实现中,一般是采集音频和视频输入,将它们编码为 H.264 和 AAC 格式,最终经过服务端组件处理成 MPEG-2 的传输

1.3K20

你问我答 | 云直播CSS(2021年5月-7月)

目前混后台暂此支持2000及以下的分辨率,遇到 -10021 报错时,一般是混输入某条分辨率宽或高超过2000。可以使用 FFplay 播放直播,查看源流分辨率,是否超过2000。...编码/解码的延时主要来自于编解码器的 buffer 控制策略,一般是由 QoS 策略来控制,当编码器中数据产生后,如果协议栈不能及时把数据发送出去,网络产生了阻塞,会在推端的缓冲空间里产生累积,从而导致推的延时增加...,同样的,播放器如果没有收到足够多的数据给解码器解码,也会导致解码器的缓冲空间一直无法填满,从而产生渲染延时增加。...目前海外播放支持 HTTP-FLV、HLS、RTMP、WebRTC 播放。对于播放异常的问题,可以通过以下方式逐步排查: ping 域名是否能通? 如果不通,检查当前的网络环境。...如果非200,区分不同的失败情况,403通常是播放鉴权失败,检查防盗链计算格式是否符合要求,404通常是播放不在平台上,检查推是否正常。

73340

一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

HLS_start_offset 用于获取广告已播时长;HLS_primary_id 用于标识播放片段和广告以避免重复播放相同广告。...2)使用 AVKit 和 AVFoundation 如果需要简单的播放 HDR 视频媒体渲染到 EDR,可以使用 AVPlayerViewController 渲染 AVPlayer,也可以使用 AVPlayer...3)视觉智能 新的播放器可以支持像处理其他文本一样获取视频帧中的文字: 获取视频画面中的文字 4)插片广告 新的 iOS 播放器开始支持插片广告了,其中 HLS 协议对插片广告的支持在前面 HLS...像素格式;这些配置可以在不重新创建的情况下即时修改。...此外,ScreenCaptureKit 支持:捕获由 GPU 内存支持的缓冲区以减少内存副本;支持硬件加速的内容捕获、缩放、像素和颜色格式转换,以降低 CPU 使用率来实现高性能捕获;支持视频和音频捕获

2.5K10

视频直播基础知识

Rtmp协议,proxy回复推端ack失败 Proxy send timeout Send() timeout Send超时,内部异常 Proxy send() return error Send(...,动态调整码率 播放端: -- oc多吐数据,播放端多缓冲数据,播放缓冲的数据越多,在播放过程中卡顿越少,但是缓冲数据多了,会引起较大的延迟,因此需要合理设置缓冲区大小。...大部分播放器都是拿到一个完整的GOP后才能解码播放,基于FFmpeg移植的播放器甚至需要等待音画时间戳同步后才能播放(如果一个直播里边没有音频只有视频相当于要等待音频超时后才能播放画面)。...例如,播放端临时断网了,但又快速恢复了,针对这种场景,播放端如果不做容错处理,很难不出现黑屏或是重新加载播放的现象。...,如果超时时间设置的比较短,就会出现播放失败的现象,遇到这种现象,多试几次就可以了。

7.6K93

AVKit框架详细解析(四) —— 基于AVKit 和 AVFoundation框架的视频App的构建

稍后,您将学习如何从服务器播放视频。...2) 在这里,您获取 url 并创建一个 AVPlayer 对象。 AVPlayer 是在 iOS 上播放视频的核心。 播放器对象可以启动和停止您的视频,更改其播放速率,甚至可以调高和调低音量。...唯一的区别是第二个 URL表示 HTTP live stream (HLS)。 HLS 的工作原理是将视频分成 10 秒的块。 这些然后一次一个块地提供给客户端。...通过将速率设置为 0.0 来停止视频剪辑播放: embeddedVideoRate = 0.0 要在全屏视频关闭时恢复播放,请在 VideoFeedView 主体中找到 fullScreenCover...接下来,您需要更改音频会话类别。 PiP 视频无法在环境模式下播放

6.9K10

HLS 和 DASH 多编解码器和封装

(规范统一上述规则) 具有原始的多包 用 shaka 和 Bento4 封装 HLS 和 DASH fuboTV 公司简介 FuboTV 是一家美国流媒体电视服务公司,为美国、加拿大和西班牙的客户提供服务...播放器及设备 据 fuboTV 统计,用户点播视频所用的播放器和设备有: AVPlayer - ios & tvos; ExoPlayer - firetv & Android; Roku native...上述播放器所用的传输协议很有趣,除了苹果播放器之外,其他都用的是 DASH 协议: Native AVPlayer - HLS; ExoPlayer - DASH; Roku Player - DASH...该解决方案只在部分播放器上起到作用,在其他播放器上会构建失败,正如我将在下一节所说的。...具有原始的多包 如图 2 所示,如果播放器可以解码 HEVC,则 master 会发出 get 请求原始

2.1K40

低广播延迟及实现协议

同样,使用TCP进行广播的应用程序本身对协议本身没有任何控制(超时,重新广播的窗口大小),因为TCP传输被实现为单个连续,并且在错误发生之前,应用程序可能会“冻结”无限期 而且更高级别的协议没有配置TCP...RTMP仅包含根据帧速率计算的标签,因此解码器无法确切知道何时解码此。这就需要接收组件均匀地生成用于解码的样本,因此必须通过数据包抖动的大小来增加缓冲区。...通常,Apple的HTTP Live Streaming(HLS)使用MPEG传输,而MPEG DASH使用分段的MP4。2017年7月,发布了CMAF规范。...但是,在不兼容的情况下,播放器仍可以使用CMAF规范内的内容,并且具有HLS或DASH典型的标准延迟时间。 低延迟HLS 苹果在2019年6月发布了低延迟HLS规范。...SRT在每个数据包内部都包含时间戳,从而允许以等于编码率的速率播放,而无需进行大的缓冲,同时使抖动(不断变化的数据包到达率)和传入的比特率对齐。

1.5K50

使用 AudioTrack 播放音频轨道

01 前言 大家好,本文是 iOS/Android 音视频开发专题 的第七篇,该专题中 AVPlayer 项目代码将在 Github 进行托管,你可在微信公众号(GeekDev)后台回复 资料 获取项目地址...另外,WAV 文件其实就是 PCM 格式,因为播放 PCM 裸时,我们需要知道 PCM 的采样率, 声道数, 位宽等信息,WAV 只是在文件头前添加了这部分描述信息,所以 WAV 文件可以直接播放。...「WAV 文件头/图片来自Google」 PCM 是音频处理中频繁接触的格式,通常我们对音频的处理都是基于 PCM ,如常见的音量调节, 变声, 变调等特性。...刷新缓冲区数据 public void flush() 刷新当前排队等待播放的数据,已写入当未播放的数据将被丢弃,缓冲区将被清理。...04 MediaCodec 解码并播放音频轨道 如果我们要播放一个音频轨道,需要将音轨解码后才可以播放,之前我们一直在说如何解码视频,如果你看过 AVPlayer Demo ,你一定对如何创建视频轨道解码器很熟悉了

2.1K31
领券