Редактирование и преобразование аудио и видео файлов

Contents


Как в Linux работать с видео? Какие есть программы для работы с видео?

Обычно для работы нужны:

Программа для примитивного монтирования - avidemux. Программы посложнее - PiTiVi, Kino, Kdenlive, Jahshaka и LiVES. Для профессиональной обработки видео или для выполнения задач аниматоров и дизайнеров подойдет Cinelerra.

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

Если очень нравится mencoder, но хочется получить графический интерфейс - вам поможет эта страница, на ней перечислены все возможные фронтенды как к MPlayer, так и к Mencoder.

Какой есть софт для работы со звуком? Для создания музыки?

/* FIXME: Написать подробно что и как */

Проще всего использовать Planetccrma, это репозиторий для Fedora, позволяющий превратить дистрибутив в рабочую станцию с low-latency ядром и множеством для работы со звуком. На сайте есть описание программ.

/* FIXME: Не забыть и про UbuntuStudio и 64 Studio */

/* FIXME: Audacity; LMMS */

Чем разрезать avi-файл?

Проще и лучше всего программой avisplit из комплекта transcode. Еще можно колдовать, используя mencoder с ключами -ss (-sb) и -frames, но это сложновато.

Чем склеить avi-файл?

Проще всего с помощью программы avimerge из того же комплекта transcode. Например:

avimerge -i input1.avi input2.avi -o new_input12.avi

Можно с помощью mencoder. Например:

cat input1.avi input2.avi | mencoder - -forceidx -oac copy -ovc copy -o new_input12.avi

Минус в строчке не лишний - он означает, что видео берется из потока. Файлы должны иметь одинаковые параметры - т.е. видео должно быть зажато одним и тем же кодеком, аудио - то же самое, плюс параметры сжатия должны быть одинаковы (т.е. разрешение видео, битрейт). Опция -forceidx нужна, чтобы после склейки не "съехали" индексы и фильм можно было нормально перематывать.

Как сделать видеоролик из набора фотографий?

Для объединения нескольких изображений в видеоролик с наложением звуковой дорожки можно использовать ffmpeg:

ffmpeg -i sound.mp3 -f image2 -i img/image%d.jpg video.avi

Тоже самое средствами mencoder:

mencoder mf://*jpg -mf w=640:h=480:fps=10:type=jpg -ovc lavc -lavcopts \
      vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi

Плюс добавляем звуковую дорожку:

mencoder -oac copy -ovc copy -audiofile sound.mp3 output.avi -o video.avi

Преобразуем в mpeg4:

mencoder Alex.avi -oac mp3lame -lameopts abr:br=32 -ovc lavc \
      -lavcopts vcodec=mpeg4:mbd=2:trell:vbitrate=160  -vf scale=320:240  -o films.avi

Как исправить индексы в видеофайле? Почему у меня перемотка в некоторых видеофайлах не работает?

Довольно просто - индексы нужно перестроить. Воспользуемся mencoder. Например:

mencoder input.avi -forceidx -oac copy -ovc copy -o output.avi

Также можно использовать утилиту avifix из из комплекта transcode. Например:

avifix -i input.avi

Как приклеить звук к avi-файлу? Как приклеить вторую звуковую дорожку?

Проще всего с помощью программы avimerge из комплекта transcode. Например:

avimerge -i input.avi -p input.wav -o output.avi

Соответственно, клеится звук на первую свободную дорожку. Для avi-файлов, это дорожки с номерами от 0 до 31. Если дорожка 0 уже занята, то звук приклеится к дорожке 1 и получится avi с несколькими дорожками.

Как убрать нулевую звуковую дорожку из avi-файла?

На самом деле как убрать определенную дорожку я не знаю. Но если в файле одна дорожка или несколько, их все можно убрать с помощью mencoder так:

mencoder input.avi -ovc copy -oac null -o output.avi

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

Как выделить звуковую дорожку из avi-файла?

Тут есть два варианта:

1. В помощью MPlayer. Так мы сможем получить чистый звуковой файл так, как он закодирован. Например:

mplayer input.avi -vo null -dumpaudio -dumpfile mysound.mp3

Соответственно, запишется файл mysound.mp3. Правда звук запишется в том формате, в котором был - т.е. если PCM, то в PCM, если в AC3, то в AC3 и т.п.

