H.265编码视频播放器EasyPlayerPro-WIN版播放HLS协议视频流显示时间与实际不符如何修复?
经过多年的技术积累与实践打造,TSINGSEE青犀视频团队研发的EasyPlayer播放器项目系列无论是在对接设备型号种类,还是在对接编码的兼容性上,都具备较高的可用性,从集成进第三方平台到支持H265编码视频播放,我们一直在积极开发和拓展EasyPlayer更多的功能。
目前,EasyPlayer播放器项目发展出包括有: EasyPlayer-RTSP、EasyPlayer-RTMP、EasyPlayerPro 和EasyPlayer.js 等播放器。目前支持Windows、Android、iOS三个平台,EasyPlayer.js还支持Linux平台。
近期我们发现EasyPlayerPro-WIN版本在两个播放器同时播放的情况下,有一点问题。使用EasyPlayerPro-WIN播放视频,在当前的播放窗口不关闭的情况下,在地址栏重新输入另一个录像文件的地址,播放器显示的文件时长依然是之前那个文件的时长,文件时长没有更新。如下图:
上图中是播放下面截图中的两个流:
可以看到其实这两个流总时长是不一样的,但是播放器右下角获取的时长还是第一次的时长。
解决问题:
看代码发现,在Timer1定时器里面有获取总时长和获取当前播放时长的方式,代码如下:
if(mPlayer != IntPtr.Zero)
{
Int64 param = 0;
if (totalTime <= 0)
{
Int64 ltotal = 0;
EasyPlayerPro_Getparam(mPlayer, EASY_PARAM_ID.EASY_PARAM_MEDIA_DURATION, ref param);
ltotal = param;
if (ltotal > 1)
{
totalTime = (int)(Int64)ltotal / 1000;
skinTrackBar1.Maximum = (int)totalTime;
}
}
EasyPlayerPro_Getparam(mPlayer, EASY_PARAM_ID.EASY_PARAM_MEDIA_POSITION, ref param);
alreadyTime = (int)(Int64)param / 1000;
if (totalTime > 0)
{
if (totalTime - alreadyTime <= 1)
{
timer1.Enabled = false;
timer2.Enabled = false;
lblTime.Text = "时长:00分:00秒/00分:00秒";
skinTrackBar1.Value = 0;
EasyPlayerPro_Close(mPlayer);
mPlayer = IntPtr.Zero;
}
else
{
lblTime.Text = string.Format("时长:{0:00}分:{1:00}秒/{2:00}分:{3:00}秒", alreadyTime / 60, (alreadyTime) % 60, totalTime / 60, (totalTime) % 60);
}
}
else
{
lblTime.Text = string.Format("时长:{0:00}分:{1:00}秒/../..", alreadyTime / 60, (alreadyTime) % 60);
}
}
再给第二个流的时候,没有重新获取ltotal值,可以在停止视频播放的时候,把这个参数清零,即可解决问题。
//停止播放
private void button2_Click(object sender, EventArgs e)
{
EasyPlayerPro_Close(mPlayer);
//totalTime = 0;
bPlaying = false;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
2019-11-04 教学、会议、信息发布同屏直播采集,编码,组播,推流和流媒体RTSP服务于一身满足流媒体录播、直播同屏功能组件之EasyScreenlive库接口说明和调用
2019-11-04 集采集,编码,组播,推流和流媒体RTSP服务于一身大屏展示投屏互联网直播同屏组件EasyScreenlive播放器使用DXGI采集桌面方法介绍
2019-11-04 海康大华安防监控网络摄像头网页无插件直播流媒体RTSP专用播放器方案之EasyPlayer-RTSP-Android如何获取拉流的回调?
2019-11-04 集推流和流媒体RTSP服务于一身的同屏功能组件支持Windows,Android平台EasyScreenLive-Win同屏㢟开启屏幕采集失败解决方案
2019-11-04 开源推流组件EasyPusherRTSP推流组件支持H.264/G.711/G.726/AAC视频直播推流组件搭建EasyPusher_FILE推流至EasyDarwin完整过程
2019-11-04 Windows、Linux、ARM、Android、iOS全平台支持的RTMP推流组件EasyRTMP之如何搭建EasyRTMP-Android推流至EasyDSS测试环境
2019-11-04 Windows、Linux、ARM、Android、iOS全平台支持的RTMP推流组件EasyRTMP-iOS如何接入软编码?