Какие инструменты командной строки мне нужны для объединения нескольких аудиофайлов и вывода их в виде одного ogg (и / или mp3)?
Если вы можете предоставить полную команду для объединения и вывода в ogg, это было бы здорово.
Изменить : Входные файлы (в моем случае, в настоящее время) в wma
формате, но в идеале он должен быть достаточно гибким, чтобы поддерживать широкий спектр популярных форматов.
Edit2 : просто чтобы уточнить, я не хочу объединять все wma
файлы в определенном каталоге, я просто хочу объединить 2 или 3 файла в один.
Спасибо за предложенные решения, но все они, кажется, требуют создания временных файлов, если это вообще возможно, я бы хотел этого избежать.
linux
command-line
audio
Hasen
источник
источник
mktemp -d /tmp/descriptive_name.XXXXXX
для создания временного каталога с информативным именем, затем обрабатывать все мои временные файлы там, а затем rm -r временный каталог.*.wma
в командной строке, безусловно, будет работать для меньшего списка, например1.wma 2.wma 3.wma 4.wma
(пропуская 5.wma, 6.wma и 7.wma), просто перечислив их так (вместо того, чтобы использовать*.wma
).Ответы:
Вот мое предложение: используйте mplayer и oggenc, связанные с именованным каналом.
Используйте
mplayer
для декодирования аудио. Он может воспроизводить широкий спектр аудио (и видео) форматов, а также может воспроизводить несколько файлов.Используйте
oggenc
для кодирования аудио в Ogg Vorbis.Чтобы устранить необходимость во временном файле, используйте именованный канал для передачи данных между кодером и декодером.
Поместить это в скрипт:
Разъяснение:
-really-quiet -slave -nolirc
Есть варианты отключить сообщения и запретить чтение с клавиатуры или пульта дистанционного управления.-vc null -vo null
Есть опции для отключения кодирования и вывода видео.-ao
Вариант направляет его для вывода звука в формате WAV для именованного канала записи.Вещи слева направо для улучшения: Завершение сценария досрочно, если одна из команд не выполнена (используйте
set -e
), но все равно правильно очищаете fifo (перехватывайте необходимые сигналы).источник
SoX может обрабатывать большое количество аудиоформатов, в зависимости от того, с какими библиотеками он скомпилирован, и может объединять файлы с помощью простой командной строки
Я считаю, что это работает, только если все исходные аудиофайлы имеют одинаковое количество каналов, но я не проверял это.
Насколько я знаю, SoX практически не поддерживает файлы .wma, поэтому преобразование, по крайней мере, этих файлов с помощью чего-то вроде ffmpeg в первую очередь, вероятно, неизбежно.
источник
Я бы использовал ffmpeg . Чтобы конвертировать wma в ogg vorbis, попробуйте:
или mp3:
для конвертирования mp3 вам понадобится lame.
sudo apt-get install lame libmp3lame0
Кошка, тогда преобразование, кажется, не работает хорошо, хотя вы можете найти много ссылок в Интернете, говорящих, что вы можете сделать что-то вроде
cat *.wma | ffmpeg -i - -acodec ...
- это не работает на моей машине - обрабатывается только первый файл. Для ffmpeg есть кодек «copy», но особой разницы нет.Сначала я выполнил конвертацию с помощью ffmpeg, а затем cat * .ogg> output.ogg.
источник
-acodec libvorbis
чтобы избежать встроенного кодировщика ffmpeg.Чтобы объединить и перекодировать аудиофайлы, вы должны следовать этому рабочему процессу:
Обработка на этих этапах выполняет конкатенацию данных WAV, что является самым простым в обращении и с наименьшими потерями. И поскольку вы все равно хотите транскодировать, вам придется декодировать в WAV где-то в процессе; может также воспользоваться этим.
Вот шаги, которые я рекомендую. Мы будем использовать
ffmpeg
для декодирования,sox
для конкатенации иoggenc
для кодирования. Вы можете заменить другие инструменты на любой шаг -mencoder
и другие прекрасно работают как декодер, и любой инструмент, который кодирует Ogg, может быть использован в качестве кодера - хотя я думаю, что вам будет сложно найти лучший инструмент, чемsox
для конкатенации.find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(это выполняется
ffmpeg -i infile.wma outfile.infile.wma
для каждого файла WMA в текущем каталоге)sox outfile* all.wav
(обратите внимание
outfile
, тот же префикс, который мы дали выходные файлы на шаге 1)oggenc all.wav all.ogg
Вы, вероятно, хотите здесь некоторые настройки качества, но это даст достойные значения по умолчанию. Я не получил результаты, которые мне понравилисьffmpeg
, но вы можете предпочесть их, поэтому я привел пример с ffmpeg ниже.Обратите внимание, что
sox
команда не будет работать должным образом, если все файлы WAV не имеют одинаковый формат - например, если некоторые из них имеют частоту 22 кГц, а некоторые 44,1 кГц, вам необходимо идентифицировать их сsox
помощью переключателей командной строки и указать, какой формат вы хотите использовать. вывод в. Я не знаю никаких инструментов командной строки, способных, какsox
для этапа конкатенации. Вы могли бы вывести в необработанный формат PCM на шаге 1 и использоватьcat
для шага 2, но это сработало бы, только если они в одном и том же формате, и вам нужно было бы быть крайне специфичным для вашего декодера и кодера относительно того, что формат они должны ожидать.Кодирование с помощью ffmpeg. Многие посты в сети жалуются, что встроенный кодировщик Vorbis в ffmpeg не очень хорош. Если ваша версия построена с поддержкой libvorbis, используйте
-acodec libvorbis
вместо этого. Пример командной строки:источник
Не работает для файлов .ogg, но mp3wrap может объединять несколько файлов .mp3 в один файл. Так что из командной строки вы можете сделать что-то вроде этого
Он будет использовать ffmpeg для преобразования всех ваших файлов .wma в .mp3, а затем объединит все файлы .mp3 в один файл.
источник
Mencoder может объединять и перекодировать видео без временных файлов ( тривиальный пример здесь ). Там где-то есть скрипт, называемый aconvert, который заставляет mencoder делать только аудио (что обычно он не делает). Похоже, что эти две вещи будут соответствовать вашим требованиям.
Изменить: я нашел aconvert.sh. К сожалению, он предназначен только для преобразования одного аудиофайла. Но вот код в любом случае, на случай, если кто-то захочет использовать его для создания командной строки, которая преобразует несколько аудиофайлов.
источник
Это не может быть именно то , что вам нужно, но это должно помочь http://bitzenbytes.com/index.php?name=PNphpBB2&file=viewtopic&t=6538&postdays=0&postorder=asc&sid=f87b364ddbae3ddd9417f5d10fae870c
источник
Думал, что я добавлю свой ответ. Возможно, это не самый элегантный способ, но он сделал то, что я хотел.
Шаг 1: новообращенный Ogg (использования
mplayer
,pacpl
иruby
, все доступный от свободных РЕПО Debian я.)Шаг 2: объединить файлы OGG
источник
cat file list… | ffmpeg -f mp3 -i – -acodec copy outfile.mp3
Хорошо сработал для меня с MP3: я думаю, это будет работать и с другими форматами. Кредиты идут в Lindylex .источник