Диапазон байтов HTTP дает поврежденный аудиофайл? - PullRequest
0 голосов
/ 04 июля 2018

когда я открываю файл .m4a или .mp3 с помощью chrome (или в VLC «открыть новый поток») и перехожу к определенной отметке времени, он начинает потоковую передачу звука прямо в эту отметку времени, что означает, что он загружает фрагмент аудиофайла, начинающийся с этой позиции.

когда я проверяю сеть в Chrome Dev Tools после того, как щелкаю где-нибудь в аудиоплеере, и копирую запрос cURL, он содержит заголовок диапазона http, например:

-H "Range: bytes=26500000-30000000"

когда я запускаю эту команду cURL в терминале, выводится поврежденный аудиофайл. если я пытаюсь конвертировать его с помощью ffmpeg, он записывает:

[mov,mp4,m4a,3gp,3g2,mj2 @ 00000164d5a3ab40] moov atom not found

единственное исключение - когда я запрашиваю диапазон байтов, начинающийся с 0 (и заканчивающийся на 300000+), и в этом случае выходной файл может воспроизводиться.

Из того, что я понимаю, заголовки аудиофайла не загружаются, когда диапазон байтов находится где-то посередине или в конце файла.

я попытался указать два диапазона следующим образом

-H "Range: bytes=0-300000,2000000-4000000"

но выходной файл все же поврежден.

как chrome / vlc справляется с этой ситуацией и как мне ее воспроизвести? Как правильно загрузить аудиоблок из большого аудиофайла? я предполагаю, что мне придется делать последовательные http-запросы для создания правильного, не поврежденного файла, кажется, что это то, что делает Chrome.

UPDATE

«временное исправление», которое я нашел для проблемы, которая может оказаться полезной, заключается в использовании запуска VLC через команду со скрытым интерфейсом, загрузке аудиопотока (в данном случае URL-адреса аудиофайла) и транскодировании звука в локальный файл при назначении времени начала и окончания. Например, со случайным подкастом:

vlc -Idummy --play-and-exit --sout "#transcode{acodec=s16l,channels=2,samplerate=44100}:std{access=file,mux=wav,dst=C:\audio\output.wav}" --start-time=600 --stop-time=630  "http://traffic.libsyn.com/preview/worldofhardwarestartups/World_of_Hardware_Startups_Podcast_EP01_-_AIR_Ready.mp3"

однако, оригинальная проблема все еще не решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...