Portál AbcLinuxu, 30. dubna 2025 16:50
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
Tiskni
Sdílej:
man mktemp
.mktemp /tmp/mp4make.XXXXXX
$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...
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.