<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
Vielen Dank, ich habe sowas für Picasa gesucht, die wollen ja auch maximal 15 Minuten lange Videos haben…
Genau was ich gesucht hatte – gracias! 🙂
nice post. thanks.