Archiv für den Monat: März 2011

Videos für YouTube splitten mit mplayer und ffmpeg mit einem bash script

<pre>
#!/bin/bash
# splits videos for youtube in ~15 minute parts

if [ -z "$1" ];then
        echo "usage: $0 filename"
        exit
fi

FILENAME=$1
NAME=$(echo "$FILENAME" | sed 's/\.[^\.]*$//')
EXTENSION=$(echo "$FILENAME" | sed 's/^.*\.//')
# is the same as 00:14:55
SPLITTIME=895
# starts at 0 seconds
STARTTIME=0
# runtime of the video file
#RUNTIME=$(ffprobe -pretty "$FILENAME" 2>&1 | grep duration | sed -e '1d' | awk '{ print $3 }')
RUNTIME=$(mplayer -vo dummy -ao dummy -identify "$FILENAME" 2>&1 | grep ID_LENGTH | awk -F= '{ print $2 }' | sed 's/\.[^\.]*$//')
COUNTER=1

while [ $STARTTIME -lt $RUNTIME ];do
        ffmpeg -vcodec copy -i "$FILENAME" -ss $STARTTIME -t "$SPLITTIME" "$NAME"_part"$COUNTER"."$EXTENSION"
        let COUNTER=COUNTER+1
        let STARTTIME+=$SPLITTIME
done</pre>

So schaut der Bash Code aus. Musste leider auch noch mplayer benützen weil ich mit ffprobe die Laufzeit der Datei nicht richtig herausfiltern konnte. Ansonsten das Script mit dem Videonamen als Parameter starten. Mit mplayer bekam ich nur asynchron gesplittete Dateien. Mit ffmpeg ging das besser. Außerdem sollte man beachten, dass man evtl. ffmpeg aus den Quellen kompilieren muss weil sonst möglicherweise kein MP3, AAC, AMR, MPEG-4 und H.264 (bzw. MPEG-4 AVC) geht. Wie das gemacht wird findet man auf ( http://wiki.ubuntuusers.de/ffmpeg )

./split_video.sh some_video.mp4