直播

阅读: 评论:0

直播

直播

方式一: 1、通常一种切换码流方式,如系统播放器切换码流,先Stop,再Create Player,再onPrepare,再Start 方式二: 2、实际上还有一种无缝切换码流,如果是单实例播放器,点击切换码流时,不销毁播放器器,只是暂停解码。开始请求新的url中数据,比如下载了有1-2片TS流后,重新送给解码器,重新启动解码,然后渲染输出。达到无缝输出的效果。 方式三: 3、如果是多实例播放器,总的实现思路是:用两个MediaPlayer 两个 SurfaceView. 首先让一个Mediaplayer 播一个视频,一般播一个小视频,这样不占资源,这个MediaPlayer播放的时候,让它Stop在这里,可以让这个MediaPlayer 隐藏掉 ,注意不要Reset或者Release这个MediaPlayer 。然后可以让另外一个MediaPlayer 播放视频, 这个时候这个MediaPlayer 切换视频资源的时候就不会出现黑屏的现象。达到无缝效果,至于之间播放到哪个位置,很简单,可以用存储起来,另外一个MediaPlayer播放时,如果有去取下这个数据,起播后,SeekTo到对应位置。然后Start。一样是无缝。 方式四: 4、以前有参考过一个专利,思路是这样的(实际也是用了多实例): 视频流采集终端收到用户终端的规格切换请求后,保持原编码器实例继续运行,并启动一个新编码器实例;再将新视频流与原视频流进行帧号同步;然后在新视频流中选择一个关键帧,并从该关键帧开始向用户终端传送新视频流,原视频流传送完该关键帧的上一帧数据后结束,且该关键帧的帧号与原视频流的最后一个关键帧的帧号之间的间距大于新视频流GOP长度的1/2;然后再关闭原编码器实例。 具体步骤: a、保持原编码器实例继续运行,并按用户终端所请求的新规格启动一个新编码器实例,其中的原编码器实例是指用户终端上一次所请求的原规格的编码器实例; b、将新视频流与原视频流进行帧号同步,使该两个视频流中的各个相同内容的帧一一对应;其中,新视频流是指新编码器实例输出的视频流,原视频流是指原编码器实例输出的视频流; c、在新视频流中选择一个关键帧,并从该关键帧开始向用户终端传送新视频流,原视频流传送完该关键帧的上一帧数据后结束,且该关键帧的帧号与原视频流的最后一个关键帧的帧号之间的间距大于新视频流GOP长度的1/2; d、关闭原编码器实例,空出编码器硬件资源,准备下一次切换。

本文发布于:2024-01-31 00:51:45,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170663361324106.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23