Portál AbcLinuxu, 2. května 2024 03:44

Převod videa do flash-compatible formátu

16.8.2010 14:15 | Přečteno: 1729× | Unix | poslední úprava: 16.8.2010 16:57

Jen malý rychlý zápis - doufám, že někomu přijde vhod :-)
Potřeboval jsem pro jeden nejmenovaný projekt najít způsob, kterým by bylo možné převést video do formátu, který mi přehraje flash přehrávač. Tento "kvalitní" software umí bohužel přehrát jen dva formáty - FLV a MPEG-4

Veškeré mé pokusy o převod videa do FLV skončily kostičkovaným nekoukatelným hnusem, takže jsem se vrhnul na převod do MP4. Po několika hodinách zkoumání a googlení jsem napsal primitivní skript, který se o vše postará.

Převod videa v DVD kvalitě je otázkou cca. hodiny v případě použití multivláknového Mencoderu, takže trpělivost, trpělivost :-) Doufám, že někomu bude užitečný.

Kdyby někdo sháněl nějaký schopný flash přehrávač, tak doporučuju xmoovStream (screenshot přiložen)


Skript pro převod videa do MP4:

#!/bin/bash

MENCODER="mencoder-mt"
TEMP="/tmp/mp4make"

function audio {
	mplayer "$1" -vo null -ao pcm:fast:file=$TEMP/audio.wav
	ffmpeg -i "$TEMP/audio.wav" "$TEMP/audio.m4a"
	rm "$TEMP/audio.wav"
	touch "$TEMP/audio-done"
}

function video {
	$MENCODER "$1" -of rawvideo -nosound -ovc x264 -x264encopts subq=1:frameref=1:bitrate=900:bframes=1:pass=1:aq-mode=1:aq-strength=1:psy-rd=1,0 -o "$TEMP/video.264"
	$MENCODER "$1" -of rawvideo -nosound -ovc x264 -x264encopts subq=6:frameref=5:bitrate=900:me=umh:partitions=all:bframes=1:me_range=16:cabac:weightb:deblock:pass=2:aq-mode=1:aq-strength=1:psy-rd=1,0 -o "$TEMP/video.264"
	touch "$TEMP/video-done"
}

[ -d $TEMP ] || mkdir -p "$TEMP"

# Audio
audio "$1" &> "$TEMP/audio.log" &

# Video
video "$1" &> "$TEMP/video.log"

# Create the mp4 file when audio and video process stopped
while ( [ ! -f $TEMP/audio-done ] || [ ! -f $TEMP/video-done ] ); do
	sleep 10
done

MP4Box -add $TEMP/video.264 -add $TEMP/audio.m4a -fps 23.976 "$2"

# Clean and exit
rm divx*.log*
rm -rf "$TEMP"

exit 0

Použití:

./mp4make.sh vstupni.avi vystupni.mp4

TODO: Dopsat podporu pro převod DVD

       

Hodnocení: 100 %

        špatnédobré        

Obrázky

Převod videa do flash-compatible formátu, obrázek 1

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

16.8.2010 14:25 Mandarinka
Rozbalit Rozbalit vše Re: Převod videa do flash-compatible formátu
Odpovědět | Sbalit | Link | Blokovat | Admin
Vidím, že nepoužíváte filtry v mencoderu a muxujete až nakonec. Tož doporučuju vybodnout se na mencoder a použít rovnou x264 (pořiďte si build z aktuální revize), které teď už mimochodem umí i měnit velikost a ořezávat.

A pro nastavení enkodéru doporučuju (no, hlavně doporučují vývojáři) používat presety. --preset medium, --slow a tak dále, podle libosti. Nejlepší ještě praktický je --preset veryslow. Touto cestou enkodér nastaví rychlostní parametry za vás, takže nehrozí, že uživatel udělá něco jako --me=hex --trellis 2 --subme 10 --ref 1. Rovněž také x264 automaticky snižuje parametry v prvním průchodu, takže se o to nemusíte starat.
Genunix avatar 16.8.2010 14:30 Genunix | skóre: 17 | blog: Memdump
Rozbalit Rozbalit vše Re: Převod videa do flash-compatible formátu
Děkuju za tipy, zkusím je prozkoumat. V práci s video formáty jsem bohužel nový.
*´¨`*.¸.·´¨`*.¸.·*´`*·>>>
16.8.2010 15:58 Mandarinka
Rozbalit Rozbalit vše Re: Převod videa do flash-compatible formátu
Jinak důležitá věc, vzhledem k tomu, že mencoder je tak trochu fosilie, ujistěte se, že máte nastaveno aq-mode=1:aq-strength=1:psy-rd=1,0 (nevím jestli jsem se trefil do syntaxe...). Protože pokud mencoder nezapne tyto psychovizuální optimalizace sám či to za něj x264 neudělá, bude video zbytečně trpět (jako s VP8, rýprýp).
Genunix avatar 16.8.2010 16:56 Genunix | skóre: 17 | blog: Memdump
Rozbalit Rozbalit vše Re: Převod videa do flash-compatible formátu
Děkuju za radu, skript upraven.
*´¨`*.¸.·´¨`*.¸.·*´`*·>>>
16.8.2010 16:42 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Převod videa do flash-compatible formátu
Odpovědět | Sbalit | Link | Blokovat | Admin
Není sice pravděpodobné, že by došlo ke kolizím, ale jeden nikdy neví, a proto doporučuju man mktemp.
Vhodné požití by bylo např. mktemp /tmp/mp4make.XXXXXX
What Big Oil knew about climate change
Genunix avatar 16.8.2010 17:06 Genunix | skóre: 17 | blog: Memdump
Rozbalit Rozbalit vše Re: Převod videa do flash-compatible formátu
Dobrý nápad, možná to pak upravím a přidám.
*´¨`*.¸.·´¨`*.¸.·*´`*·>>>
18.8.2010 05:44 zulu
Rozbalit Rozbalit vše Re: Převod videa do flash-compatible formátu
Odpovědět | Sbalit | Link | Blokovat | Admin
$MENCODER "$1" -of rawvideo -nosound -ovc x264 -x264encopts subq=1:frameref=1:bitrate=900:bframes=1:pass=1:aq-mode=1:aq-strength=1:psy-rd=1,0 -o "$TEMP/video.264"
$MENCODER "$1" -of rawvideo -nosound -ovc x264 -x264encopts subq=6:frameref=5:bitrate=900:me=umh:partitions=all:bframes=1:me_range=16:cabac:weightb:deblock:pass=2:aq-mode=1:aq-strength=1:psy-rd=1,0 -o "$TEMP/video.264"
To mi nějak nejde do hlavy...

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.