Пропустить навигацию.
Главная

Работа с media файлами(режем, клеим, конвертим)

Аватар пользователя helios

Очередной кросс-пост с http://useunix.ru/.

Увидел тему про конвертирование, вспомнил, что тоже решал подобную проблему.

Разбить фильм на два файла

Нам снова поможет mencoder. Допустим, у нас есть здоровенный файл movie.avi. Мы хотим разбить его на две части, файлы part1.avi и part2.avi. Время, на котором фильм разбиваем, пусть будет 1 час 13 минут 16 секунд. Получаем файл part2.avi:
mencoder -ovc copy -oac copy -ss 1:13:16 -o part2.avi movie.avi
Получаем файл part1.avi:
mencoder -ovc copy -oac copy -endpos 1:13:16 -o part1.avi movie.avi

Русские субтитры в Mplayer

Хотя Mplayer оснащен графической оболочкой, многие пользователи предпочитают вариант плейера без нее. А в этом случае использование субтитров не столь очевидно. Вот что нужно сделать, дабы "консольный" Mplayer показывал субтитры на русском языке:

1. В каталоге .mplayer (точка в начале означает, что каталог — скрытый) создайте символическую ссылку на какой-нибудь TTF-шрифт, например на Arial из Windows. Ссылка должна называться subfont.ttf.

2. В файле /.mplayer/config прописываем кодировку субтитров:

subcp=cp1251

cp1251 — поскольку именно в этой кодировке чаще всего встречаются субтитры на просторах России.

3. Хорошо, если в директории с фильмом лежит только один файл с субтитрами — тогда Mplayer загрузит его автоматически. А если файлов несколько, то нужно указать в командной строке, какой именно надо использовать. Для этой цели служит параметр -sub имя_файла. Например:
mplayer -sub Monty_Python.RU.srt Monty_Python.avi

Просмотр фильма с несколькими звуковыми потоками

Иногда попадаются диски, на которых MPEG4-фильм записан таким образом, что перевод идёт дополнительным аудиопотоком, и по умолчанию плейер его не видит. С помощью mplayer'а этот второй звуковой поток становится доступным, если запустить фильм командой:
mplayer -aid 2 имя_файла.avi
Здесь 2 — номер потока, обычно перевод идет как второй.

Заменить в фильме звуковую дорожку

Чтобы заменить в фильме звуковую дорожку и вывести результат в файл out.avi, делаем так:
mencoder исходный_файл.avi -ovc copy -oac copy -audiofile файл_со_звуком.mp3 -o out.avi

Как втолковать файлу, что он — DivX

Допустим, вы конвертировали файл Mencoder'ом с MPEG4/DivX совместимый форматом сжатия, но другой плейер/кодек не хочет понимать, что ваш файл вполне MPEG4. В таком случае можно напрямую "вшить" в файл название совместимого кодека:
mencoder исходный файл.avi -ovc copy -oac copy -ffourcc DIVX -o файл результата.avi
Работает для FFMPEG, XVid — проверено.

VideoCD в MPEG4

mencoder vcd:// -ffourcc DIVX -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o out.avi

Результат будет записан в файл out.avi. Параметр -oac copy указывает на то, что мы копируем звуковой поток без изменений. В качестве выходного кодека (-ovc) у нас идет lavc, а поскольку он поддерживает несколько форматов, то мы уточняем, какой именно нам нужен — mpeg4.

DVD в MPEG4 (DivX)

Задача. Перегнать фильм с DVD в DivX/MPEG4, чтобы получить файл такого размера, каков поместится на обычной CD-болванке. Как это сделать?

