После некоторого изучения предмета я написал скрипт, который здесь и привожу.
#from http://cowond2.god.su/index.php?name=Pages&op=page&pid=7
#Воспроизведение видео
#Плеер способен воспроизводить следующие форматы видео:
# AVI : MPEG4 до 2 Мбит/с, 320x240, 30 к/с, MP3 (аудио)
# WMV : WMV9 до 768 Кбит/с, 320x240, 30 к/с, WMA (аудио)
# Плеер НЕ поддерживает B-frames при воспроизведении видео. Это стоит учитывать при перекодировании видео сторонними программами (отключать, то бишь). На деле это приводит к тому, что полуторачасовой фильм в разрешении 320х240 занимает около 400-450 МБ, что много. Если вы перекодировали видео-файл для воспроизведения на D2, а плеер при попытке воспроизведения показывает черный экран, то вероятнее всего при
перекодировании не были отключены B-frames.
# Плеер без проблем читает большие файлы, запинок при проигрывании не происходит. Ограничения на размер видео файла нет (проверялось пока максимум 1 ГБ)
# Замечены случаи рассинхронизации видео и аудио потоков. Замечено, что это порой зависит от версии прошивки. Если вы наблюдаете постоянною рассинхронизацию потоков, от файла к файлу, то можно при перекодировании на ПК намеренно поставить запаздывание/опережение звука на величину лага
при просмотре на плеере. JetAudio этого не умеет. Умеют VirualDub, ffmpeg. Еще можно порекомендовать iRiverter, хороший перекодировщик видео под D2, пусть и от конкурентов...
# Битрейт видео ставить больше 500 кб/с смысла особого нет, вполне достаточно 300-400 кб/с. Если вам не жалко места, то можете и больше сделать, но особо в качестве не выйграете.
# При выводе видео на телевизор, используйте формат NTSC, в формате PAL изображение будет смещено либо просто выглядеть некорректно.
# Через шнурок TV-out можно выводить только видео, фотки посмотреть не удастся
#<------------------------------------------------ Audio ------------------------------------------------>
#audio кодируется с помощью библиотеки lame в mp3
#preset=medium - VBR(переменный битрейт) кодирование, хорошее качество, битпоток в диапазоне 150-180 кбит/с
#о preset см man mencoder и http://www.ixbt.com/multimedia/lame-presets.shtml
#
#примеру из http://em.typodemon.com/wordpress/?p=136
#mencoder -o "${outputFile}" -ovc lavc -vf scale=320:240 -oac lavc -lavcopts vmax_b_frames=0:acodec=mp3:abitrate=128:vbitrate=256 "${inputFile}"
#соответствует
#audioOpts="-lameopts cbr:br=128" #CBR(постоянный битрейт) 128
#лучше будет
#audioOpts="-lameopts preset=128" #ABR(средний битрейт)
#подробнее о lame и [VAC]BR см: http://www.allok.ru/?id=15#encoding_modes
#volnorm - фильтр нормализации звука
#<------------------------------------------------ Video ------------------------------------------------>
#video кодируется с помощью библиотеки libavcodec (ffmpeg)
#hqdn3d - Этот фильтр нацелен на уменьшение шума изображения, выдавая сглаженную картинку и делая неподвижные изображения действительно неподвижными (что должно улучшить сжимаемость.)
#dsize - определяет величину экрана(320x240) и заставляет считать эти размеры так же и размерами видео(2), сохраняя при это его(видео) пропорции
#scale - изменяет размеры в соответствии с рекомендациями dsize
#Так же существует:
#pp - postprocess filters (см man mencoder). Наиболее общий фильтр, который при этом встречается - pp=ac/autolevels:fullyrange Однако мне кажется, что для Cowon D2 он не слишком важен, тогда как время обработки и объем файла растут. Этот фильтр рекомендуется ставить первым (http://www.mplayerhq.hu/DOCS/HTML-single/ru/MPlayer.html#menc-feat-dvd-mpeg4-filtering). Его расшифровка:
# ac - высококачественная комбинация pp фильтров (ha:a:128:7,va:a,dr:a). Т.е. ha и va - фильтры тщательного горизонтального и вертикального deblocking'а(http://en.wikipedia.org/wiki/Deblocking_filter_(video) и http://www.mplayerhq.hu/DOCS/HTML-single/ru/MPlayer.html#menc-feat-x264-encoding-options-misc-preferences), dr - фильтр удаления ореола на границе цветов.
# autolevels - автоматическая коррекция яркости / контрастности (fullyrange: Растягивает яркостную компоненту до (0-255))
#videoFilters="-vf pp=ac/autolevels:fullyrange,hqdn3d,dsize=320:240:2,scale=0:0"
#
#vcodec=mpeg4 - Видео будет представлено в формате mpeg4
#vmax_b_frames=0 - B-кадры(B-frames) не будут кодироваться (что такое B-кадры можно посмотреть здесь http://articles.security-bridge.com/articles/10/12198/)
#vbitrate= - Указывает битпоток
#mbd=2 - Алгоритм принятия решения о макроблоке (режим высокого качества), Указывает кодировать каждый макроблок всеми режимами и выбирать лучший. Это работает медленно, но дает лучшее качество и меньший файл.
#trell - Квантование поиском по решетке. Параметр мне не ясен, но утверждается, что нет оснований его исключать (http://www.mplayerhq.hu/DOCS/HTML-single/ru/MPlayer.html#menc-feat-telecine-footnotes)
#v4mv - Допускает 4 вектора движения на макроблок (немного лучшее качество). При использовании с mbd>0 работает лучше.
#Так же существует:
#qpel - (man mencoder: Использовать четвертьпиксельную (quarter pel) компенсацию движения (несовместимо с ilme). ПОДСКАЗКА: Похоже, что опция имеет смысл только для кодирования с высоким битпотоком.). Однако сколь высок должен быть битпоток мне не понятно.
#turbo - эта опция используется только при двухпроходном кодировании для первого прохода. Позволяет отключать некоторые процессоёмкие преобразования
#!/bin/bash
#from http://cowond2.god.su/index.php?name=Pages&op=page&pid=7
#Воспроизведение видео
#Плеер способен воспроизводить следующие форматы видео:
# AVI : MPEG4 до 2 Мбит/с, 320x240, 30 к/с, MP3 (аудио)
# WMV : WMV9 до 768 Кбит/с, 320x240, 30 к/с, WMA (аудио)
# Плеер НЕ поддерживает B-frames при воспроизведении видео. Это стоит учитывать при перекодировании видео сторонними программами (отключать, то бишь). На деле это приводит к тому, что полуторачасовой фильм в разрешении 320х240 занимает около 400-450 МБ, что много. Если вы перекодировали видео-файл для воспроизведения на D2, а плеер при попытке воспроизведения показывает черный экран, то вероятнее всего при
перекодировании не были отключены B-frames.
# Плеер без проблем читает большие файлы, запинок при проигрывании не происходит. Ограничения на размер видео файла нет (проверялось пока максимум 1 ГБ)
# Замечены случаи рассинхронизации видео и аудио потоков. Замечено, что это порой зависит от версии прошивки. Если вы наблюдаете постоянною рассинхронизацию потоков, от файла к файлу, то можно при перекодировании на ПК намеренно поставить запаздывание/опережение звука на величину лага
при просмотре на плеере. JetAudio этого не умеет. Умеют VirualDub, ffmpeg. Еще можно порекомендовать iRiverter, хороший перекодировщик видео под D2, пусть и от конкурентов...
# Битрейт видео ставить больше 500 кб/с смысла особого нет, вполне достаточно 300-400 кб/с. Если вам не жалко места, то можете и больше сделать, но особо в качестве не выйграете.
# При выводе видео на телевизор, используйте формат NTSC, в формате PAL изображение будет смещено либо просто выглядеть некорректно.
# Через шнурок TV-out можно выводить только видео, фотки посмотреть не удастся
DEFAULT_SUFFIX="_D2.avi" DEFAULT_VIDEOBITRATE="256" function printHelp() { programName=`basename $0` cat << EndOfHelpText Usage: ${programName} [options] <input file name> [output file name] Options: -h: this message -m <mplayer options>: one parameter which will be passed to mplayer. WARNING! It should be 1 parameter! For example: "-ss 04:00 -endpos 01:00" can be used for coding only 5th minute. $>${programName} -m "-ss 04:00 -endpos 01:00" fileName -v <video bitrate>: use video bitrate instead default value (${DEFAULT_VIDEOBITRATE}) -n: print string for encoding and exit -f: overwrite output file if output file name is ommited then script try to use input file name and suffix ${DEFAULT_SUFFIX} EndOfHelpText } if [ $# -eq "0" ]; then printHelp exit 1 fi videoBitrate="${DEFAULT_VIDEOBITRATE}" while getopts ":m:nv:f" option; do case $option in m ) mplayerOptions="${OPTARG}";; n ) onlyCommand="true";; f ) forceOverwrite="true" ;; v ) videoBitrate="${OPTARG}";; * ) printHelp exit 1 ;; esac done # Переход к очередному параметру командной строки. shift $(($OPTIND - 1)) inputFile="$1" shift outputFile="$1" if [ "${outputFile}" = "" ]; then outputFile=`echo "${inputFile}" | sed "s|^\(.*\)\.[^.]*$|\1|g"` outputFile="${outputFile}${DEFAULT_SUFFIX}" fi if [ "${onlyCommand}" != "true" ]; then if [ -e "${outputFile}" -a "${forceOverwrite}" != "true" ]; then echo "the ${outputFile} already exists" exit 1 fi fi
#<------------------------------------------------ Audio ------------------------------------------------>
#audio кодируется с помощью библиотеки lame в mp3
audioCodec="-oac mp3lame"
#preset=medium - VBR(переменный битрейт) кодирование, хорошее качество, битпоток в диапазоне 150-180 кбит/с
audioOptions="-lameopts preset=medium"
#о preset см man mencoder и http://www.ixbt.com/multimedia/lame-presets.shtml
#
#примеру из http://em.typodemon.com/wordpress/?p=136
#mencoder -o "${outputFile}" -ovc lavc -vf scale=320:240 -oac lavc -lavcopts vmax_b_frames=0:acodec=mp3:abitrate=128:vbitrate=256 "${inputFile}"
#соответствует
#audioOpts="-lameopts cbr:br=128" #CBR(постоянный битрейт) 128
#лучше будет
#audioOpts="-lameopts preset=128" #ABR(средний битрейт)
#подробнее о lame и [VAC]BR см: http://www.allok.ru/?id=15#encoding_modes
#volnorm - фильтр нормализации звука
audioFilters="-af volnorm" audio="${audioCodec} ${audioFilters} ${audioOptions}"
#<------------------------------------------------ Video ------------------------------------------------>
#video кодируется с помощью библиотеки libavcodec (ffmpeg)
videoCodec="-ovc lavc"
#hqdn3d - Этот фильтр нацелен на уменьшение шума изображения, выдавая сглаженную картинку и делая неподвижные изображения действительно неподвижными (что должно улучшить сжимаемость.)
#dsize - определяет величину экрана(320x240) и заставляет считать эти размеры так же и размерами видео(2), сохраняя при это его(видео) пропорции
#scale - изменяет размеры в соответствии с рекомендациями dsize
videoFilters="-vf hqdn3d,dsize=320:240:2,scale=0:0"
#Так же существует:
#pp - postprocess filters (см man mencoder). Наиболее общий фильтр, который при этом встречается - pp=ac/autolevels:fullyrange Однако мне кажется, что для Cowon D2 он не слишком важен, тогда как время обработки и объем файла растут. Этот фильтр рекомендуется ставить первым (http://www.mplayerhq.hu/DOCS/HTML-single/ru/MPlayer.html#menc-feat-dvd-mpeg4-filtering). Его расшифровка:
# ac - высококачественная комбинация pp фильтров (ha:a:128:7,va:a,dr:a). Т.е. ha и va - фильтры тщательного горизонтального и вертикального deblocking'а(http://en.wikipedia.org/wiki/Deblocking_filter_(video) и http://www.mplayerhq.hu/DOCS/HTML-single/ru/MPlayer.html#menc-feat-x264-encoding-options-misc-preferences), dr - фильтр удаления ореола на границе цветов.
# autolevels - автоматическая коррекция яркости / контрастности (fullyrange: Растягивает яркостную компоненту до (0-255))
#videoFilters="-vf pp=ac/autolevels:fullyrange,hqdn3d,dsize=320:240:2,scale=0:0"
#
#vcodec=mpeg4 - Видео будет представлено в формате mpeg4
#vmax_b_frames=0 - B-кадры(B-frames) не будут кодироваться (что такое B-кадры можно посмотреть здесь http://articles.security-bridge.com/articles/10/12198/)
#vbitrate= - Указывает битпоток
#mbd=2 - Алгоритм принятия решения о макроблоке (режим высокого качества), Указывает кодировать каждый макроблок всеми режимами и выбирать лучший. Это работает медленно, но дает лучшее качество и меньший файл.
#trell - Квантование поиском по решетке. Параметр мне не ясен, но утверждается, что нет оснований его исключать (http://www.mplayerhq.hu/DOCS/HTML-single/ru/MPlayer.html#menc-feat-telecine-footnotes)
#v4mv - Допускает 4 вектора движения на макроблок (немного лучшее качество). При использовании с mbd>0 работает лучше.
videoOptions="-lavcopts vcodec=mpeg4:vmax_b_frames=0:vbitrate=${videoBitrate}:mbd=2:trell:v4mv"
#Так же существует:
#qpel - (man mencoder: Использовать четвертьпиксельную (quarter pel) компенсацию движения (несовместимо с ilme). ПОДСКАЗКА: Похоже, что опция имеет смысл только для кодирования с высоким битпотоком.). Однако сколь высок должен быть битпоток мне не понятно.
#turbo - эта опция используется только при двухпроходном кодировании для первого прохода. Позволяет отключать некоторые процессоёмкие преобразования
video="${videoCodec} ${videoFilters} ${videoOptions}" command="mencoder ${mplayerOptions} -o \"${outputFile}\" ${video} ${audio} \"${inputFile}\"" echo -e "the following command will be executed:\n${command}" if [ "${onlyCommand}" != "true" ]; then [ -e "${outputFile}" -a "${forceOverwrite}" = "true" ] && rm -v "${outputFile}" if [ -e "${outputFile}" ]; then echo "the ${outputFile} cannot be removed" exit 1 fi mencoder ${mplayerOptions} -o "${outputFile}" ${video} ${audio} "${inputFile}" fi
4 comments:
Спасибо! Отличный скрипт :)
Не за что, я рад что он кому-то пригодился :)
спасибо большое
Всегда пожалуйста :)
Post a Comment