EasyDarwin / EasyPlayer.js

EasyPlayer.js H5播放器,是一款免费的能够同时支持HTTP、RTMP、HTTP-FLV、HLS(m3u8)直播与点播等多种协议,支持H.264、H.265、AAC等多种音视频编码格式,支持mse、asm、wasm等多种解码方式,支持Windows、Linux、Android、iOS全平台终端的H5播放器。EasyPlayer.js H5 Player support HTTP/RTMP/HTTP-FLV/HLS(m3u8) live streaming & vod streaming,support H.264/H.265/AAC video & audio codec,support mse/asm/wasm decode mode,support Windows/Linux/Android/iOS platform,EasyPlayer.js uses leading-edge technology.
http://www.tsingsee.com/
1.64k stars 306 forks source link

H265能正常播放,H264反倒播放不了了。 #159

Open ygxw opened 2 years ago

ygxw commented 2 years ago

播放直播流,ws-flv的地址,用的“HTML 集成示例”。 现在发现h265能正常播放,但是h264的反倒播放不了。好尴尬。

能解析出流的格式信息,然后控制台打印出下面消息后,就一直loading,反正不出画面。 [MSEController] > MediaSource onSourceOpen EasyPlayer-element.min.js:1 [FLVDemuxer] > Parsed onMetaData EasyPlayer-element.min.js:1 [FLVDemuxer] > Parsed AVCDecoderConfigurationRecord EasyPlayer-element.min.js:1 [MSEController] > Received Initialization Segment, mimeType: video/mp4;codecs=avc1.640028

lishaoxin123 commented 2 years ago

台打印出下面消息后,就一直loading,反正不出画面。 [MSEController] > MediaSource onSourceOpen EasyPlayer-element.min.js:1 [FLVDemuxer] > Parsed onMetaData EasyPlayer-element.min.js:1 [FLVDemuxer] > Parsed AVCDecoderConfigurationRecord EasyPlayer-element.min.js:1 [MSEController] > Received Initialization Segment, mi

你用的那个版本?可以播放我这边从git下载最新的竟然不能播放,看报错事没有加载wasm,从老包拉下来又可以加载进来中间有些函数少了。。。

ygxw commented 2 years ago

这个工具库官方支持度不是很高,我已经换了解决方案了。wasm没加载,多半是你的网站mime类型配置错误。

ygxw commented 2 years ago

这个工具库官方支持度不是很高,我已经换了解决方案了。wasm没加载,多半是你的网站mime类型配置错误。

lishaoxin123 commented 2 years ago

请问你用了那个解决方案?这个工具库的wasm加载确实有问题,而且在h265哪里判断好像并没有去跑wams而是当作264去处理

ygxw commented 2 years ago

请问你用了那个解决方案?这个工具库的wasm加载确实有问题,而且在h265哪里判断好像并没有去跑wams而是当作264去处理

【jessibuca】

lishaoxin123 commented 2 years ago

你这个跑着性能怎么样?我直接修改了源码已经可以播放了。

lishaoxin123 commented 2 years ago

我今天在泡在微信上的时候也发现这个问题了,ios没有安卓会有这个问题等了很久,有时候又很快仅限安卓

ygxw commented 2 years ago

我今天在泡在微信上的时候也发现这个问题了,ios没有安卓会有这个问题等了很久,有时候又很快仅限安卓

不纠结,我直接换jessibuca了。但是这种wasm的软解码都差不多,反正性能很差。除非客户端设备硬件性能比较好,直接硬解。

h264除外,264在代码里直接做个判断,直接用原生解决方案。当然你也可以直接用jessibuca来解码264,它应该也是直接用原生支持的方式来播放,所以性能都很好。

lishaoxin123 commented 2 years ago

直接用原生解决方案

我现在用的就是这个插件,他用的mse喂数据但是跑4k码率在安卓就很卡,ios很流畅。web上也是。好坑啊

ygxw commented 2 years ago

直接用原生解决方案

我现在用的就是这个插件,他用的mse喂数据但是跑4k码率在安卓就很卡,ios很流畅。web上也是。好坑啊

这个就看自己的使用场景了,我这边场景简单还好。。你这个安卓跑4K,你是安卓盒子哦,哈哈。。你要求高的话肯定只有自己开发了,这些开源的你可以作为参照。

lishaoxin123 commented 2 years ago

直接用原生解决方案

我现在用的就是这个插件,他用的mse喂数据但是跑4k码率在安卓就很卡,ios很流畅。web上也是。好坑啊

这个就看自己的使用场景了,我这边场景简单还好。。你这个安卓跑4K,你是安卓盒子哦,哈哈。。你要求高的话肯定只有自己开发了,这些开源的你可以作为参照。

时间不允许,要不然肯定自己搞,这个h264搞不懂咋就那么卡,不知道是不是mse喂数据加载速度跟不上渲染的问题

