Главная » Статьи » Прочее |
Кодирование в mencoder
После появления
более-менее нормального компьютера и как следствие - кучи фильмов на
нем, появилось желание что-то перекодировать, что-то ужать ( например
впихнуть пару двухслойных двд в один
). Пока сидел под Windows, пользовался VirtualDub, кодировал в один
проход с фиксированным качеством. Вроде все удобно, можно на ходу
посмотреть что получается и т.п. Не нравилось одно - скорость
кодирования, к тому же файлы по размеру получались великоваты. Через
некоторое время друзья "подсадили" на mencoder и mplayer .
Кодировал все еще в один проход, однако скорость получалась раза в 3
выше чем в VirtualDub. Покопался в интернете, понял что народ кодирует
как минимум в два прохода. Подумал - а чем я хуже .
Подсмотрел какие параметры обычно ставят, подкрутил под свои нужды.
Перешел от указания фиксированного качества к фиксированному битрейту.
Стали получаться более компактные файлы с нормальным качеством (
конечно, если с битрейтом не ошибался
). Единственный минус - снова упала скорость кодирования (из-за
некоторых параметров кодировщика и использования двух проходов). Где скачать mplayer и mencoder ( под Windows идут в составе одного архива ): Сайт разработчиков: http://www.mplayerhq.hu/design7/dload.html С нашего сервера: http://support.mobigroup.ru/files/mplayer/ Репозиторий Debian: deb http://www.debian-multimedia.org etch main (!) Если работаете под Windows, не забудьте скачать там же набор кодеков. (!) Под Windows установка не требуется, можно просто распаковать программу в отдельную папку и оттуда запускать. При кодировании с фиксированным битрейтом cтарайтесь выбирать битрейт близкий к значению, которое получается при отсутствии ограничений на размер файла. Если ошибетесь в большую сторону, не пугайтесь - mencoder скорее всего не будет использовать весь битрейт, если фильм этого не требует. Некоторые из моих знакомых просто указывали битрейт 3000, а реальный получался меньше . Минус такого способа - непонятно какого размера получится файл. Если вы хотите "влезть" в определенный размер, используйте памятку: 1 час (видео 800 кбит/с + аудио 128 кбит/с) примерно равен 400 Мб Выбор битрейта видео: Вообще, если будете часто что-то кодировать, то постепенно научитесь интуитивно выбрать битрейт, а для начала можно попробовать следующие значения для видео: * Для обычных у двд размеров картинки 720x576 обычно достаточно 800-1500 кбит/с * Для боевиков с большим количеством динамичных сцен ~2000 кбит/с * Для аниме и мультфильмов обычно можно ставить битрейт процентов на 20 - 25 меньше, чем для фильма с теми же размерами картинки (потому что картинка чаще всего статичная, движения на экране мало) Выбор битрейта звука Битрейта 128 кбит/с хватает для большинства фильмов. Больший битрейт имеет смысл ставить для оперных фильмов. Если очень хочется сохранить звук (либо если он упорно расходится с видео - и такое иногда бывает если исходный файл разбит на несколько кусков) можно оставить звуковой поток без изменения - для этого вместо параметров "-oac mp3lame -lameopts cbr:br=$1" используйте "-oac copy" Время необходимое на кодирование: Пусть Т - длительность фильма. Тогда для фильма размерами 720x576 на машине с процессором P4 3.0 GHz: первый проход ~ 1.5 * T - 2.0 * T второй проход ~ 1.0 * Т - 1.5 * T итого ~ 2.5 * T - 3.5 * T Естественно, если картинка меньше размером, то кодируется быстрее. Двухпроходное кодирование в divx. Команды для двухпроходного кодирования видео в divx/mp3 Параметры: * $1 - битрейт звука * $2 - битрейт видео * $3 - название кодируемого файла * Во время первого прохода собирается информация о каждом кадре фильма, звук не трогаем. * Во время второго прохода эта информация используется для оптимизации кодирования кадров. Первый проход: /usr/bin/mencoder "./$3" -ffourcc divx -o "./$3-pass-1.avi" -passlogfile "./$3-divx2pass.log" -nosound -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vb_strategy=2:vhq=4:mbd=2:trell:cbp:mv0:preme=2:vbitrate=$2:v4mv:vqmin=2:vqmax=9:mpeg_quant:vlelim=-3:vcelim=5:lumi_mask=0.01:dark_mask=0.01:p_mask=0.01:autoaspect Второй проход: /usr/bin/mencoder "./$3" -ffourcc divx -o "./$3-pass-2.avi" -passlogfile "./$3-divx2pass.log" -oac mp3lame -lameopts cbr:br=$1 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vb_strategy=2:vhq=4:mbd=2:trell:cbp:mv0:preme=2:vbitrate=$2:v4mv:vqmin=2:vqmax=9:mpeg_quant:vlelim=-3:vcelim=5:lumi_mask=0.01:dark_mask=0.01:p_mask=0.01:autoaspect Краткое объяснение параметров: * Эти параметры определяют какие "фишки" будут использоваться при обработке файла vb_strategy=2:vhq=4:mbd=2:trell:cbp:mv0:preme=2:v4mv:mpeg_quant * Эти влияют на то, насколько сильно будут "вырезаться" затемненные и засвеченные участки картинки. Значения больше 0.5 указывать не стоит, только в каких-нибудь специфических условиях, иначе будет вырезаться слишком много полутонов - "сожмутся" цвета близкие к черному и белому цвету vlelim=-3:vcelim=5:lumi_mask=0.01:dark_mask=0.01:p_mask=0.01 * Минимальный и максимальный "размер квадратиков" vqmin=2:vqmax=9 * С этим параметром картинка будет меньше "сглаживаться". Например в h264 при таком же битрейте иногда не видно статичную мелкую сетку даже при двухпроходном кодировании. mpeg_quant Полезные фильтры: * При кодировании чересстрочного фильма может помочь фильтр: -vf pp=fd * Фильтр, убирающий шум (лучше посмотреть что получится с этим фильтром и без него, т.к. иногда его применение приводит к ухудшению картинки): -vf hqdn3d=4:3:5 * Масштабирование картинки (в данном случае размеры станут 640 на 480 (Ш х В)): -vf scale=640:480 Что делать если звук в исходном файле в формате "Microsoft PCM": Если формат звука в исходном файле "Microsoft PCM", mencoder может отказаться выполнять второй проход (в котором кодируется звук). Чтобы это преодолеть, нужно добавить следующие параметры: -srate sound_rate -af resample Значение sound_rate можно посмотреть в avidemux или любой другой программе показывающей информацию о файле. Не пугайтесь, если сразу не получилось - в моем случае подсмотренное значение 44103 не помогло - пришлось вписать 44100. Как увеличить скорость кодирования. Если компьютер слабый, или просто нужно быстро что-то закодировать, попробуйте убрать пару-тройку из этих параметров: vb_strategy=2:vhq=4:mbd=2:trell:cbp:mv0:preme=2:v4mv Скорость может вырасти примерно в 2 - 4 раза. Однако будьте готовы к тому что качество картинки может ухудшиться, либо потребуется поставить бОльший битрейт для сохранения качества. ______________________________________________________________________- Любишь фотографии, но хочешь, что-то новое ? картины на заказ для меня, для них, для вас! | |
Просмотров: 1049 | | |
Всего комментариев: 0 | |