У меня есть пара файлов ogg vorbis, все они закодированы с точно такими же свойствами, которые я хочу объединить в один файл.
Я знаю, что формат ogg vorbis поддерживает простую конкатенацию нескольких файлов, таких как:
$ cat file1.ogg file2.ogg > output.ogg
Но, к сожалению, не все плееры могут понять файлы, созданные таким образом, например, мой мобильный аудиоплеер, и я бы не стал покупать новый. Другие программы, которые этого не понимают, являются gstreamer. Этот метод также не работает, если все входные ogg-файлы имеют одинаковый идентификатор потока.
Кроме того, поскольку я хотел бы выбросить исходные файлы и сохранить только сцепленную версию, я бы хотел, чтобы объединение выполнялось без потерь, как catрешение.
Я также хочу избежать объединения файлов в формат без потерь, например, flac, так как это излишне увеличит размер файла. Если бы это было хорошо, тогда я мог бы сохранить оригинальные файлы ogg и занимать меньше места.
Если я посмотрю на raw hexdump моих входных файлов, то смогу найти пакеты vorbis, точно представленные в выходном файле. Так что я думаю, что действительно никакого перекодирования не происходит.
Но это не похоже на работу со всеми входными файлами. Иногда (не уверен, что это вызывает), 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.
И тогда я услышу очень слабый «разрыв» между двумя файлами. Таким образом, это, безусловно, не глобальное решение.
Есть ли способ объединить несколько файлов ogg vorbis, но без перекодирования их и только с одним потоком на выход? Какой инструмент способен выполнить эту работу?
Вы смотрели на oggCat? http://en.flossmanuals.net/ogg-theora/command-line-editing/cat-files/
Josh Rumbut 9 лет назад
0
@JoshRumbut да, и он страдает от наличия слышимых пробелов, где файлы объединяются для некоторого ввода
josch 9 лет назад
0
Вы можете попробовать использовать [PiTiVi] (http://en.flossmanuals.net/ogg-theora/ch040_pitivi/) и размещать клипы последовательно на временной шкале.
harrymc 8 лет назад
0
ОП (и мне тоже) нужно программное решение, которое не предполагает взаимодействия с пользователем после сбора необходимых файлов.
Villermen 8 лет назад
1
если вы можете избежать проблем с авторским правом, могут быть полезны примеры файлов, в которых возникает проблема
the8472 8 лет назад
0
Вы пробовали [Ogg Video Tools] (http://dev.streamnik.de/files.html), как упомянуто в [этом Ответе] (http://superuser.com/a/370546/314828)?
Bobby 8 лет назад
0
Пробовали использовать `sox`?
Ralph Rönnquist 8 лет назад
0
@ RalphRönnquist Sox перекодирует ввод.
josch 8 лет назад
2
Я думаю, что вам, по крайней мере, придется перекодировать пробел, возможно, даже все впоследствии (поскольку ваш разрыв будет просто перенесен в конец перекодированной части файла).
allo 7 лет назад
0
2 ответа на вопрос
1
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 должен работать, но выдает эту ошибку на моем fbmpeg Homebrew (macOS) с 3.3.2.
[concat @ 0x7f91e8800400] Line 1: unknown keyword 'OggS' ogg1.ogg: Invalid data found when processing input
Возможно, вы захотите взглянуть на FFmpeg . У него есть много инструментов, которые я не совсем понимаю, но я помню из документации, что есть инструмент, чтобы сделать именно это. В противном случае, я думаю, что вы можете использовать VLC Media Player «s командной строки .
Можете ли вы немного расширить свой ответ? Просто указание на продукт и его документацию на самом деле не объясняет, как выполнить решение. Здесь лучше включить некоторые инструкции о том, как использовать продукт для решения проблемы. Хорошее руководство по рекомендации программного обеспечения здесь: http://meta.superuser.com/questions/5329/how-do-i-recommend-software-in-my-answers. Благодарю.
fixer1234 7 лет назад
1
Простое использование `ffmpeg -f concat -i input.txt -c copy out.ogg` не работает. Мне интересно, как вы думаете, это можно решить с помощью ffmpeg.
josch 7 лет назад
0