Вы здесь

Чем нормально сжать видео?

DVD,mpeg4,и тд

ffmpeg, mencoder(оно с mplayer идёт)

Жать лучше с помошью xvid`а, по сравнению с ffmpeg он дает лучшее качество, хотя и требует более мощной машины.

недавно сам озадачился этим вопросом... Пока остановился на ffmpeg. Досконально не разобрался еще со всеми возможностями,которых просто море,но в первом приближениий - очень даже не плохо. кодирует быстро. Сам использую в основном для сжатия видео на смартфон в avi и для телефона в 3gp.

А можно поподробней?
Как имеено,какой командой?
_________________
Celeron 766,256ram,geforce MX440,hdd ide samsung 120
Portage 2.1.1-r2 (default-linux/x86/2006.1, gcc-4.1.1, glibc-2.4-r4, 2.6.18-gentoo-r6 i686)
ACCEPT_KEYWORDS="x86"
CFLAGS="-O2 -march=pentium3 -fomit-frame-pointer"

Gentoo-начало написал:
А можно поподробней?
Как имеено,какой командой?
_________________

В команду может входить огромное количество опций: и относительно параметров звука,и относительно параметров видео.Все зависит от задач,которые ставишь перед собой. Из чего,а главное что,ты хочешь получить?

Да вот фильм в формате mp4,тормозит при показе.Ниче не помогает.Судя по всему срезан с двд,весит 1.4,надо сжать и чуть хуже сделать качество.
_________________
Celeron 766,256ram,geforce MX440,hdd ide samsung 120
Portage 2.1.1-r2 (default-linux/x86/2006.1, gcc-4.1.1, glibc-2.4-r4, 2.6.18-gentoo-r6 i686)
ACCEPT_KEYWORDS="x86"
CFLAGS="-O2 -march=pentium3 -fomit-frame-pointer"

Gentoo-начало написал:
Да вот фильм в формате mp4,тормозит при показе.Ниче не помогает.Судя по всему срезан с двд,весит 1.4,надо сжать и чуть хуже сделать качество.
_________________

Если притормаживает по причине слабого процессора,то можно попробовать пережать видео с меньшим разрешением,а так же можно уменьшить битрейт видео.Если нет звуковой карты,то и обработка звукового потока ложится на плечи процессора,а значит, я думаю,что уменьшение битрейта звукового потока,тоже скажется положительно.

вот пример для ffmpeg:

ffmpeg -i исходный.avi -s 208x176 -vcodec xvid -b 200k -bf 2 -acodec mp3 -ab 80 конечный.avi

здесь: -s разрешение, -b битрейт видео, -vcodec кодек, -bf 2-стерео,1-моно,
-acodec кодек звука, -ab битрейт звука.

вносишь поправки в комманду,запускаешь,кодируешь немного,останавливаешь по "q", смотришь на результаты,опять пробуешь...
p.s. http://www.xoro.ru/docs/mpeg4/index.htm - здесь просто очень много информации,в том числе должна быть и по твоему вопросу.
http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html - здесь документация по ffmpeg.

Спасибо за исчерпывающий ответ
_________________
Celeron 766,256ram,geforce MX440,hdd ide samsung 120
Portage 2.1.1-r2 (default-linux/x86/2006.1, gcc-4.1.1, glibc-2.4-r4, 2.6.18-gentoo-r6 i686)
ACCEPT_KEYWORDS="x86"
CFLAGS="-O2 -march=pentium3 -fomit-frame-pointer"

Gentoo-начало написал:
Спасибо за исчерпывающий ответ
_________________

Я рад,если информация оказалась полезной...
Еще могу посоветовать собрать ffmpeg с поддержкой ffplay (собрать надо с флагом sdl).Тогда можно будет и быстро просмотреть результаты...типа такой маленький комплекс для работы с видео получится.Хотя,если чесно,то с твоим процессором кодировать видео будет несколько проблематично.

о! хоть кто-то шарит в теме :)

подскажи пжлста такую весчь:

я кодирую mencoder-ом
и когда сдергиваю с двд строкой
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=msmpeg4:vhq -o out.avi
(ну и там еще опции по необходимости, касабельно размера, но базовые эти)
то выходной файл просто супер качества, почти оригинал, только в местах быстрого движения квадратируется, DIV3 все-таки...

но(!!!)
если пишу с тв-тюнера строкой:
mencoder tv:// -tv driver=v4l2 -oac copy -ovc lavc -lavcopts vcodec=msmpeg4:vhq:vbitrate=4000 -o out.avi
пишет нормально, только размер выходного файла 2Г/час
(временный, типа пофиг)

а потом пытаюсь его свернуть до нормального
mencoder 1.avi -oac copy -ovc lavc -lavcopts vcodec=msmpeg4:vhq -o out.avi

(пробовал добавлять trell:mbd=1,2, кодек менять на mpeg4, ниче не помогает)

то качество выходного файла просто жуть, пока битрейт до 1800-2000 не поднимешь смотреть невозможно...

может подскажешь какие еще опции заюзать чтоп качество поднять??

может надо деинтерлейсинг сделать?

_________________
Athlon 1400 RAM 512 KDE 3.5.5

точно конечно не знаю,но мне кажется,что ты используешь кодек плохой (msmpeg4)... помню еже по винде,что нормальное соотношение качество/размер можно было получить только используя divx или xvid,а все остальное от лукавого...попробуй xvid.

moska написал:
точно конечно не знаю,но мне кажется,что ты используешь кодек плохой (msmpeg4)... помню еже по винде,что нормальное соотношение качество/размер можно было получить только используя divx или xvid,а все остальное от лукавого...попробуй xvid.

Полностю согласен, msmpeg4 кодек просто ужасный. Мой совет Xvid, причём оптимально - двух проходное кодирование. Для хорошего качества при 640х480 битрейт ~1500, 720x576 - 2500, 1280x720 - 6000.Лично я юзаю mencoder.
Вот пример:
mencoder org.avi -oac copy -vf crop=720:426:0:74 -ovc xvid -xvidencopts bitrate=2500:vhq=4:gmc:pass=1 -o dec.avi && mencoder org.avi -oac copy -vf crop=720:426:0:74 -ovc xvid -xvidencopts bitrate=2500:vhq=4:qmc:pass=2 -o dec.avi

Битрейт не задает качество картинки, он задет количество информации, если описывать только один чб пиксель, то достаточно 25 бит в секунду, а если hdtv... Так что вопрос в настоящей его формулировке бесмыссленный.
а) В чем меряется битрейт? В битах/c? килобитах/c, мегабитах/c, килобайтх/с, мегабайтах/с?
б) Каково разрешение видео?
в) Какова глубина цвета?

Имхо, 1-2 мегабита/с вполне нормальный битрейт, если хочется получить качественное видео ( 768x576 24bpp ).
Я бы советовал захватывать с намного большим битрейтом, мегабит этак 12, чтобы потом фильтр деинтерлейсинга хорошо сработал и не путался из-за дефектов кодирования. А потом бы пожал видео в theora, а звук в vorbis, используя контейнер ogg.

Цитата:
Полностю согласен, msmpeg4 кодек просто ужасный.

я не согласен... у меня с остальными качество еще хуже :(

Цитата:
Мой совет Xvid, причём оптимально - двух проходное кодирование. Для хорошего качества при 640х480 битрейт ~1500, 720x576 - 2500, 1280x720 - 6000.Лично я юзаю mencoder.

я тоже :)
Xvid я конечно еще попробую...
что касается битрейта, я же говорю, с двд (дн.дозор) резал "плохим" кодеком, в разрешении 720х576, с дефолтным битрейтом (около 800), и качество отменное (только не надо плиз говорить что "быть того не может", я тож думал что если уж в разрешении 640х480-тв качество позорное, то с двд еще хуже буит, ан нет...)

Цитата:
Битрейт не задает качество картинки, он задет количество информации, если описывать только один чб пиксель, то достаточно 25 бит в секунду, а если hdtv...

я не говорю что он "задает", я говорю что влияет...
если битрейт будет 25б/с то мы увидим картинку 1х1 пиксель с частотой 25 к/с... (а вообще говоря нужен битрейт 24х25бит/с, чтоп отображать труколорный пиксель :))
это все я понимаю.. не тупой :(

Цитата:
Так что вопрос в настоящей его формулировке бесмыссленный.
а) В чем меряется битрейт? В битах/c? килобитах/c, мегабитах/c, килобайтх/с, мегабайтах/с?
б) Каково разрешение видео?
в) Какова глубина цвета?

а)я думал что величина стандартная килобит/с
б)640х480
ц)24

Цитата:
Имхо, 1-2 мегабита/с вполне нормальный битрейт, если хочется получить качественное видео ( 768x576 24bpp ).

ага, при битрейте в 1.8 уже нормально, только вот мне бы хотелось, чтоб на сидюк влазил час-полтора видео... а при таком битрейте час занимает около(или чуть больше) гига

Цитата:
Я бы советовал захватывать с намного большим битрейтом, мегабит этак 12, чтобы потом фильтр деинтерлейсинга хорошо сработал и не путался из-за дефектов кодирования.

1.еслиб винт позволял, я бы raw захватывал, но эксперименты показали, что подымать битрейт выше 4000 смысла нет, качество не улутшается
2.и деинтерлейсинг ему не нужен... наверное... надо проверить, я об этом както не подумал

Цитата:
А потом бы пожал видео в theora, а звук в vorbis, используя контейнер ogg.

а че такое theora?? я как-то не слыхал....
звук в ogg/vorbis меня не устраивает, я хочу чтобы видео потом нормально читалось как виндовыми кодеками, так и двд-плеерами

Цитата:
2.и деинтерлейсинг ему не нужен... наверное... надо проверить, я об этом както не подумал

Тогда действительно не стоит захватывать с таким битрейтом. Я просто с видеокамеры захватываю и чтобы потом нормальную картинку получить мне надо, чтобы гребенка с шагом в один пиксель не потерялась, её тогда убрать нормально получается.

Цитата:
а че такое theora?? я как-то не слыхал....
звук в ogg/vorbis меня не устраивает, я хочу чтобы видео потом нормально читалось как виндовыми кодеками, так и двд-плеерами

В виндах оно прекрасно читается, а dvd плееров у меня нет и не предвидится. theora - абсолютно свободный видеокодек уровня divx. То видео, которое я кодировал в theora смотрелось намного лучше, чем в divx, но это похоже связанно со спецификой самого видео, темное помещение, камера дает сильный шум и divx попытался его передать, получилась пестрая некрасивая каша. Возможно на другом видео divx быдет выглядеть лучше. Для моих целей мне theora больше понравилась.

PS Возможно у тебя просто видео, плохо поддающееся сжатию? Движения много?

Цитата:
PS Возможно у тебя просто видео, плохо поддающееся сжатию? Движения много?

да не много вроде... я ComedyClub пишу... они ж там большую часть времени на сцене пляшут...

я не пойму в чем проблема... говорю же, с двд режу, и разрешение выше, и битрейт 800, и качество отменное... а тут вот заковыка :(

в обчем подсобрал я немного статистики и вот что могу сказать
1. msmpeg4 - это вообще-то DIVXv3(DIV3)- дает у меня наилутшее качество картинки (в соотношении битрейт/качество)
2.Xvid я попробовал, качество жуть
3.отменное качество дает DV и mJpeg (визуально как бы даже лутше оригинала, хз, мож фильтры применяются), но у них битрейт сумасшедший :(
4. изорбажение интерлейсенное, но применение деинтерлейсера (любого из 5ти встроенных в mencoder) улутшений не дает, напротив, изображение размазывается, и даже в более-менее однородно-цветовых местах появляется шум
5. звук ас3

я принял среднее решение:
-vf scale=480:360,hue=0,0.5 -lavcopts vcodec=msmpeg4:vhq:vbitrate=1500:acodec=ac3
час выходил около 700м

кстати, об плохих кодеках...
я пролистал много фильмов, и 95% из них пожаты DIV3, и качество нормальное...
опять же повторюсь, когда с двд сливаю, то div3+битрейт=800 == нормальное качество с нормальным размером...
с тв вот только плохо :(

Цитата:
4. изорбажение интерлейсенное, но применение деинтерлейсера (любого из 5ти встроенных в mencoder) улутшений не дает, напротив, изображение размазывается, и даже в более-менее однородно-цветовых местах появляется шум

Попробуй применять bob&weave, точно есть в cinelerra. Это наилучший из простых способов дентерлейсинга. Лучше могут только специальные железки и очень дорогие программы, которые распознают объекты, их движение, вычисляют скорость...

эт че такое??

В смысле? cinelerra - видеоредактор. bob&weave, если не ошибаюсь, вычисляет места, где видна гребенка и там показывает только одно поле, а там, где она не заметна показывает оба поля. Порог настраивается.

imar написал:
о! хоть кто-то шарит в теме :)

подскажи пжлста такую весчь:

я кодирую mencoder-ом
и когда сдергиваю с двд строкой
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=msmpeg4:vhq -o out.avi
(ну и там еще опции по необходимости, касабельно размера, но базовые эти)
то выходной файл просто супер качества, почти оригинал, только в местах быстрого движения квадратируется, DIV3 все-таки...

можно добавить 3d фильтр еще. имхо.

imar написал:
если пишу с тв-тюнера строкой:
mencoder tv:// -tv driver=v4l2 -oac copy -ovc lavc -lavcopts vcodec=msmpeg4:vhq:vbitrate=4000 -o out.avi
пишет нормально, только размер выходного файла 2Г/час
(временный, типа пофиг)

а если здесь тоже копи поставить? файл то все равно временный.

imar написал:
а потом пытаюсь его свернуть до нормального
mencoder 1.avi -oac copy -ovc lavc -lavcopts vcodec=msmpeg4:vhq -o out.avi

т.к. видео взято с телевизора - то нужно сначала по любому выяснить типа видео -т.е. черезстрочность, фильтры и т.п. - это в данном случае (тв-тюнер) очень важно. а потом соответсвующим образом обрабатывать - т.е. размер /соотношение сторон играет огромную роль - не помню точно какова должна быть кратность - но я пробовал делать сначала сам, а потом учитывая рекомендации с доки на официальном сайте мплеера (там и по русски есть. я всю папку рекурсивно залил) - имхо отличнейший мануал. попробуй там прочти. имхо

imar написал:
mencoder 1.avi -oac copy -ovc lavc -lavcopts vcodec=msmpeg4:vhq -o out.avi

для видео с тв-тюнера не катит.. да и кодек конечно еще тот.. пробуй ffmpeg - отличный проверенный, или стремительно развивающийся x264 - я для пробы и тем и тем пробовал, но особой разницы для себя не ощутил..
имхо ffmpeg - сейчас наилучший вариант в плане скорость/качество.

Success is simple. Do what's right, the right way, at the right time.

tradakad написал:

для видео с тв-тюнера не катит.. да и кодек конечно еще тот.. пробуй ffmpeg - отличный проверенный, или стремительно развивающийся x264 - я для пробы и тем и тем пробовал, но особой разницы для себя не ощутил..
имхо ffmpeg - сейчас наилучший вариант в плане скорость/качество.

Странно, xvid почему-то всегда выдовал лутшее качеcтво чем mpeg4 из libavcodec, когда я их сравнивал...
А x264 на мой взгляд предпочтительнее если комп хороший (и процессор >1Ггц), т.к. по отношению качество/объём алгоритм H.264 самый лутший какой сейчас есть (среди папулярных и открытых кодеков).

А что про x264 (GPL реализация H.264/AVC) никто не говорит? Мне больше чем xvid понравилось как оно сжимает. Правда и к процу требования выше. Хотя xvid тоже очень хорош.

Кстати, да, последние год-два во всех тестах x264 кодирует лучше, чем xvid. На forums.gentoo.org к тому же можно найти оверлей с SVN-сборками mplayer и x264.

А звук лучше всего в OGG кодировать, благо он даже 5.1 поддерживает (см. топик на linuxforum)

чем ас3 не устраивает??

OGG поддерживает до 256 каналов, если не ошибаюсь.

предлагаешь разместить по квартире 255 колонок и сабвуфер? :))

сделал скриптик может кому пригодится...
кодирует DVD -> x264 в матрешку
есть мозможность сохранить звук как он есть на ДВД, либо перекодировать в ogg (переменная в скрипте REENCODE_SOUND)
на выходе получается mkv файл.
Необходимые пакеты:emerge mplayer mkvtoolnix gpac c соответствующими use flags
PS подскажите если mplayer собран c ru и en как вывод в консоле принудительно сделать английским? мне это нужно для автоматизации скрипта.

serega@blackbox ~ $ cat dvd_x264.encode
#!/bin/bash
#emerge mplayer mkvtoolnix gpac
#этот битрейт вроде бы расчитан на xvid, при 1393 с 4гб двд у меня получается гдето 1200мб
#Recommended video bitrate for 700MB CD: 637
#Recommended video bitrate for 800MB CD: 745
#Recommended video bitrate for 2 x 700MB CD: 1393
#Recommended video bitrate for 2 x 800MB CD: 1609

DVDdevice="/opt/tmp/video_ts2"
Bitrate=1393
REENCODE_SOUND=0
passes="1 2"
#8x8dct  в старых версиях вызывает Segmentation fault :(
# с какойто версии видимо убраны:
#Option x264encopts: Unknown suboption novisualize
#Option x264encopts: Unknown suboption 4x4mv
#Option x264encopts: Unknown suboption qp_constant
x264encopts="bframes=2:b_pyramid:weight_b:qcomp=0.75:me=umh:cabac:8x8dct:b_adapt:threads=4"

for title in 1
 do
 DVDtitle=$title
# for chapter in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
  for chapter in 1
  do
DVDchapter=$chapter
NAME=${title}_${chapter}
#chapter=${chapter}-${chapter} #если надо DVD не одним куском, а по клипам
tmpfilename=$RANDOM
PASSLOG=/tmp/mencoder_${tmpfilename}.passlog

nohup mplayer -dvd-device "$DVDdevice" dvd://${DVDtitle} -chapter ${DVDchapter} -vf cropdetect -nosound -vo null 1>&2 >/tmp/crop.${tmpfilename}.log &
sleep 60; pkill -9 -x mplayer
vfs="`tail /tmp/crop.${tmpfilename}.log|head -1|sed -e 's/.*(//'|sed -e 's/).*//'`"
fps="`grep fps /tmp/crop.${tmpfilename}.log | awk '{ print $6}'`"
rm /tmp/crop.${tmpfilename}.log
echo ======== turbo pass !
mencoder -dvd-device "$DVDdevice" dvd://${DVDtitle} -chapter ${DVDchapter} -passlogfile $PASSLOG $vfs -nosound -ovc x264 -x264encopts ${x264encopts}:pass=1:turbo=1:subq=1 -o /dev/null

for i in $passes
do
mencoder -dvd-device "$DVDdevice" dvd://${DVDtitle} -chapter ${DVDchapter} -passlogfile $PASSLOG $vfs -nosound -ovc x264 -x264encopts ${x264encopts}:pass=3:psnr:subq=7:bitrate=${Bitrate} -o /dev/null
done

mencoder -dvd-device "$DVDdevice" dvd://${DVDtitle} -chapter ${DVDchapter} -passlogfile $PASSLOG $vfs -nosound -ovc x264 -x264encopts ${x264encopts}:pass=3:psnr:subq=7:bitrate=${Bitrate} \
         -info name="${NAME}":comment="encoded by Slayer605":srcform="Hellfest syracuse, NY-Summer 2000" \
         -of rawvideo -o "${tmpfilename}.264"
#./countquant $PASSLOG > PSNR
#rm $PASSLOG

if [[ $REENCODE_SOUND != 0 ]] ; then
                # PCM не сжатый звук, кодируем его в ogg  7 = 224Kbps
                mplayer  -vo null -ao pcm:waveheader:file=sound.${tmpfilename}.wav -dvd-device "$DVDdevice" dvd://${DVDtitle} -chapter ${DVDchapter}
                oggenc -q 7 sound.${tmpfilename}.wav
                rm sound.${tmpfilename}.wav
        else
                #AC3 все каналы без перекодирования
                mplayer  -vo null -dumpaudio -dumpfile "sound.${tmpfilename}.ac3" -aid 128 -dvd-device "$DVDdevice" dvd://${DVDtitle} -chapter ${DVDchapter}
fi

# дальше нужно упаковать видео и звук в матрешку
MP4Box -fps $fps -add ${tmpfilename}.264 ${tmpfilename}.mp4
mkvmerge -o "${NAME}.mkv" ${tmpfilename}.mp4  sound.${tmpfilename}.???

rm ${tmpfilename}.mp4  sound.${tmpfilename}*  #${tmpfilename}.264

  done   #chapters
 done    #titles

Вызывай его как LC_ALL="EN_en" mplayer и вывод будет на английском

не помогает :(

блин советчики, хоть бы сам перед советом попробовал...

locale -a
выдаст список всех локалей в системе, там выбери аглицкий
LC_ALL="en_US.UTF-8"
попробуй, если не заработает напиши в начале в скрипта
export LC_ALL="en_US.UTF-8"
но всётаки для mplayer у меня почему-то неработает...

это все я конечно пробовал, не работает...

я вот несовсем понял чем мешает автоматизации русский язык?

тем что руссифицированныи и английский мплееры выводят по разному информацию в консоле (некоторые слова поменяны местами :) скажем результат использования grep ....| awk '{print $3}' в разных версиях будет разным.

...кину для пережатия dvd->xvid, правдо без звука...

Цитата:
#!/bin/bash

NICE=15
BITRATE=900
FPS=29.970
#FPS=25.000
#-endpos=hh:mm:ss.ms
#CROP=ширина:высота:отступ слева:отступ сверху
#CROP=0:0:0:0
CROP=720:368:0:52
#RES=ширина:высота - если
RES=848:368

SOURCEVIDEO="dvd://1 -dvd-device /mnt/big_part/side1/video_ts/"
#SOURCEVIDEO=dvd://2 -dvd-device /mnt/big_part/side1/video_ts/
#SOURCEVIDEO=/mnt/big_part/ff7.vob

## 1 prohod
nice -n $NICE \
mencoder $SOURCEVIDEO -alang ru -ofps $FPS -ni \
-ovc xvid -xvidencopts pass=1:vhq=4:gmc:closed_gop:trellis:packed:hq_ac:chroma_me:quant_type=mpeg:max_bframes=2 \
-vf hqdn3d=2:1:2,crop=$CROP,scale=$RES,pp=hb/vb/dr -sws 2 \
-oac copy \
-o /dev/null

## 2 prohod
nice -n $NICE \
mencoder $SOURCEVIDEO -alang ru -ofps $FPS -ni \
-ovc xvid -xvidencopts bitrate=$BITRATE:pass=2:vhq=4:gmc:closed_gop:trellis:packed:hq_ac:chroma_me:quant_type=mpeg:max_bframes=2 \
-vf hqdn3d=2:1:2,crop=$CROP,scale=$RES,pp=hb/vb/dr -sws 2 \
-oac copy \
-o /mnt/big_part/frameno.avi

gmc кстати лутше не применять, на качество всёравно мало влияет...
но без vhq=4 и pass2 палучается ещё большее уродство ;)

PS 2Slayer605 респект за скрипт