首页 > 其他分享 >H.265流媒体播放器EasyPlayer.js如何实现RTSP播放延迟优化?

H.265流媒体播放器EasyPlayer.js如何实现RTSP播放延迟优化?

时间:2024-12-17 15:33:48浏览次数:4  
标签:视频 H.265 媒体播放器 时间 RTSP 线程 sleep 播放

H5流媒体播放器,作为基于HTML5技术的创新产品,近年来在音频和视频播放领域取得了显著的发展。它不仅为用户提供了流畅、稳定的播放体验,还通过丰富的交互功能增强了用户的参与感。

在实际应用时,用户向我们提出了很多需求。其对延迟要求非常苛刻,在此基础上我们对性能进行了一次优化,再一次降低了延迟,以下是采取的方式:

1、提高解码线程的优先级

一个不容忽视且容易被人忽略的事实,就是安卓层在一些低优先级的线程上面,线程休眠时间要比sleep时间要长,在一个线程优先级为BACKGROUND的线程里,我们sleep 100毫秒,然后打印实际上线程暂停的时间。

new Thread(new Runnable() {
            @Override
            public void run() {
                Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
                long millis = System.currentTimeMillis();
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                Log.d(TAG,"thread sleep :" + (System.currentTimeMillis() - millis));
            }
        }).start();

然后打印输出如下内容:

thread sleep :102

可见优先级对线程的睡眠时间影响很大,我们这里需要严格控制休眠时间,所以我们需要将线程优先级设置高一些,可以设置成Audio级别:

Process.setThreadPriority(Process.THREAD_PRIORITY_AUDIO)

2、对于音频播放使用AudioTrack的非阻塞模式写入

EasyPlayer播放器在渲染视频轨和音频轨的时候,是分别在不同的线程进行的,但是由于有音视频同步策略,如果某一个线程速度慢了,那另外一个线程就也会放慢下来等待它,而音频渲染就是这样一个容易"慢下来"的线程。

3、优化追帧策略

视频是有一个个视频帧组成的帧序列。每个视频帧代表了一个时间点的采样,我们收到视频帧同时会得到其所在的时间信息,即视频时间戳。通过时间戳可计算出视频帧之间的时间间隔。播放时,我们需要根据这个时间间隔T来Sleep,这样播放时才能保证流畅性。

// 睡眠时间=当前时间戳-上一帧的时间戳-解码时间
long sleepTime = frameInfo.stamp - previousStampUs - decodeSpend * 1000;
if (sleepTime > 100000) {	// 睡眠时间超过100毫秒了,可能时间戳异常。设置为100毫秒。
       Log.w(TAG, "sleep time.too long:" + sleepTime);
       sleepTime = 100000;
}

当前流媒体发展如此迅速,我们也应对它有更深入的了解。EasyPlayer.js是一个基于JavaScript的轻量级音视频播放器,旨在简化音视频播放的功能和集成。它通常提供基本的播放、暂停、音量控制、全屏、进度条等功能,并且支持多种格式。

  • 支持点播多清晰度播放;
  • 支持全屏或比例显示;
  • 支持电子放大;
  • 支持水印(动态水印、幽灵水印);
  • 支持显示上一个视频最后一帧;
  • 支持播放器快照截图。

随着流媒体的发展愈发迅速,H5流媒体播放器可以拥有更多样化的播放器选择、更广泛的协议支持、更高的视频质量、更低的延迟、以及更广泛的应用场景。H5流媒体播放器的灵活性和兼容性使其成为现代网络环境中不可或缺的工具,它正在不断改变我们消费媒体内容的方式,为用户和企业提供了更加丰富和便捷的体验。

标签:视频,H.265,媒体播放器,时间,RTSP,线程,sleep,播放
From: https://www.cnblogs.com/easyplayer/p/18612564

