объединение файлов ogg vorbis без потерь

у меня есть несколько файлов ogg vorbis, закодированных с теми же свойствами, которые я хочу объединить в один файл.

Я знаю, что формат ogg vorbis поддерживает простое объединение нескольких файлов, таких как:

$ cat file1.ogg file2.ogg > output.ogg

но, к сожалению, не все игроки могут понять файлы, созданные таким образом, например, мой мобильный аудиоплеер, и я бы избежать, чтобы купить новый. Другие программы, которые этого не понимают-gstreamer. Этот метод также не работает, если входные файлы ogg имеют одинаковый идентификатор потока.

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

Я также хочу избежать объединения файлов в формат без потерь, такой как flac, поскольку это излишне увеличит размер файла. Если это было бы хорошо, то я мог бы сохранить оригинальные файлы ogg и использовать меньше пространство.

кажется, что ffmpeg иногда может сделать это с помощью concat demuxer:

$ cat inputs.txt
file 'in1.ogg'
file 'in2.ogg'
$ ffmpeg -f concat -i inputs.txt -c copy out.ogg

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

но это, кажется, не работает на всех входных файлах. Иногда (не уверен, что вызывает это), ffmpeg даст предупреждение:

Non-monotonous DTS in output stream 0:0; previous: 5011328, current: 5011200; changing to 5011329. This may result in incorrect timestamps in the output file.

и тогда я услышу очень слабый "зазор" между двумя файлами. Таким образом, это, безусловно, не является глобальным решением.

так как я не мог найти один я попытался написать свой собственный инструмент в этот stackoverflow вопрос.

есть ли способ объединить несколько файлов ogg vorbis, но без их перекодирования и только с одним потоком на выход? Какой инструмент способен выполнить эту работу?

25
задан Community
29.03.2023 1:59 Количество просмотров материала 2896
Распечатать страницу

2 ответа

ffmpeg -i "concat:ogg1.ogg|ogg2.ogg|ogg3.ogg" -c copy out.ogg создает объединенный ogg-файл в моей системе, только немного меньше, чем отдельные файлы вместе взятые (вероятно, из-за общих метаданных). Для меня это звучит одинаково, поэтому конкатенация должна быть без потерь. Однако, это не добавляет небольшой разрыв между файлами.

ffmpeg -f concat -safe 0 -i ogg1.ogg -i ogg2.ogg -c copy out.ogg должен работать, но он дает эту ошибку на моем Homebrew (macOS) ffmpeg с 3.3.2.

[concat @ 0x7f91e8800400] Line 1: unknown keyword 'OggS'
ogg1.ogg: Invalid data found when processing input

источник: https://trac.ffmpeg.org/wiki/Concatenate

1
отвечен 2023-03-30 09:47

вы можете взглянуть на FFmpeg. Он имеет много инструментов, которые я не совсем понимаю, но я помню из документация что есть инструмент, чтобы сделать именно это. В противном случае, я думаю, что вы можете использовать VLC Media Players Командная Строка.

0
отвечен NatoBoram 2023-03-30 12:04

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх