Конвертация видео вручную

Материал из FRUCT Maemo wiki (Russian)
Версия от 17:44, 7 февраля 2010; Admin (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


Конвертация видео вручную

Для получения информации об инструментах автоматической перекодировки видеосигнала обратитесь в статью Кодировка видео.

Содержание


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 дает общее представление о том, как может работать остальное программное обеспечение.

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты