Формат файла MPEG-4 позволяет содержать в файле несколько потоков. Это полезно для видео, содержащих звук на нескольких языках. В случае такого видео аудиопотоки синхронизируются с видео.

Можно ли создать файл MPEG-4, содержащий рассинхронизированные аудиопотоки, т.е. одна звуковая дорожка проигрывается одна за другой?

Я хочу создать файл MPEG-4, содержащий музыкальный альбом, поэтому очень важно, чтобы треки воспроизводились один за другим медиаплеерами, такими как VLC. Когда я использую MP4Box (из структуры GPAC), результирующий файл распознается VLC как имеющий синхронизированные аудиопотоки. Какая коробка формата файла MPEG-4 за это отвечает? Или как я могу сказать VLC, что эти аудиопотоки не синхронизированы?

Заранее спасибо!

2
MyKey_ 26 Май 2009 в 22:52

2 ответа

Я могу придумать два способа сделать это, и оба будут несколько проблематичными.

Вы можете объединить все аудиопотоки в одну звуковую дорожку в файле MP4. Это не будет идеальным, по некоторым очевидным причинам. Во-первых, это не совсем то, о чем вы просили.

Вы также можете просто сохранить дорожки как синхронизированные аудиопотоки, но установить информацию о времени таким образом, чтобы первый образец второй дорожки не начинал воспроизводиться до тех пор, пока не завершится воспроизведение первой дорожки и т. д.

Я не знаю каких-либо инструментов, которые могут это сделать, но формат файла будет поддерживать такую ​​схему. Поскольку это необычный способ хранения звука в файле MP4, я ожидаю, что у игроков тоже возникнут проблемы с этим.

1
Ori Pessach 27 Май 2009 в 00:48
Спасибо за ответ! Первый способ сработает, но, как вы сказали, он не идеален. Я потерял бы возможность перейти к определенному треку и так далее. Но, возможно, главы могут работать (хотя я подозреваю, что VLC их не поддерживает). Второй способ не работает, по крайней мере, не для VLC. Это было бы более чистым решением, но VLC по-прежнему распознает их как аудиопотоки, которые нужно выбирать вручную. Возможно, мне придется запрограммировать плагин для VLC, чтобы заставить его воспроизводить мои файлы...
 – 
MyKey_
27 Май 2009 в 01:34

Конкатенация всех потоков будет работать, а отдельные треки можно будет решить, добавив главы. Это работает по крайней мере с VLC.

    MP4Box -new -cat track1.m4a -cat track2.m4a -chap chapters.txt album.m4a

chapters.txt будет выглядеть примерно так:

    CHAPTER1=00:00:00.00
    CHAPTER1NAME=Track 1
    CHAPTER2=00:03:40.00
    CHAPTER2NAME=Track 2

Но это только взлом. Решение, которое я ищу, должно сохранять треки как отдельные потоки.

0
MyKey_ 29 Май 2009 в 00:51