Конвертация видео вручную
(Отмена правки 1649 участника 217.77.58.217 (обсуждение)) |
|||
Строка 1: | Строка 1: | ||
− | [[Category: | + | [[Category:Пользователи]] |
+ | |||
+ | =={{PAGENAME}}== | ||
+ | |||
+ | Для получения информации об инструментах автоматической перекодировки видеосигнала обратитесь в статью [[Кодирование видео]]. | ||
+ | |||
+ | __TOC__ | ||
+ | |||
+ | ===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 кадр\с. Оно прекрасно воспроизводится на устройстве oN810. | ||
+ | |||
+ | Чтобы сделать видео меньше, можно понизить качество аудио сигнала до 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. В [http://talk.maemo.org/showthread.php?t=13514&page=4 данной ветке] на talk.maemo.org указывается, что видео файл должен соответствовать базовому профилю и уровеню 1.2 стандарта H.264 для совместимости как с OS2008 Media Player, так и с MPlayer. (Обратитесь в гипертекстовую среду Wikipedia за более подробной информацией по [http://en.wikipedia.org/wiki/H.264#Profiles профилям] и [http://en.wikipedia.org/wiki/H.264#Levels уровням].) | ||
+ | |||
+ | Известно, что следующие настройки работают в отношении 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 дает общее представление о том, как может работать остальное программное обеспечение. | ||
+ | |||
+ | [[Category:Пользователи]] | ||
+ | [[Category:Медиа]] | ||
+ | [[Category:Продвинутые]] |
Версия 19:36, 28 декабря 2009
Конвертация видео вручную
Для получения информации об инструментах автоматической перекодировки видеосигнала обратитесь в статью Кодирование видео.
Содержание |
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 кадр\с. Оно прекрасно воспроизводится на устройстве oN810.
Чтобы сделать видео меньше, можно понизить качество аудио сигнала до 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 дает общее представление о том, как может работать остальное программное обеспечение.