Конвертация видео вручную
(→H.264 (с mencoder)) |
(→{{PAGENAME}}) |
||
Строка 3: | Строка 3: | ||
=={{PAGENAME}}== | =={{PAGENAME}}== | ||
− | Для получения информации об инструментах автоматической перекодировки видеосигнала обратитесь в статью [[ | + | Для получения информации об инструментах автоматической перекодировки видеосигнала обратитесь в статью [[Кодировка видео]]. |
__TOC__ | __TOC__ |
Версия 22:29, 27 января 2010
Конвертация видео вручную
Для получения информации об инструментах автоматической перекодировки видеосигнала обратитесь в статью Кодировка видео.
Содержание |
Mencoder
Mencoder – один из инструментов, который можно использовать для кодировки видеосигнала. Он прилагается к mplayer в операционных системах Linux. Всегда начинайте с видео наиболее высокого качества и убедитесь, что у него хорошая синхронизация аудио и видео рядов до начала кодировки, просмотрев его на компьютере. Убедитесь, что частота кадров в оригинале больше или равна той частоте, которая должна быть сгенерирована.
Рекомендуемый способ запускать mencoder – через кодировщик планшета. Можно, тем не менее, попытаться запустить mencoder напрямую и поэкспериментировать с опциями. Тем не менее, будьте осторожнее, когда задается частота кадров на выходе. Приведенные далее команды не привели к хорошим результатам. Напротив, получилась десинхронизация аудио и видео рядов и помехи, вызванные изменениями частоты кадров. В силу этого предлагается использовать вышеупомянутые основные сценарии с некоторыми изменениями.
mencoder infile.avi -oac mp3lame -ovc lavc \ -lavcopts vcodec=mpeg4 -vf scale=352:208 -ffourcc DIVX \ -ofps 15 -o outfile.avi
В результате будет сгенерирован файл со скоростью воспроизведения 15 кадр\с и разрешением352x208 в формате avi.
Следующая командная строка инструмента mencoder уменьшит видео:
mencoder infile.avi -oac mp3lame -ovc lavc \ -lavcopts vcodec=mpeg4:mbd=1:vbitrate=300 -vf scale=352:208 \ -ffourcc DIVX -ofps 15 -o outfile.avi
mplayer прекрасно воспроизведет видео со скоростью 30 кадр\с. В результате использования следующей команды получается приемлемое видео без проблем с синхронизацией аудио видео рядов.
mencoder infile.avi -oac mp3lame -ovc lavc \ -lavcopts vcodec=mpeg4:mbd=1:vbitrate=300 -vf scale=352:208 \ -ffourcc DIVX -o outfile.avi
Предложенная выше команда была протестирована на исходным файле с воспроизведением 30 кадр\с. В результате создается видео, воспроизводимое со скоростью 30 кадр\с. Оно прекрасно воспроизводится на устройстве N810.
Чтобы сделать видео меньше, можно понизить качество аудио до 64 Кбит/с (для потока видеосигнала емкостью 300 Кбит конвертирование аудио сигнала до 64 Кбит с 128 Кбит экономит в сумме приблизительно 20%. Обратите внимание, что для фильмов с более низкой скоростью передачи битов процент значительно выше):
mencoder infile.avi -oac mp3lame -lameopts abr:br=64 -ovc lavc \ -lavcopts vcodec=mpeg4:mbd=1:vbitrate=300 -vf scale=352:208 \ -ffourcc DIVX -ofps 15 -o outfile.avi
Разница заключается в способе обнаружения блока (mbd=1) и ограничения скорости передачи битов.
Для получения более подробной информации об опциях выполните man mencoder.
ffmpeg
Существует возможность преобразовывать видео при помощи инструмента ffmpeg. В видео будет поврежден заголовок fourcc, что можно исправить при помощи инструмента avifix в transcode или используя -vtag DIVX в командной строке ffmpeg:
ffmpeg -i infile -vcodec mpeg4 -acodec mp3 -s 176:144 -b 200 -pass 1 outfile.avi ffmpeg -i infile -vcodec mpeg4 -acodec mp3 -s 176:144 -b 200 -pass 2 outfile.avi avifix -i outfile.avi -F "divx"
Или прямо (без avifix):
ffmpeg -i infile -vcodec mpeg4 -acodec mp3 -vtag DIVX -s 176:144 -b 200 -pass 1 outfile.avi ffmpeg -i infile -vcodec mpeg4 -acodec mp3 -vtag DIVX -s 176:144 -b 200 -pass 2 outfile.avi
transcode
Можно конвертировать видео в формате DVD при помощи инструмента transcode, используя следующую командную строку:
transcode -i /dev/dvd \ -x dvd \ -T 1,1-16 \ -a 0 -j 48,0,48,0 \ -Z 240x160 \ -y xvid \ -V -w 300 \ -N 0x55 \ -b 48 \ -o output.avi
В результате перекодируются разделы с 1 по 16 первого заголовка. Разрешение формата DVD – 720x576, но используется только 720x480, поэтому данная команда вырезает оставшиеся 96 черных пикселей при помощи опции -j. Размер на выходе – 240x160. Скорость передачи битов видео – 300 кадр\с, аудио – 48 кадр\с. Кодек xvid (символьная ссылка на xvid2 в некоторых системах) приводит к очень хорошим результатам с настройками по умолчанию. Не используйте видео в формате mpeg4, для его декодирования потребляется слишком много ресурсов процессора, что приводит к загрузке артефактов при воспроизведении на устройствах Nokia, даже если на компьютере все выглядит прекрасно.
Исправьте FOURCC при помощи
avifix -i output.avi -F DIVX
Полученный в результате файл в формате avi имеет размер 114 Mб, длительность 45 минут и скорость 25 кадр\с. Все показатели можно, безусловно, улучшить, настроив опции xvid, используя ./xvid2.cfg.
Ниже предлагается еще один пример, в котором видео в формате DVD имеет разрешение 720x576, которое полностью используется для изображения с соотношением сторон 4:3. Размер на выходе – 256x192 (4x64, 3x64). В данном примере используется кодек xvid4. Обратите внимание, не нужно использовать B-кадр: как видится, устройства 770/N800 не могут его обрабатывать. Его можно отключить, установив max_bframes=0 в xvid4.cfg. Это легко выполняется при помощи инструмента xvid4conf. После этого следующая командная срока выполнит все остальное:
transcode -i /dev/dvd \ -x dvd \ -T 1,-1 \ -a 0 -Z 256x192 \ -y xvid4 \ -V -w 300 \ -N 0x55 \ -b 48 \ -o output.avi
Опция -T 1,-1 конвертирует весь первый заголовок (все разделы). Можно попробовать более низкую скорость передачи битов видео, регулируя параметр -w (300 Кбит/с в данном примере). Не забудьте исправить FOURCC при помощи команды avifix (как в приведенном выше примере). Данное видео очень хорошего качества, оно прекрасно работает при скорости воспроизведения 25 кадр\с.
Дополнительная информация о программах transcode и IT 2006 beta:
Рекомендуется использовать следующую командную строку:
transcode -i /dev/dvd \ -x dvd \ -T 1,-1 \ -a 0 -Z 352x208 \ --keep_asr \ -y ffmpeg \ -F mpeg4 \ -w 300 \ -N 0x55 \ -b 48 \ -R 1 \ -o output.avi
и
transcode -i /dev/dvd \ -x dvd \ -T 1,-1 \ -a 0 -Z 352x208 \ --keep_asr \ -y ffmpeg \ -F mpeg4 \ -w 300 \ -N 0x55 \ -b 48 \ -R 2 \ -o output.avi
Используя ffmpeg, не нужно исправлять FOURCC. -R x используется для выполнения кодировки в два прохода. --keep_asr изменит размеры исходного видео до выбранного желаемого разрешения. Нет необходимости беспокоиться о том, чтобы обрезать по рисунку или добавить черные рамки, если в исходном видео используется отличное соотношение размеров (в формате DVD часто используется анаморфированный формат 1.77), инструмент transcode займется этим. Единственный выбор, который нужно сделать – желаемое разрешение: 320x208 или 240x144 для источника с соотношением сторон 16:9, 352x288 или 176x144 для источника с соотношением сторон 4:3.
H.264 (с mencoder)
Теоретически, операционная система OS2008 прекрасно воспроизводит видеосигналы стандарта H.264. Большое количество существующего материала стандарта H.264 будет воспроизводится с проблемами на устройствах N8x0. В данной ветке на talk.maemo.org указывается, что видео файл должен соответствовать базовому профилю и уровеню 1.2 стандарта H.264 для совместимости как с OS2008 Media Player, так и с MPlayer. (Обратитесь в гипертекстовую среду Wikipedia за более подробной информацией по профилям и уровням.)
Известно, что следующие настройки работают в отношении mencoder. (Представлены в упрощенном виде; можно использовать двойной проход и так далее). Данные настройки в оригинальном виде взяты на сайте, посвященном стандарту H.264 на устройстве N95. Здесь они предлагаются в адаптированном виде только в качестве примера для тех пользователей, кто хочет экспериментировать с настройками вручную.
## Create video # I omitted various filters I use to make the video smaller # while encoding. A video resolution of 352:208 is assumed here, # you can achieve it by adding something like # -vf dsize=15/9,scale=352:208 # Whats important is the part after -x264encopts: # * bitrate=300: max would be 364 according to level 1.2 # * nocabac: no CABAC Entropy Coding according to Baseline profile # * partitions=p8×8,b8×8,i4×4: no idea what this is, but didn't work # with different settings # * level_idc=12: indicate to decoder that we're at level 1.2 # * frameref=2: influences peak signal to noise ratio (?) # * me=umh: motion estimation search method # * bframes=0: no B-frames according to basline profile # * nodeblock: (?) # * noweightb: (?) # * nomixed_refs: unknown, but didn't work without it # so: mencoder $INPUTFILE \ -nosound \ -ovc x264 \ -x264encopts bitrate=300:nocabac:partitions=p8×8,b8×8,i4×4:level_idc=12:frameref=2:me=umh:bframes=0:nodeblock:noweightb:nomixed_refs \ -of rawvideo -o N800.264 # # ## Create audio # The standard is picky about valid container formats for h.264 # and audio codecs within these containers. # AAC is a good choice; bitrate settings may be too conservative mencoder $INPUTFILE \ -ovc copy \ -oac faac -faacopts br=40:mpeg=4:object=2 \ -af resample=32000:0:2,volume=4:1 \ -of rawaudio -o N800.aac # ## Mux MPEG4 file # MP4Box is part of the GPAC package. # You could also use mp4creator, # but that's buggy and no longer actively developed # -fps ist frames per second; you need to give this info MP4Box -new -add N800.264 -add N800.aac -fps 25.000 N800.mp4
Специальная ветка на форуме talk.maemo.org дает общее представление о том, как может работать остальное программное обеспечение.