2. С помощью mencoder:

mencoder input.avi -of rawaudio -oac mp3lame -ovc lavc -o output.mp3

Звук получается действительно в mp3, его даже играет мой (очень привиредливый) плеер, правда, длину трека показывать отказывается.

3. Тоже при помощи mencoder. Этим способом мы получим звук в контейнере avi (просто не будет видео):

mencoder input.avi -ovc null -oac copy -o sound.avi

Такой звук отлично подходит для работы с видеофайлами (типа подклейки и т.п.). К тому же часто звук ac3 играется без проблем именно из avi-контейнера.

Пережал звук из wav в mp3 и подклеил к avi-файлу, теперь видео не синхронизировано с аудио. Что делать?

Вообще это нехорошая практика жать звук отдельно. Тем не менее, если жмешь звук с помощью lame, нужно воспользоваться ключиком --cbr. Должно помочь (т.е. никакого joint stereo, vbr и т.п.).

Либо можно приклеить к avi этот wav-файл, после чего жать его средствами mencoder. Например:

avimerge -i input.avi -p input.wav -o input-wav.avi
mencoder input-wav.avi -ovc copy -oac mp3lame -lameopts vbr=3:br=192:q=0:aq=0 -o output-mp3.avi

Avimerge не подклеивает wav и/или mp3 к avi

В некоторых дистрибутивах avimerge так собран. Его придется пересобрать (например, в случае с дистрибутивом Fedora avimerge из репозитория livna.org не воспринимает mp3).

А можно пойти другим путем, используя mencoder:

mencoder input.avi -audiofile audio.avi -oac copy -ovc copy -o output.avi

Как перегнать mp3 в ogg (в том числе из консоли)?

Вы можете воспользоваться программой ecasound.

Для преобразования из консоли воспользуйтесь скриптом mp32ogg. Это не домашняя страница проекта, а сам скрипт, исправленный svyatorog для перекодировки тэгов сразу в unicode. Домашняя страница проекта - http://faceprint.com/code/.

Есть второй вариант - поместить mp3 в контейнер ogg, единственное, что не все плееры понимают такой ogg. Утилита для такой операции называется ogmmerge, входит в состав OGMtools.

Как создать тег mp3-файла в кодировке UTF-8 (например, для MusicPD)?

Кодировка UTF-8 поддерживается только id3 тэгами версии 2.4 (id3v2.4). Есть CLI утилита eyeD3, написанная на python, которая умеет создавать/редактировать id3 теги версии 2.4.

Как массово преобразовать все теги моей коллекции в UTF-8?

Для массовой перекодировки можно воспользоваться утилитой mid3iconv из пакета mutagen. В Debian соответствующий пакет называется python-mutagen. Предполагается, что первоначально теги были в кодировке CP1251

find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1

Замечание: если тэги уже в ID3v2.4 и UTF-8, ничего страшного не произойдет, так что эту команду можно использовать на смешанной коллекции.

Если нужен GUI, используйте ExFalso или QuodLibet.

Чем изменить частоту в wav-файле (и не только)?

С помощью утилиты sox. Достаточно добавить нужную частоту в список параметров выходного файла. Например:

sox input.wav -r 44100 output.wav

При конвертации в ogg утилитой oggenc можно использовать ключ --resample.

Чем объединить несколько mp3 или ogg в один?

Как преобразовать .ape + .cue во .flac с потрековым разбиением?

По причине отсутствия поддержки .ape + .cue во многих плейерах для Linux, иногда возникает необходимость перекодирования .ape в хорошо поддерживаемый .flac с потрековым разбиением. Для достижения цели нам понадобятся следующие инструменты: shntool, mac и flac. Прежде чем качать исходники и собирать поищите их в репозитории своего дистрибутива.

Сама по себе команда перекодирования умещается в одну строчку:

$ shntool split your_ape_file.ape -f cue_list_for_your_ape_file.cue -o flac -t "%n - %t"

Приведённая выше команда означает следующее: разрезать your_ape_file.ape, извлекая данные о длительности треков и их названиях из файла cue_list_for_your_ape_file.cue, закодировав выходные данные в формате flac. Полученные файлы именовать по маске "Номер дорожки - Название дорожки".