Nin*_*pac 11 javascript audio google-chrome
谷歌只是改变如何Chrome会预先载入audio
和video
; 请参阅:https://googlechrome.github.io/samples/media/preload-metadata
我的理解是简单地设置preload
属性auto
应该解决问题,但是,我无法这样做:
let mp3 = 'https://s3-staging.read2me.online/audio/5a745d88483d86.76121223.mp3';
let audio = new Audio(mp3);
audio.preload = 'auto';
audio.play();
Run Code Online (Sandbox Code Playgroud)
<audio src="https://s3-staging.read2me.online/audio/5a745d88483d86.76121223.mp3" preload="auto" autoplay></audio>
Run Code Online (Sandbox Code Playgroud)
这两个都将在Chrome 64和Chrome 65-dev上停止播放一分钟(其他浏览器和较旧的Chromes不受影响).我在Mac,Windows和Android上复制了这个问题.
在我的调试过程中,我已将所有可能的媒体事件附加到JS对象(即audio.addEventListener('timeupdate', () => { console.log('timeupdate') })
),并且最初事件是这样触发的:
progress
timeupdate
progress
timeupdate
[...]
后来这样:
timeupdate
timeupdate
timeupdate
[...]
当音频播放停止时,我收到了一些error
事件,并且转储audio.error
返回: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)
我该如何解决?这是Chrome错误吗?
更新:
更新2:
chrome://media-internals/
揭示了这个:
更新3:
此问题已在Chrome 65中修复.
经过几天的试验和错误研究,我已经确认了什么不能并且确实有效.
mp3wrap output.mp3 *.mp3
输出文件仍然已损坏并停止
ffmpeg -i "concat:0.mp3|1.mp3" -acodec copy output.mp3
输出文件仍然已损坏并停止
简单地连接/破坏你的音频二进制文件(在PHP中我做implode('', $audioBinaries)
,然后运行mp3val -f concatenated-audio-file.mp3
.-f
参数是必不可少的,它意味着"尝试修复错误".
如何安装mp3val?
在MacOS上:brew install mp3val
在Deb/Ubu上:apt-get install mp3val
归档时间: |
|
查看次数: |
1737 次 |
最近记录: |