音频播放在Chrome 64上暂停/停止 [英] Audio playback halts/stops on Chrome 64

查看:2423
本文介绍了音频播放在Chrome 64上暂停/停止的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Google刚刚改变了Chrome预装音频和视频的方式;请参阅:



更新3:



此问题已在Chrome 65中修复。



不起作用



mp3wrap



mp3wrap output.mp3 *。 mp3
输出文件仍然损坏并暂停

ffmpeg



ffmpeg -iconcat:0.mp3 | 1.mp3-acodec copy output.mp3
输出文件仍然损坏并暂停



做工



mp3val带-f参数



简单地连接/ implode你的音频二进制文件(在PHP中,我做了 implode('',$ audioBinaries),然后运行 mp3val -f concatenated-audio-file.mp3 -f 参数非常重要,它意味着尝试修复错误。

如何安装在MacOS上: brew install mp3val
在Deb / Ubu上:

code> apt-get install mp3val


Google just changed how Chrome preloads audio and video; see: https://googlechrome.github.io/samples/media/preload-metadata

It's my understanding that simply setting preload attribute to auto should fix the problem, however, I have been unable to do so:

let mp3 = 'https://s3-staging.read2me.online/audio/5a745d88483d86.76121223.mp3';
let audio = new Audio(mp3);
audio.preload = 'auto';

audio.play();

<audio src="https://s3-staging.read2me.online/audio/5a745d88483d86.76121223.mp3" preload="auto" autoplay></audio>

Both of these will stop playing within a minute on Chrome 64 and Chrome 65-dev (other browsers and older Chromes are unaffected). I have replicated this issue on Mac, Windows and Android.

During my debug process, I have attached all possible media events to the JS object (i.e. audio.addEventListener('timeupdate', () => { console.log('timeupdate') })) and at first the events were firing like this:

progress timeupdate progress timeupdate [...]

Later like this: timeupdate timeupdate timeupdate [...]

When the audio playback stopped, I got a handful of error events, and dumping audio.error returns: PIPELINE_ERROR_DECODE: Failed to send audio packet for decoding: timestamp=81763265 duration=26122 size=201 side_data_size=0 is_key_frame=1 encrypted=0 discard_padding (ms)=(0, 0)

How do I fix this? Is this a Chrome bug?

UPDATE:

UPDATE 2:

chrome://media-internals/ reveals this:

UPDATE 3:

This issue has been fixed in Chrome 65.

解决方案

After a couple of days of trial and error and research, I have confirmed what doesn't and does work.

Doesn't work

mp3wrap

mp3wrap output.mp3 *.mp3 the output file is still corrupted and halts

ffmpeg

ffmpeg -i "concat:0.mp3|1.mp3" -acodec copy output.mp3 the output file is still corrupted and halts

Does work

mp3val with -f argument

Simply concatenate/implode your audio binaries (in PHP I do implode('', $audioBinaries) and then run mp3val -f concatenated-audio-file.mp3. The -f argument is essential and it means "try to fix errors".

How to install mp3val?

On MacOS: brew install mp3val On Deb/Ubu: apt-get install mp3val

这篇关于音频播放在Chrome 64上暂停/停止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