Нам потребуется утилита mencoder, входящая в состав плейера Mplayer. Перейдите в каталог, куда ходите записать фильм. Вставьте DVD в дисковод, однако не монтируйте его. Есть два метода рипания, вернее, двумя кодеками — FFMPEG и XVid. Первый и конвертирует быстрее, и дает больше возможностей. Здесь изложу способы работы с обоими кодеками. Обратите внимание на ключ -ffourcc DIVX — если его не указать, то другие плейеры/кодеки могут не понять, что видео кодировано в DivX-совместимом формате. То есть, например, вы кодировали фильм в XVid без ключа -ffourcc DIVX. Предположим, у конечного пользователя (который будет смотреть фильм) под Windows нет кодека XVid, а есть только DivX. И вот если вы конвертировали фильм без ключа -ffourcc DIVX, то наш предполагаемый "конечный пользователь" фильм этот посмотреть не сможет — его софт не определит нужный формат.

Вначале — о кодировании XVid'ом. Даем команду, которая рипает фильм с битрейром видео 900, звука 128, и выводит это в файл out.avi:

mencoder dvd:// -ffourcc DIVX -vf scale=512:384 -ovc xvid -xvidencopts bitrate=900 -oac mp3lame -lameopts cbr:br=128 -o out.avi

Если на DVD несколько звуковых дорожек, и вы хотите выбрать русскую, то это делается параметром -alang ru. Вот так:

mencoder dvd:// -ffourcc DIVX -alang ru -vf scale=512:384 -ovc xvid -xvidencopts bitrate=900 -oac mp3lame -lameopts cbr:br=128 -o out.avi

А теперь FFMPEG. Может быть у вас все будет нормально, и вы сможете воспроизвести полученные таким образом файлы и в других плейерах, с помощью других декодеров. У меня раньше так и было. Буду рад письмам об этом — сообщайте, какая у вас система, версия Mplayer, и в каком плейере/какими кодеками вы воспроизводили эти файлы.

mencoder dvd://номер -ffourcc DIVX -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vqmin=2:vqmax=25:vhq:v4mv:trell:autoaspect -vf scale=512:384 -lameopts cbr:br=128:aq=0 -o имя_файла.avi

Параметры таковы:

номер — это номер фрагмента (title), который будет читаться с DVD. Записи на DVD нумеруются. Если на диск записано больше одного фильма, то один может быть доступен под номером 1, второй 2 и т.д. Но часто бывает, что за этими номерами скрываются разные заставки. Поэтому прежде чем перегонять видео с DVD, посмотрите, что за фильм под таким-то номером, командой mplayer dvd://такой-то номер, например: mplayer dvd://1

Другой параметр для mencoder — имя_файла.avi. Это будет имя, под которым сохранится конвертированный файл. В параметре oac мы задаем звуковой кодек, в нашем примере это mp3lame. Для тех, кто не знает — в MPEG4/DivX звук хранится в формате MP3. А Lame — это кодек. Он может быть установлен у вас в системе, а может и не быть. Вот вам ссылка, где взять этот кодек. Чуть дальше мы задем настройки LAME: -lameopts cbr:br=128:aq=0. Это значит, что сжимаем звук с постоянным битрейтом 128 и хорошим качеством. Никогда не записывайте в фильме MP3 с переменным битрейром.

Далее, параметр -ovc lavc задает кодек для видео. В нашем случае этот кодек — lavc. Его качать не надо, он входит в состав Mplayer'а. Передаем в lavc параметры: vcodec=mpeg4:vbitrate=1000:vqmin=2:vqmax=25:vhq:v4mv:trell:autoaspect -vf scale=512:384.

Объяснение. Поскольку lavc поддерживает много алгоритмов сжатия, мы выбираем mpeg4. Значение vbitrate — это какой у видео будет битрейт. Для полуторачасового фильма, чтобы он потом влез на болванку, подходит обычно битрейт от 800 до 1000. Чем больше число, тем больше файл. И наоборот.

Параметр vhq включает режим качественного сжатия, НЕ в реальном времени. Когда фильм сжимается в DivX в реальном времени, то вычислительной мощности вашего компьютера может не хватить, чтобы с должной скоростью обрабатывать видео. В итоге видео получается с рывками, прочими прелестями. Что до режима vhq, то в нем утилита не спешит, прыгая через пень-колоду лишь бы поспеть, а сжимает видео как надо, медленнее, зато ничего не пропуская.

