Есть много неточных выводов, к которым вы пришли, поэтому позвольте мне начать с исправления тех, которые могут помочь вам решить проблему.
потому что ffmpeg & Co. занимает слишком много времени
FFmpeg может объединять эти аудиопотоки быстрее, чем вы точно можете передавать их клиентам. Если вы используете -codec copy
(которым вы должны быть в этом случае), он будет обрабатывать все демультиплексирование / мультиплексирование за вас. И имейте в виду, что вы можете смотреть прямо из FFmpeg. Нет необходимости в промежуточном файле.
Практический случай - добавить предварительные ролики в файлы подкастов.
Маршрут FFmpeg - это то, что вам нужно.
Мой коллега уже сказал заголовку, что два файла идут подряд, читая оба файла и отображая их через PHP. HTTP / 1.1 206 Частичное содержимое используется для доставки «объединенного» содержимого.
Это немного странный способ сделать это. Вместо этого вы можете просто объединить данные и отправить их напрямую в одном ответе.
Проблема заключается в том, что в обоих файлах по-прежнему есть два тега ID3, и большинство аудиоплееров читают только первый, что происходит при неправильном отображении длительности.
Нет, обычные теги ID3 не указывают продолжительность. (Существует расширение, которое используется, но оно используется редко.) В чистом потоке MP3 нет ничего, что также указывало бы на продолжительность. Клиенты оценивают это на основе размера файла и скорости передачи данных. Скорость передачи может изменяться в среднем потоке, поэтому они обычно оцениваются на основе скорости передачи первых двух кадров.
Несомненно, проблема в вашем случае заключается в неправильных заголовках длины из-за того, как вы обрабатываете это слияние, и / или в несоответствии битрейта, из-за которого оценка длины от игрока неверна.
Есть идеи, как создать «виртуальный тег ID3» в режиме реального времени и как удалить существующие, не касаясь исходных файлов?
Я бы абсолютно использовал FFmpeg для этой работы. Если что, потому что не все подкасты используют MP3. В подкастах MP4 много AAC, а также несколько Opus в WebM.