相关文章

  • 私有化部署视频平台EasyCVR解决了网页端实时播放RTSP视频流的局限性
    在当今数字化时代,视频监控系统已成为安全保障的重要组成部分。然而,对于希望在网页端实现视频监控流媒体播放的用户来说,RTSP协议的兼容性问题常常成为一个难题。RTSP是一种网络控制协议,常用于流媒体数据的传输,但它并不被HTML5Video元素直接支持。幸运的是,随着技术的发展,我们已经有......
  • 视频分析设备平台EasyCVR轻松实现网页端直接播放RTSP流媒体
    在当今数字化时代,实时视频监控已成为安全防护的重要组成部分。然而,将实时视频流(RTSP)嵌入网页中播放一直是一个技术挑战,因为大多数现代浏览器并不直接支持RTSP协议。幸运的是,通过一些创新的解决方案和技术手段,我们可以有效地将RTSP流转换为网页可播放的格式。以下是几种常见的方法,......
  • RTSP播放器EasyPlayer.js报错“Too many active WebGL contexts” 是什么原因?
    随着互联网技术的飞速发展,流媒体视频已成为信息传播和娱乐消费的重要形式。无论是在线视频平台、社交媒体还是在线教育,流媒体视频的应用无处不在。而在这一生态系统中,开发者选择什么样的播放器进行集成和开发,也是至关重要的。随着技术的发展,越来越多的H5流媒体播放器开始支持H.26......
  • H.265流媒体播放器EasyPlayer.js网页直播播放器,如何在vue3中播放H.265视频流?
    在Vue3中使用EasyPlayer播放H.265视频流,你需要先确保你已经安装了EasyPlayer播放器库,以及相关的依赖和支持的H.265编解码器。以下是一个基本的示例,说明如何在Vue3应用中集成EasyPlayer并播放H.265视频流。步骤1:安装依赖确保你的项目中已经安装了EasyPlayer,你可以通过npm或ya......
  • H5流媒体播放器EasyPlayer.js无插件H5播放器如何在iOS上如何实现低延时直播?
    随着流媒体技术的迅速发展,H5流媒体播放器已成为现代网络视频播放的重要工具。其中,EasyPlayer.js播放器作为一款功能强大的H5播放器,凭借其全面的协议支持、多种解码方式以及跨平台兼容性,赢得了广泛的关注和应用。那么要在iOS上实现低延时直播,EasyPlayer.js视频流媒体播放器提供了......
  • Windows平台Unity3D下如何低延迟低资源占用播放RTMP或RTSP流?
    技术探讨自2017年我们发布跨平台的低延迟Unity下的RTSP|RTMP直播播放器后,Unity下的直播体验有了质的提升,特别是RTMP,从大家认知里面的几秒钟,直接缩减到100-300ms,满足了绝大多数场景下低延迟的技术诉求。今天就Unity下的RTSP|RTMP的低延迟播放,从以下几个维度,抛砖引玉,做个探讨: ......
  • GA/T1400视图库平台EasyCVR宇视设备视频平台:RTSP视频流不能在网页端播放的问题与解决
    在现代视频监控系统中,RTSP(实时流协议)是一种广泛应用于网络摄像机的协议,用于控制和传输音视频数据。然而,当尝试在网页端播放RTSP视频流时,我们可能会遇到一系列挑战。本文将探讨这些常见问题及其解决方案,并介绍如何使用GA/T1400视图库平台EasyCVR来有效地处理和播放RTSP视频流。通过......
  • 在Vue3中如何使用H.265流媒体播放器EasyPlayer.js网页直播/点播播放器?
    随着技术的发展,越来越多的H5流媒体播放器开始支持H.265编码格式。例如,EasyPlayer.js播放器能够支持H.264、H.265等多种音视频编码格式,这使得播放器能够适应不同的视频内容和网络环境。在Vue3中如何使用EasyPlayer.js播放器?具体流程如下:1)首先通过npm引入easyplayer.js;npminst......
  • 视频流媒体播放器EasyPlayer.js无插件H5播放器,如何测试demo视频?
    EasyPlayer.js播放器作为一款功能全面的H5流媒体播放器,凭借其多种协议支持、多种解码方式、丰富的渲染元素和强大的应用功能,以及出色的跨平台兼容性,为用户提供了高度定制化的选项和优化的播放体验。无论是视频直播还是点播,EasyPlayer.js视频流媒体播放器都能满足各种复杂场景下的......
  • 无插件直播流媒体音视频播放器EasyPlayer.js视频流媒体播放器container的用法
    随着流媒体技术的迅速发展,H5流媒体播放器已成为现代网络视频播放的重要工具。其中,EasyPlayer.js播放器作为一款功能强大的H5播放器,凭借其全面的协议支持、多种解码方式以及跨平台兼容性,赢得了广泛的关注和应用。那么播放器中container应该怎么使用呢?container类型:DOMorstri......