Наконец, еще один параметр — vf scale=512:384. Задаем масштаб картинки. 512:384, по моим наблюдениям, наилучший.

Теперь полный пример:

mencoder dvd://3 -ffourcc DIVX -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vqmin=2:vqmax=25:vhq:v4mv:trell:autoaspect -vf scale=512:384 -lameopts cbr:br=128:aq=0 -o my_movie.avi

Кодирование скинутого на винт DVD в MPEG4

Допустим, вы скопировали DVD целиком в каталог /mnt/films/movie. Теперь вы хотите конвертировать этот фильм в MPEG4 прямо с винта. Mplayer позволяет играть содержимое DVD из указанного каталога, например:

mplayer dvd://1 -dvd-device /mnt/films/movie

То есть в параметре -dvd-device мы указываем путь к каталогу, куда вы сбросили DVD (а копировать надо, начиная из корневого каталога, то есть вместе с каталогами AUDIO_TS и VIDEO_TS). Подобно Mplayer'у, из каталога может читать DVD-формат и Mencoder. Кодируем в MPEG4 фильм, скопированный с DVD в /mnt/films/movie:

mencoder dvd://1 -dvd-device /mnt/films/movie -oac mp3lame -ovc lavc -lavcopts 
vcodec=mpeg4:vbitrate=900:vqmin=2:vqmax=25:vhq:v4mv:trell:autoaspect -vf scale=512:384 
-lameopts cbr:br=128:aq=0 -ffourcc DIVX -o movie.avi

Audio CD в WAV

Будем использовать утилиту cdparanoia. Чтобы сбросить целый Audio CD на винт, в консоли даем команду:

cdparanoia -BZ

Если вы хотите сбросить конкретные дорожки, например от второй по восьмую, делаем так:

cdparanoia 2-8 -B -Z

Ежели диск очень запиленный и с царапинами, убираем из командной строки параметр -Z (который отключает функции чтения поврежденных CD)

WAV в MP3

Для примера нам понадобится MP3-кодировщик lame. В каталоге с вавками даем команду:

find . -iname "*.wav" -exec lame '{}' ';'

Тем самым вы кодируете в Mp3 все wav-файлы в этом каталоге. Битрейт по умолчанию = 128. А вот так кодируем с битрейтом 320 и наилучшим качеством: find . -iname "*.wav" -exec lame '-b 320 -q 0' '{}' ';'

Сжать один wav-файл в MP3:lame myfile.wav

Декодировать все MP3 в текущем каталоге в WAV: find . -iname "*.mp3" -exec lame '--decode' '{}' ';'

WAV в OggVorbis

Перегнать из WAV в OggVorbis еще проще, нежели в MP3. Даем команду: oggenc *.wav, или просто oggenc *, если в каталоге только один wav'ы.

Сжать wav'ы в Ogg при наивысшем битрейте: oggenc -q 10 *.wav

Сжать один wav в Ogg: oggenc myfile.wav

MP3 в WAV

В каталоге с эмпешками, которые хотите конвертировать, дайте команду:

find . -iname "*.mp3" -exec lame '--decode' '{}' ';'

Re: Работа с media файлами(режем, клеим, конвертим)

lame -q 0 -b 320 /dir/file_name.wav - а так не пробовал, helios?
Вообще, очень хорошо, если больше информации соберётся по мультимедиа-теме в одном месте, потому что решений в сети море, разбросаны по блогам и форумам, а вопросы остаются, имхо, из злободневных: конвертирование, ритмбокс и ID3v-теги (некорректное отбражение русских названий композиций, точнее, неотображение, вовсе, некоторых) и это, то, что действительно нужно "просто юзеру", чтоб киношку посмотреть и музыку послушать без головной боли=)

Re: Работа с media файлами(режем, клеим, конвертим)

спасибо!