Воспроизведение аудио останавливается / останавливается в Chrome 64
Google только что изменил, как Chrome перезагружается audio
и video
; см.: https://googlechrome.github.io/samples/media/preload-metadata
это мое понимание, что просто установка до auto
должен исправить проблему, однако, я не смог сделать Итак:
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>
оба они перестанут играть в течение минуты на Chrome 64 и Chrome 65-dev (другие браузеры и более старые Хромы не затронуты). Мне повторили эту проблему на Mac, Windows и Андроид.
во время моего процесса отладки я прикрепил все возможных мероприятий для СМИ к объекту 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)
как это исправить? Это хром жучок?
обновление:
- OGG играет отлично:https://jsfiddle.net/NinoSkopac/2hktqcqt/1/
- похоже, это ошибка Chrome:https://bugs.chromium.org/p/chromium/issues/detail?id=794782
- аналогичная ошибка на Github:https://github.com/video-dev/hls.js/issues/1529
обновление 2:
chrome://media-internals/
показывает это:
обновление 3:
эта проблема была исправлена в Chrome 65.
2 ответов
после нескольких дней проб и ошибок и исследований я подтвердил, что не работает и работает.
не работает
mp3wrap
mp3wrap output.mp3 *.mp3
выходной файл по-прежнему поврежден и останавливается
ffmpeg
ffmpeg -i "concat:0.mp3|1.mp3" -acodec copy output.mp3
выходной файл по-прежнему поврежден и останавливается
работает
mp3val с аргументом-f
просто объедините / взорвите свои звуковые двоичные файлы (в PHP я делаю implode('', $audioBinaries)
и затем запустите mp3val -f concatenated-audio-file.mp3
. The -f
аргумент имеет важное значение, и это означает "попытаться исправить ошибки".
Как установить mp3val?
На MacOS: brew install mp3val
На Deb / Ubu:apt-get install mp3val
та же проблема, с которой я сталкиваюсь с техникой конкатенации. С ffmpeg он работает нормально. Попробовать ffmpeg с этой командой.
ffmpeg -f concat -i "{textfile}" -c:v copy -ab 48k -y "{output}"
текстовый файл появится список файлов, написанных на линию.