thelostword commented 2 years ago

同样是h265能放,h264放不了。。。

lishaoxin123 commented 2 years ago

同样是h265能放,h264放不了。。。

264可以播,但是有个ts加载跟不上播放的那个bug,难受死了。

thelostword commented 2 years ago

同样是h265能放,h264放不了。。。

264可以播,但是有个ts加载跟不上播放的那个bug,难受死了。

换成easywasmplayer就可以了,jessibuca试了下好像不支持hls

lishaoxin123 commented 2 years ago

同样是h265能放,h264放不了。。。

264可以播,但是有个ts加载跟不上播放的那个bug,难受死了。

换成easywasmplayer就可以了,jessibuca试了下好像不支持hls

我现在用的就是这个,你没遇到ts跟不上播放,导致卡顿问题?

thelostword commented 2 years ago

同样是h265能放,h264放不了。。。

264可以播,但是有个ts加载跟不上播放的那个bug,难受死了。

换成easywasmplayer就可以了,jessibuca试了下好像不支持hls

我现在用的就是这个,你没遇到ts跟不上播放,导致卡顿问题?

我这边是flv。。。没有你那个问题。ts跟不上播放应该是跳帧导致的

lishaoxin123 commented 2 years ago

同样是h265能放,h264放不了。。。

264可以播,但是有个ts加载跟不上播放的那个bug,难受死了。

换成easywasmplayer就可以了,jessibuca试了下好像不支持hls

我现在用的就是这个,你没遇到ts跟不上播放,导致卡顿问题?

我这边是flv。。。没有你那个问题。ts跟不上播放应该是跳帧导致的

不是调帧,应该是代码里面有一个流程bug出问题,不过看最新的easyPlayer内部使用了video.js 估计是解决不了这个问题。以及播放器没有做帧缓存

thelostword commented 2 years ago

同样是h265能放,h264放不了。。。

264可以播,但是有个ts加载跟不上播放的那个bug,难受死了。

换成easywasmplayer就可以了,jessibuca试了下好像不支持hls

我现在用的就是这个,你没遇到ts跟不上播放,导致卡顿问题?

我这边是flv。。。没有你那个问题。ts跟不上播放应该是跳帧导致的

不是调帧,应该是代码里面有一个流程bug出问题,不过看最新的easyPlayer内部使用了video.js 估计是解决不了这个问题。以及播放器没有做帧缓存

刚播放点播hls流,也遇到这个问题。 不过我这边不是ts加载跟不上播放。 ts加载时机我设置了提前10秒加载,上一个ts时长30秒,在播放开始后第30秒卡住,然而下一个早ts已经加载完成了。进度条还在动,但是画画已经静止在第30秒了。。。

lishaoxin123 commented 2 years ago

同样是h265能放,h264放不了。。。

264可以播,但是有个ts加载跟不上播放的那个bug,难受死了。

换成easywasmplayer就可以了,jessibuca试了下好像不支持hls

我现在用的就是这个,你没遇到ts跟不上播放,导致卡顿问题?

我这边是flv。。。没有你那个问题。ts跟不上播放应该是跳帧导致的

不是调帧,应该是代码里面有一个流程bug出问题,不过看最新的easyPlayer内部使用了video.js 估计是解决不了这个问题。以及播放器没有做帧缓存

刚播放点播hls流,也遇到这个问题。 不过我这边不是ts加载跟不上播放。 ts加载时机我设置了提前10秒加载,上一个ts时长30秒,在播放开始后第30秒卡住,然而下一个早ts已经加载完成了。进度条还在动,但是画画已经静止在第30秒了。。。

挺多bug的,我已经放弃使用了,他这个加载有很多地方要修改,他是拿最后的流时间比当前播放的时间小于才会去加载,反正挺坑的编译的代码真的改不动了

worldflyingct commented 2 years ago

同样是h265能放,h264放不了。。。

264可以播,但是有个ts加载跟不上播放的那个bug,难受死了。

换成easywasmplayer就可以了,jessibuca试了下好像不支持hls

easywasmplayer是不是已经被删掉了,找不到链接了啊。

worldflyingct commented 2 years ago

jessibuca

jessibuca很强大,但是他是gpl3.0的,基本无法做到用于开发闭源程序。

lishaoxin123 commented 2 years ago

同样是h265能放,h264放不了。。。

264可以播,但是有个ts加载跟不上播放的那个bug,难受死了。

换成easywasmplayer就可以了,jessibuca试了下好像不支持hls

easywasmplayer是不是已经被删掉了,找不到链接了啊。

看commit历史版本,或者npm上搜索就有,但那个有很多bug要你自己修复

zhoubhin commented 2 years ago

如果是单纯播放视频,而不是直播推流之类的话,直接升级Chrome到最新版本就行