天天看点

html5audio音频自动缓冲,HTML5网络音频卡住了(缓冲问题?)(HTML5 web audio getting stuck (buffering issue?))...

HTML5网络音频卡住了(缓冲问题?)(HTML5 web audio getting stuck (buffering issue?))

我正在制作一个(每周广播节目)音频网站,我一直遇到同样的问题,长达1小时的音频文件一直卡住。

我测试了几个不同的播放器,包括Flash播放器Wimpy Player和HTML5播放器,如Audio5js,jPlayer和pickle播放器。

我已经测试了以不同的比特率8,24,64,128对声音进行采样,但声音文件一直卡住。 并非总是如此,但往往足以成为一个严重的问题。 该文件开始播放但有一点(所有从几秒到几乎在1小时节目结束时)它只是停止并且继续播放的唯一方法是重新加载文件。 对我来说,这似乎是一个缓冲问题。

我不明白为什么。 如果有人遇到过类似的问题,请告诉我我错过了什么。

I am working on a (weekly radio show) audio website and I keep getting the same problem, the audio files that are up to 1hr long keep getting stuck.

I have tested several different players, both the flash player Wimpy Player, and HTML5 players such as Audio5js, jPlayer, and pickle player.

AND I have tested to sample the sound in different bit rates, 8,24,64,128 but the sound files keeps getting stuck. Not always, but often enough to be a serious problem. The file starts playing but a bit in (all from a few seconds to almost at the end of the 1 hr show) it just stops and the only way to keep playing it is to reload the file. To me it seems like a buffering problem.

I don't understand why. If anyone has ever had a similar problem, please tell me what I am missing.

原文:https://stackoverflow.com/questions/16432425

更新时间:2019-12-17 05:33

最满意答案

我自己得到了答案。 经过双重,三重,四重检查后,我发现该网站由GoDaddy托管,我知道它并不是您能期望的最佳品质。 (实际上它们在很多方面都很糟糕。如果你能避免它,就不要跟GoDaddy一起去。只是我的个人观点。)我们改变了托管,问题就消失了。 糟糕的是,我花了几天的时间无所事事。

I got the answer myself to this one. After double-, triple-, quadruple-checking everything it hit me, the site was hosted by GoDaddy and I know that it is not the best quality you can expect from them. (Actually they are really bad in more than one way. Never go with GoDaddy if you can avoid it. Just my personal opinion.) We changed the hosting and the problem was gone. To bad it had cost me days of work for nothing.

相关问答

您需要注册要由MPMoviePlayerLoadStateDidChangeNotification通知的对象,然后访问电影播放器的loadState。 请参阅MPMoviePlayerController参考的通知部分。 You need to register an object to be notified by the MPMoviePlayerLoadStateDidChangeNotification and then access the loadState of the movie

...

这是一个应该帮助的要点: https : //gist.github.com/kevincennis/9754325 。 我没有真正测试过这个,所以可能会有一个愚蠢的错字或某事,但基本的方法将工作(我以前做过)。 实质上,您将直接使用Recorder.js中的网络工作人员,以便您可以一次性处理一个大型AudioBuffer,而不是实时增量记录。 我也会在这里粘贴代码,以防万一出现问题。 // assuming a var named `buffer` exists and is an AudioB

...

我自己得到了答案。 经过双重,三重,四重检查后,我发现该网站由GoDaddy托管,我知道它并不是您能期望的最佳品质。 (实际上它们在很多方面都很糟糕。如果你能避免它,就不要跟GoDaddy一起去。只是我的个人观点。)我们改变了托管,问题就消失了。 糟糕的是,我花了几天的时间无所事事。 I got the answer myself to this one. After double-, triple-, quadruple-checking everything it hit me, the si

...

I Solved the Issue by using Audio Object in JavaScript instead of using audio tag in html.

eg: var aud = new Audio();

aur.src = audioUrl;

aud.load();

I Solved the Issue by using Audio Object in JavaScript instead of using audio tag in html.

e

...

不,没有办法在脚本处理器中使用其他缓冲区。 今天,您最好的方法是使用脚本处理器并将样本直接写入其中。 请注意,AudioBuffers的工作方式,在以前的方法中无法保证不会复制和创建新缓冲区 - 您无法同时从音频线程和主线程访问缓冲区。 将来,使用音频工作器会好一些 - 它会避免一些跳线 - 但如果你(例如)从网络源向下传输缓冲区,你将无法避免复制。 (实际上并不是那么昂贵。)如果你正在生成音频缓冲区,你应该在onaudioprocess中生成它。 No, there's no way to us

...

使用gst-launch playbin2 uri="some URL" buffer-size=size检查gst-inspect playbin2获取更多playbin2元素的属性。 Use gst-launch playbin2 uri="some URL" buffer-size=size check gst-inspect playbin2 for more properties of the playbin2 element.

我有同样的问题,但终于得到了解决方案! 问题是javascript节点cicle。 我建议你先改变createJavaScriptNode(): var levelChecker = context.createScriptProcessor(4096, 1 ,1);

垃圾收集器有“levelChecker”变量和他的onaudioprocess的问题,所以你必须将脚本处理器或onaudioProcess回调绑定到窗口。 这里的HOLY SOLUTION: levelChecker.onaud

...

不要试图继续编辑相同的缓冲区 - 你将无法修改播放缓冲区(它有时在Chrome中运行,但这是一个错误)。 您应该将第一组块缓冲到一个缓冲区中,就像现在一样,以获得一些延迟空间,然后当有额外的块进入时,您应该将它们安排为单独的AudioBuffer / BufferSourceNode组合。 (即跟踪您开始播放第一个节目的时间和运行计数,并安排每个连续节点在最后一个节点结束时播放。) Don't try to keep editing the same buffer - you will not b

...

此代码(jQuery)适用于iPhone Safari iOS7中的连续播放。 即使我的屏幕已锁定/其他标签,它也会在第一个结束时更改跟踪(考虑到加载新轨道的一点耐心)

$('#audio1').on('ended',function(){

$(this).attr('src','song2.mp3');

$(th

...

同源策略指出,在某个源上运行的脚本无法读取其他来源的资源。 (起源是一个域,加上一个方案和端口,如http://foo.example.com:80 。 请注意,同源策略不会阻止将交叉源媒体显示给用户。 相反,它可以防止脚本以编程方式读取跨源资源。 考虑标记: example.com上的页面可以显示来自other.com的跨源图像,但example.com页面上的脚本无法读取该图像的内容。 用户可以看到它; 该页面不能。 Web Audio API可以读取音频文件的内容。 如果音频文件来

...