<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