Редактирование и преобразование аудио и видео файлов - dim13/lor GitHub Wiki

Как в 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 -nosound -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 (т.е. никакого переменного битрейта). Должно помочь .

Либо можно приклеить к 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. Домашняя страница проекта - 1.

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

На самом деле перекодирование из одного lossy-формата в другой проводить не стоит.

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

Кодировка 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. Полученные файлы именовать по маске "Номер дорожки - Название дорожки".

Данной командой можно резать как ape + cue, так и flac + cue-файлы.

Кроме ключей названия %n и %t так же можно использовать ключ %p, который задает исполнителя (от англ. performer).

Как создать gif-анимацию?

Получить gif-анимацию из видеоролика в Linux очень легко, для этого вам потребуется MPlayer и всего лишь одна команда в консоли:

$ mplayer myvideo -ao null -ss 0:00:00 -endpos 00 -nosub -vf scale=320:240 -vo gif89a:fps=24:output=mygif.gif

Здесь:

  • myvideo - видео из которого вы хотите создать анимацию
  • -ao null - не выводить звук
  • -ss 0:00:00 - стартовая позиция видеофрагмента в видеоролике, из которого будет получена анимация (формат - часы:минуты:секунды)
  • -endpos 00 - длина видеофрагмента в секундах
  • -nosub - без субтитров
  • -vf scale=320:240 - разрешение получаемой анимации в пикселях (формат ширина:высота)
  • -vo gif89a:fps=24:output=mygif.gif - количество кадров в секунду (fps=24) и название итоговой анимации (mygif.gif)

Если по каким-либо причинам вам не понравилось качество или размер анимации, существует иной, более сложный способ ее изготовления при помощи редактора GIMP:

Первым шагом экспортируем необходимый фрагмент видео в набор jpg картинок:

$ mplayer myvideo -ao null -ss 0:00:00 -endpos 00 -nosub -vf scale=320:240 -vo jpeg:outdir=picturesdirectory

Здесь:

  • -vo jpeg:outdir=picturesdirectory - картинки сохраняются в директорию picturesdirectory

Следующим шагом обрабатываем в GIMP полученные картинки:

  • "File / Open As Layers", "Файл / Открыть как слои" - открываем картинки как слои
  • "File / Export As", "Файл / Экспортировать как" - экспортируем и сохраняем картинки как анимированный gif

Необходимо заметить, что GIMP позволяет творчески обрабатывать получаемую анимацию, что является несомненным плюсом его использования, также при помощи GIMP можно оптимизировать полученную анимацию, сократив ее размер:

  • "Filters / Animation / Optimization", "Фильтры / Анимация / Оптимизация"

Как для первого, так и для второго способа получения gif-анимации удобным способом оптимизации полученных гифок будет использование программы gifsicle:

$ gifsicle --optimize -O3 --colors 128 mygif.gif > mygifoptimized.gif

Здесь:

  • --optimize -O3 - уровень оптимизации
  • --colors 128 - количество цветов (от 2 до 256)