The Diary
Дневникът на Георги
<- Сряда, 11 Април 2007 | Начална страница | Петък, 13 Април 2007 ->
Четвъртък, 12 Април 2007
С кратката изрезка код по-долу и с помощта на mencoder можете да
направите филмче от само една картинка. Подобни
филмчета ползваме в IPTV.bg за показване
на съобщения за грешки в плеърите на гледащите (внимание грозен код (:
#!/bin/bash
ext="png"
msg="invalid_request"
file="$msg.$ext"
output="$msg.asf"
seconds=10
# Create "frames"
rm -rf tmp-*.$ext &>/dev/null
for i in `seq 100 $[100+($seconds*25)]`; do
ln -sf ${file} tmp-${i}-${file}
done
mencoder \
-lavfopts i_certify_that_my_video_stream_does_not_use_b_frames \
-of lavf -lavfopts format=asf \
-ovc lavc -lavcopts vcodec=wmv2:mbd=0:aspect=4/3 \
-ofps 5 \
mf://*.png -o $output 2>&1 | grep -v ^Skipping
rm -rf tmp-*.$ext
Mencoder е настроен да генерира ASF формат с WMV2 кодек, но ако промените lavf и lavc опциите, можете да получите Xvid и AVI контейнер или нещо друго в зависимост от нуждите ви. -ofps 5 го ползвам, защото доста намалява размера на филмчето. При условие, че няма да има никакво движение 25 кадъра изобщо не са нужни, а 5 е добър баланс.
[ Коментари: 8 ]Коментари
Щото не си заслужава когато си в unix среда :)
mf://@files.list и ще си спестиш правенето на сума ти линкове;)
Също така можеш да спестиш доста ако ползваш -mf fps=1 примерно (default-а е 25) и задължително ползване на -vf harddup при смесители (muxers) различни от avi.
Не съм пробвал но fps по принцип са тип float, така че е възможно да приемат и стойности по-малки от 1 :)
С fps=1 VLC се държи странно, затова съм оставил малко повече кадри, че да не се шашка. А и mplayer доста бавно реагира на команди когато е с fps=1.
harddup
Only useful with MEncoder. If harddup is used when encoding, it will force duplicate frames to be encoded in the output. This uses slightly more space, but is necessary for output to MPEG files or if you plan to demux and remux the video stream after encoding. Should be placed at or near the end of the filter chain unless you have a good reason to do otherwise.
ама точно harddup не май искам :)
ако съм разбрал правилно във @files.list предполагам мога да напиша:
file.png
file.png
file.png
file.png
така ли?
Да, такъв е формата на files.list.
Сега направих една проба
mencoder mf://*.png -mf fps=1/30 -ofps 5 -vf scale,harddup [...]
и mencoder сам си дублира първата картинка 149 пъти (150 с оригинала).
Идеята с -mf fps 1/30 -ofps 5, е че mencoder взима входно видео с честота 1/30 кадъра в секунда (тоест 1 кадър на 30 секунди) и дублира кадрите докато достигне -ofps 5 изходна честота от пет кадъра в секунда. Картинките се дублират след декодирането им (в случая и след смяната на цветовия формат) което е максимално оптимално.
Можеш да ползваш и -ofps 30 (или произволна друга стойност). encoder-ът е достатъчно умен да забележи че няма движение и да компенсира кадрите. Можеш да добавиш -lavcopts vhq:trell:mv0:cbp за по-сигурно (mv0 пробва първо нулев вектор на движение, но изисва mbd>0/vhq, cbp - coded block pattern, пропуска кодирането на блокове с разлики под зададен праг, trell е необходим за анализа на cbp). Моите тестове не показаха значително подобрение, само значително забавяне ;)
Последния абзац от предишния ми коментар можеш да го игнорираш,(аз бих го изтрил ;)
Лесна работа, ама не разбрах защо? На мен ми изглежда напълно смислен като го прочетох.
Защото независимо колко малък е кадъра, ofps 30 ще бъде 6 пъти по-голям от ofps 5, просто защото ще има 6 пъти повече кадри.
В avi има един трик, записва се frame с големина 0, което показва че предишния кадър се повтаря. Точно защото този трик се ползва от mencoder се налага употребата на harddup.
Disclaimer: Except where otherwise noted all opinions expressed here are personal
opinions of the author and do not reflect official opinions of my employer or
any other person, company or organization associated with the author.
Copyright: Except where otherwise noted the content of this site is licensed under a
Creative Commons Attribution License. Текстът на договора за ползване на български
Copyright (cc) 2003-2011 Georgi Chorbadzhiyski. Some rights reserved.
Comments, texts and pictures not signed by me are property of their respective owners.
Страницата е генерирана от Glog v3.99-test
Мда, грозно си е - и аз ползвах такова нещо, за да направя фоновете, които вървяха докато нямаше живо предваване за оpenfest и т.н... Винаги съм се чудел що няма възможност 'хвани ей-тая картинка и я сложи 300 пъти' например.
Написа Васил Колев (www) на 12-Apr-2007 11:53