ffmpeg: Úprava videa pro Samsung F480 tocco
by LucaS on Mar.16, 2009, under Kubuntu
Cesta do práce mi trvá něco kolem hodiny jízdy autobusem. Zprůměrováno. Kdo zná dublinskou dopravu mi dá za pravdu, že hodina jízdy je v tom plepším případě (v závislosti na trafficu). Ráno půl hodiny do centra a večer hodina a půl zpět. Kromě listováním ve slovníku jsem začal sledovat seriály na svém “hloupém” Samsung F480 TOCCO. Hloupý rozuměj, bez standardního OS (symbian apod.). Tady je pár řádků jak si upravit video konkrétně na tento telefon.
Kompilování pomocí ffMpeg
Ffmpeg je konzolový video konvertor. Dokáže převádět mezi mnoha video formáty. Pokud nemáte nainstalováno, má své balíčky v repozitářích Medibuntu. Běžně bych pro konverzi použil mencoder (konvertor součástí mPlayer), ale pomocí něho se mi nepodařilo “vyjímečně” dosáhnout použitelného výsledku. Pro přehrávání v TOCCO musí mít video stopa formát ffmpeg 4 a audio stopa AAC. Dá se použít i H.263 (3gp) ale výsledek je o něco horší. Rozlišení videa nesmí přesáhnout 320×240px.
ffmpeg -i vstupni_video.avi -vcodec mpeg4 -s 320x176 -padtop 32 -padbottom 32 -acodec aac -y vystupni_video.mp4
-i vstupní video
-vcodec definování výstupního video kodeku, použil jsem mpeg4
-s Rozlišení videa, musíte uvést textovou hodnotu ve fofmátu šířka X výška v pixelech. Ffmpeg narozdíl od mencoder bohužel zatím neumí dopočítat druhou stranu, takže musíme dopočítat. Víme, že video chceme mít veliké 320×240px a výsledek po řevedení nechceme mít deformován, takže malý příklad jak dopočítat stranu:
Vstupní video máme veliké 640×350px. Použijeme vzorec (vstupní_výška / vstupní_šířka) * výstupní_šířka a dostaneme výstupní_výšku videa. Tedy: (350/640)*320. Výsledné video bude mít rozlišení 320×176. Tuto hodnotu vložíme za -s.
-padtop určení šířky horního černého pruhu do výsledné velikosti v pixelech. Pokud je šířka menší než chcete, jednoduše doplníte černé pruhy.
-padbottom určení šířky spodního černého pruhu do výsledné velikosti v pixelech
-acodec definování výstupního audio kodeku, použil jsem aac
-y výstupní video
Snažte se, aby výsledné video nebylo větší než 320×240. Při kompilování jsem se nějak přepočítal a výsledek měl 320×242px a tefon zahlásil neplatné rozlišení a video nepřehrál. Nevím, jestli záleží i na verzi firmware, testoval jsem na F480XXHF5. Zjistíte napsáním *#1234#
Převod videa o rozlišení 640×350px ve formátu MPEG-4 v3 na video ffMpeg 4 na rozlišení 320×240 bez titulků na postarší mašině ntb AcerTravelmate 4001 wlmi s procesorem Intel Pentium M715 na 1.5GHz a 1280MB DDR mi trvá cca 11 minut. Po zkonvertování má video cca 80MB z původních 344MB. Nakopírování videa do telefonu přes bluetooth trvá cca 40 minut.
Podle specifikace od Samsungu umí Tocco přehrávat video pouze při 15 fps. Takže komu záleží na velikosti videa, může ušetřit pár kB (Mb) ořezáním snímků, případně snížením bitrate. U ffmpeg je bitrate standardne 200. Moc se mi to nezdá, protože video s 30fps přehrává bez problémů, nesekaně. Nejspíš se týká 15fps při natáčení videa telefonem.
Kam dál (další články na eKloe.com):
















January 7th, 2010 on 14:35
Celkem peknej navod … dost mi pomohl. Pro konverzi videa s titulky lze pouzit kombinaci mencoder + ffmpeg. Vytvoril jsem na to nasledujici skript (Testovano na S5230):
#!/bin/sh
# Parametters variables
VIDEO_IN=”$1″
SUB_IN=”$2″
VIDEO_OUT=”$3″
# Preset variables
X_SIZE=320
Y_SIZE=192
FPS=15
A_BRATE=64
TMP_FILE=${RANDOM}${RANDOM}${RANDOM}${RANDOM}.mpg
# Show help if no parametters available
if [ -z "$*" ]
then
echo
echo “usage: sub2smsg ”
echo
exit 1
fi
# Prepare movie dimensions
mencoder ${VIDEO_IN} \
-o ${TMP_FILE} \
-sub ${SUB_IN} \
-subfont-text-scale 5 \
-ffactor 2 \
-font “/usr/share/fonts/corefonts/arial.ttf” \
-subcp cp1250 \
-vf expand=:::1::${X_SIZE}/${Y_SIZE} \
-ovc lavc \
-oac copy
# Convert with FFMPEG to mobile format
ffmpeg \
-i ${TMP_FILE} \
-vcodec mpeg4 \
-r ${FPS} \
-s ${X_SIZE}:${Y_SIZE} \
-acodec libfaac \
-ab ${A_BRATE}k \
-y ${VIDEO_OUT}
# Remove tempfile
rm -f ${TMP_FILE}
January 7th, 2010 on 14:38
Jeste mala poznamka. Audio bitrate 64 je pro poslech ponekud slaby, nicmene jsem ozkousel a S5230 vezme i vyssi hodnoty (bezne pouzivam 128). Staci zmenit cislo 64 na 128 na radku s promennou A_BITRATE:
A_BRATE=128
January 7th, 2010 on 14:40
A jeste do tretice … pouziti:
sub2smsg.sh
… nejak jsem to koukam nedopsal do toho skriptu
January 7th, 2010 on 14:41
… aha, takze dopsal, ale ono se to nezobrazilo … proste prvni parametr je vstupni video, druhy jsou vstupni titulky a treti je vystupni mp4
#-=OSi=-#