Hallo,
ich habe mich heute mal hingesetzt, und habe ein Nautilusskript geschrieben, welches flv, mpg und avi hinundher konvertiert.
Es funktioniert allerdings nur richtig, wenn der Audio-Support bei ffmpeg besteht.
Dies erreicht man indem man den Quellcode von ffmpeg mit
./configure --enable-libmp3lame
bzw. "--enable-libfaad" oder "--enable-libfaac" konfiguriert. Sonst hat man halt kein Audio ☺ , seltsamerweise fehlt der Support beim ffmpeg von Ubuntu.
Funktioniert soweit auch ganz gut.
Es gibt aber noch 3 Sachen zu tun bei denen ich Hilfe brauche:
1.) Ich bekomme keinen Fortschrittsbalken ganz am Ende hin (also voletzte Zeile). Ich dachte an awk... leider verstehe ich dieses Programm nicht. Ausserdem müsste ich ja die Gesamtgröße wissen dafür, die gibt mir ffmpeg aber nicht aus. Geht das überhaupt?
Edit: Oh Gott, bin ich ein Idiot... Ich habs vergessen abzufragen...... nevermind 😳
->2.) Irgendwie erkennt er die mpg's nicht an. Also das "is_mpg()" funktioniert nicht....was ich so überhaupt nicht verstehe. Die anderen beiden laufen.←
3.) allgemeines "Drüberschauen", da bestimmt hunderte bugs drinn sind 😳 .
Für Verbesserungsvorschläge wäre ich dankbar.
Ich habe mich btw. beim posten für die Variant unten entschieden... ist vielleicht ein wenig viel, kann ich auch Sachen uploaden damit mans per Forum runterladen kann? Wenn ja: wie? ICh finde hier nix. Wenns geht, werd ich das besser machen.
Edit: ach ja. Kleine Anleitung zum Installieren:
Am besten (so denke ich) den Code nehmen und in ein File packen... und eine passenden Namen finden.. bei mir heißst es "VideoConvert".
Diese Datei nach "/usr/share/nautilus-scripts" kopieren (Root rechte!), und dann per
nautilus-script-manager enable 'NameVomSkript'
aktivieren. Nautlilus neu starten, und schon ists da 😀
Grüße DaWi
ps: ich habe die Fähigkeiten von ffmpeg deutlich eingeschränkt, da sonst das Skript unbenutzbar wäre....es gibt ja tausende von Parametern die man noch abfragen könnte, ich denke aber ich habe die wichtigsten abgedeckt.
pps: Bei den Texten habe ich mir nicht allzu viel Mühe gemacht.... 😈
ppps: Ein Hinweis, wenn ihr das ausprobiert, solltet ihr nicht allzu große z.B. avis oder xvids in flv konvertierten... das dauert nämlich ein Weilchen...
#!/bin/bash #Script for video converting set -x #The translation... and the Default, sure :D warning="warning" noselec="A file is requiered" not_supported="The format od this video is not supported" ffmpeg_not_installed='ffmpeg is not installed on your system. Please install it.' noaudio='No audio support. To enable it deinstall ffmepeg and get the ffmpeg source and type: "./configure --enable-libmp3lame", or libfaad or libfaac, then make and sudo make install ' Audiooptions='audio options' videooptions='video options' want_to_differ='Choose where you wnat to differ from the default settings' settings='settings' bitrate='bitrate' fps='frames per second' size='size' width='width' height='height' text_asking='Please enter the Value of' output_text='Which output format you want?' format='format' name_of_output_text='Name of OutPut-File (without e.g. *.mpg)' name_of_output_title='Name of output' case $LANG in de* ) warning="Warnung" noselec="Ein File muss angewählt sein" not_supported="Dieses Videoformat kann nicht konvertiert werden." ffmpeg_not_installed='ffmpeg ist nicht installiert. Bitte installieren sie das Programm.' noaudio='Kein Audiounterstützung. Um diese zu aktivieren, müssen Sie ffmpeg deinstallieren und den ffmpeg-Quellcode laden und "./configure --enable-libmp3lame", oder libfaad oder libfaac eingeben, dann make und sudo make install' Audiooptions='Audio-Optionen' videooptions='Video-Optionen' want_to_differ='Hier können Sie wählen, wo Sie von den Defaulteinstellungen abweichen wollen' settings='Einstellungen' bitrate='Bitrate' fps='Framerate' size='Ausdehnung' width='Breite' height='Höhe' text_asking='Bitte geben Die den Wert ein für' output_text='Welches Ausgabeformat wünschen Sie?' format='Format' name_of_output_text='Names des OutPut-Files (ohne Endung z.B. *.mpg)' name_of_output_title='Name des Outputfiles' esac #Functions is_mpg () { file -b "$1" | grep 'MPEG' || echo $1 | grep -i '\.mpg$' } is_avi () { file -b "$1" | grep 'AVI' || echo $1 | grep -i '\.avi$' } is_flv () { file -b "$1" | grep 'Macromedia' || echo $1 | grep -i '\.flv$' } test_zenity_output() { if [ $? -eq 1 ] then rm VideoConvert.tmp exit 1 fi } #WARNING: # I use everytime the variable GetPar. # so if you want to use this function, make sure you don't need GetPar anymore #!!!!!!!!!!!! get_value_to_GetPar() { if [ $# -lt 2 ] then break fi answer=$(zenity --entry --title "" --text "$text_asking $1 ") if [ $? -eq 1 ] then return 1 else GetPar=$GetPar$2$answer return 0 fi } #Programm #enough info? if [ $# -eq 0 ]; then zenity --error --title="$warning" --text="$noselec" exit 1 fi #supported? #EDIT: forgot the '!(is_mpg "$1")', now it works if !( is_avi "$1") && !(is_flv "$1") && !(is_mpg "$1") then zenity --error --title="$warning" --text="$not_supported" exit 1 fi #ffmpeg there? if !(which ffmpeg 2>/dev/null) then zenity --error --title="$warning" --text="$ffmpeg_not_installed" exit 1 fi #Output choosing zenity --list --radiolist --text "$output_text" --column "" --column "$format" True "mpeg" False "flv" False "avi" > VideoConvert.tmp test_zenity_output if (cat VideoConvert.tmp | grep "mpeg") then output=".mpg" elif (cat VideoConvert.tmp | grep "flv") then output=".flv" elif (cat VideoConvert.tmp | grep "avi") then output=".avi" else exit 1 fi rm VideoConvert.tmp #ask for audiosupport #lame? if (ffmpeg --version 2>&1 | grep 'enable-libmp3lame') then lame='False lame' fi #faad? if (ffmpeg --version 2>&1 | grep 'enable-libfaad') then faad='False faad' fi #faac? if (ffmpeg --version 2>&1 | grep 'enable-libfaac') then faac='False faac' fi #Audio possible? if !(ffmpeg --version 2>&1 | grep 'enable-libmp3lame') && \ !(ffmpeg --version 2>&1 | grep 'enable-libfaad') && \ !(ffmpeg --version 2>&1 | grep 'enable-libfaac') then zenity --warning --title="$warning" --text="$noaudio" fi #SetAudioOptions zenity --list --radiolist --title "$Audiooptions" --column "" --column "Audiocodecs" True "Default" $faad $lame $faac > VideoConvert.tmp test_zenity_output if (cat VideoConvert.tmp | grep "Default") then audio=" " elif (cat VideoConvert.tmp | grep "lame") then audio=" -acodec libmp3lame " elif (cat VideoConvert.tmp | grep "faad") then audio=" -acodec libfaad " elif (cat VideoConvert.tmp | grep "faac") then audio=" -acodec libfaac " else exit 1 fi rm VideoConvert.tmp #SetVideoOptions zenity --list --checklist --title "$videooptions" --text "$want_to_differ" --column "" --column "$settings" False "$bitrate" False "$fps" False "$size" > VideoConvert.tmp test_zenity_output Video=" " GetPar=" " if ( cat VideoConvert.tmp | grep "$bitrate" ) then get_value_to_GetPar "$bitrate" '-b ' fi GetPar=$GetPar" " if ( cat VideoConvert.tmp | grep "$fps" ) then get_value_to_GetPar "$fps" '-r ' if [ 1 -eq $? ] then GetPar=$GetPar" -r ntsc " fi else GetPar=$GetPar" -r ntsc " fi GetPar=$GetPar" " if ( cat VideoConvert.tmp | grep "$size" ) then get_value_to_GetPar "$width" '-s ' if [ $? -eq 0 ] then get_value_to_GetPar "$height" 'x' fi fi GetPar=$GetPar" " Video=$Video$GetPar rm VideoConvert.tmp name_of_output=$(zenity --file-selection --save --confirm-overwrite) test_zenity_output if (echo $name_of_output | grep "$output" ) then ffmpeg -i $1 $Video $audio "$name_of_output" else ffmpeg -i $1 $Video $audio "$name_of_output"$output fi