MP4 to MP3 Umwandeln

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Hallo,

ist es möglich mit der DS214play eine (oder mehr) mp4 Dateien in eine MP3 umzuwandeln? Gibt es da eine Software?

Danke
 

c0smo

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
7.503
Punkte für Reaktionen
1.660
Punkte
274
Mp4 ist ein Video Container, mp3 ist eine Audiodatei.
Das kann die DS nicht. Wenn dann musst du die Tonspur des mp4 Files extrahieren und das in mp3 umwandeln. Und das alles am PC /MAC.

Was ist eigentlich der Hintergrund?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Klar kann das die DS. Allerdings nicht über die GUI. Mit dem mitgelieferten ffmpeg ist das per Skript kein Problem.
Rich (BBCode):
#!/bin/sh

#------------------------- Variablen:
infolder="/volume1/homes/user/meine_Videos/" # Quellverzeichnis
outfolder="/volume1/homes/user/meine_Music/" # Zielverzeichnis

# optional Quelldateien in Papierkorb verschieben lassen / sonst leer lassen:
delfolder="/volume1/homes/user/#recycle"     # Löschverzeichnis der Quelldateien

#--------------------------------------------------
IFS=""
for i in $(find "$infolder" -name "*.mp4" -type f)
    do
        title=`basename $i`
        title=${title%.*}
        ffmpeg -i "$i" -ab 192k -vn ${outfolder}${title}.mp3
    	if [ ! -z "$delfolder" ] ; then
    	    mv "$i" "$delfolder"
    	fi
    done
 
Zuletzt bearbeitet:

c0smo

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
7.503
Punkte für Reaktionen
1.660
Punkte
274
Hab ich irgendwas falsch verstanden? Er/sie will ein Video in mp3 umwandeln? Und das ohne die Audiospur zu extrahieren und mit ffmpeg?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Sein Ziel ist der Ton vom Video. Der Weg wird ihm wahrscheinlich ziemlich egal sein - vermute ich … :)
Und ja, genau so
 
Zuletzt bearbeitet:

c0smo

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
08. Mai 2015
Beiträge
7.503
Punkte für Reaktionen
1.660
Punkte
274
Ok, hast recht. Aber von welchem Codec in der Tonspur gehst du aus? ffmpeg kommt nicht mit allem nativ klar. Oft braucht man zusätzliche encoder. Ich dachte das Paket für die DS ist abgespeckt, kann es dann nicht mit zb AAC Probleme geben?

Was spuckt "ffmpeg -version" für die DS Version aus? Schon mal geschaut?
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
… Aber von welchem Codec in der Tonspur gehst du aus? ffmpeg kommt nicht mit allem nativ klar. Oft braucht man zusätzliche encoder. Ich dachte das Paket für die DS ist abgespeckt, kann es dann nicht mit zb AAC Probleme geben? …
Es geht hier um MP4-Container. Soviele übliche Möglichkeiten gibt es da ja nicht. In der Regel wird es AAC sein und das kann ffmpeg inzwischen nativ. Zusätzliche ENcoder braucht man nur für entsprechende Zielformate. Der nötige encoder für das hier gewünschte MP3 wird mit lame mitgeliefert.
… Was spuckt "ffmpeg -version" für die DS Version aus? Schon mal geschaut?

Mit ffmpeg -codecs kann man sich noch eine schöne Liste ausgeben, die hier aber in der Formatierung schrecklich aussieht.

Rich (BBCode):
ffmpeg -version
ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease)
configuration: --prefix=/usr --incdir='${prefix}/include/ffmpeg' --arch=i686 --target-os=linux --cross-prefix=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu- --enable-cross-compile --enable-optimizations --enable-pic --enable-gpl --enable-shared --disable-static --enable-version3 --enable-nonfree --enable-libfaac --enable-encoders --enable-pthreads --disable-bzlib --disable-protocol=rtp --disable-muxer=image2 --disable-muxer=image2pipe --disable-swscale-alpha --disable-ffserver --disable-ffplay --disable-devices --disable-bzlib --disable-altivec --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --disable-vaapi --disable-decoder=amrnb --disable-decoder=ac3 --disable-decoder=ac3_fixed --disable-encoder=zmbv --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ccache-gcc --enable-yasm --enable-libx264 --enable-encoder=libx264
libavutil      54. 27.100 / 54. 27.100
libavcodec     56. 41.100 / 56. 41.100
libavformat    56. 36.100 / 56. 36.100
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 16.101 /  5. 16.101
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  2.100 /  1.  2.100
libpostproc    53.  3.100 / 53.  3.100
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Die einfachste Möglichkeit: passe die Ordnervariablen an und kopiere den Code in den Aufgabenplaner.
Dazu gehst du zur Systemsteuerung (oben rechts muss die erweiterte Ansicht aktiv sein) > Aufgabenplaner > Erstellen > Geplante Aufgabe > Benutzerdefiniertes Skript

Allgemein:
- unter 'Vorgang' einen passenden Namen vergeben
- Benutzer: ein User, der Schreibrechte in deinen angegebenen Ordnern hat (admin darf sehr vieles, root darf alles [… auch kaputt machen!] / lieber den User mit den geringsten Rechten nehmen / immer schön aufpassen, beim selbst experimentieren mit eigenem Code. Bei Unsicherheit lieber hier vorher nachfragen)
- aktiviert: sofern der Zeitplan für das automatische Starten greifen soll

Zeitplan:
- selbsterklärend

Aufgabeneinstellung:
- in das untere Textfeld kommt jetzt der Code​


Das Skript läuft jetzt nach Zeitplan, oder wenn du es in der Liste auswählst und 'ausführen' klickst.
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Hallo,

#!/bin/sh

#------------------------- Variablen:
infolder="/mein ort/" # Quellverzeichnis
outfolder="/mein ort/" # Zielverzeichnis

# optional Quelldateien in Papierkorb verschieben lassen / sonst leer lassen:
#delfolder="/volume1/homes/user/#recycle" # Löschverzeichnis der Quelldateien

#--------------------------------------------------
IFS=""
for i in $(find "$infolder" -name "*.mp4" -type f)
do
title=`basename $i`
title=${title%.*}
ffmpeg -i "$i" -ab 192k -vn ${outfolder}${title}.mp3
if [ ! -z "$delfolder" ] ; then
mv "$i" "$delfolder"
fi
done

Habe das so eingetragen und auch ausgeführt. Nur da passiert nichts. Order ist gleich ausgabe und eingabe
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
"/mein ort/" kann nicht der vollständige Pfad sein!

Mache es am einfachsten so:
Öffne die FileStation und navigiere zu dem Ordner, wo die Quelldateien liegen. Auf den Ordner klickst du rechts und gehst auf Eigenschaften. Hier wird der komplette Pfad angezeigt (beginnt mit /volume…). Den Pfad kopierst du zwischen die Anführungsstriche bei infolder. Das identische machst du mit dem Ausgabeordner und dem Löschordner.
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Hallo,
das war nur als Beispiel gemeint. Der Pfad ist

infolder="/volume2/Test/Umwandlung/" # Quellverzeichnis
outfolder="/volume2/Test/Umwandlung/" # Zielverzeichnis
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Der Ausgewählte User hat für den Ordner auch Schreibrechte?

Evtl. mal im Aufgabenplaner die Aufgabe markieren und dann Aktion > Ergebnis anzeigen
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Zeigt in den Feldern keine Daten
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Passt doch so oder?
Screenshot_2018-11-06 Server.png
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Du schreibst:
infolder="/volume2/Test/Umwandlung/" # Quellverzeichnis
outfolder="/volume2/Test/Umwandlung/" # Zielverzeichnis

Aber in deinem Skript steht:
Rich (BBCode):
… 
outfolder="/volume2/Test/Umwandlung" # Zielverzeichnis

ohne abschließenden Slash ( / ). Das wird in dem Code nicht abgefangen. Also so, wie im Beispiel mit abschließenden Slash.
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Hatte ich schon bemerkt und es einmal mit / und einmal ohne / propiert.
Funktioniert aber auch nicht.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
An was wird das wohl liegen … :confused:

Ersetze mal alles im Skript ab der Trennlinie mit dem hier (das sollte ein Log in den Quellordner schreiben):
Rich (BBCode):
#--------------------------------------------------
if [ ! -d "${outfolder}" ] || [ ! -d "${infolder}" ]; then
    echo "Pfade prüfen!" > ${outfolder}/info.log
    exit
fi  
IFS=""
for i in $(find "$infolder" -name "*.mp4" -type f)
    do
    	title=`basename $i`
        title=${title%.*}
        echo "bearbeite $i" >> ${outfolder}/info.log
        ffmpegLog=`ffmpeg -y -i "$i" -ab 192k -vn ${outfolder}/${title}.mp3 2>&1`
        echo "$ffmpegLog" >> ${outfolder}/info.log
    	if [ ! -z "$delfolder" ] ; then
    	    echo "Löschordner gefunden / Quelldateien werden dorthin verschoben" >> ${outfolder}/info.log
    	    mv "$i" "$delfolder"
    	fi
    done
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Hier der Inhalt der Log

bearbeite /volume2/Test/Umwandlung/AC_DC - Shoot To Thrill (Iron Man 2 Version).mp4
/volume2/Test/Umwandlung/AC_DC_Hells_Bells.mp4
ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease)
configuration: --prefix=/usr --incdir='${prefix}/include/ffmpeg' --arch=i686 --target-os=linux --cross-prefix=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu- --enable-cross-compile --enable-optimizations --enable-pic --enable-gpl --enable-shared --disable-static --enable-version3 --enable-nonfree --enable-libfaac --enable-encoders --enable-pthreads --disable-bzlib --disable-protocol=rtp --disable-muxer=image2 --disable-muxer=image2pipe --disable-swscale-alpha --disable-ffserver --disable-ffplay --disable-devices --disable-bzlib --disable-altivec --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --disable-vaapi --disable-decoder=amrnb --disable-decoder=ac3 --disable-decoder=ac3_fixed --disable-encoder=zmbv --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-ccache-gcc --enable-yasm --enable-libx264 --enable-encoder=libx264 --enable-libh264_smd --enable-smd --disable-filter=hqdn3d --extra-libs='-lgdl -losal -lpal -lsven -lismd_core -lismd_audio -lismd_viddec -lismd_videnc -lismd_vidpproc -lplatform_config -lffmpeg_plugin -ljson-c '
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 41.100 / 56. 41.100
libavformat 56. 36.100 / 56. 36.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 16.101 / 5. 16.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100
/volume2/Test/Umwandlung/AC_DC - Shoot To Thrill (Iron Man 2 Version).mp4
/volume2/Test/Umwandlung/AC_DC_Hells_Bells.mp4: No such file or directory
 

marlow

Benutzer
Mitglied seit
08. Jan 2015
Beiträge
265
Punkte für Reaktionen
11
Punkte
18
Ah, der macht immer nur einen File.
Ich hatte mehr als einen in dem Verzeichnis.
Also mit einer Datei hat es jetzt funktioniert, aber nicht komplett. Das Lied geht 5:22 min aber verarbeitet hat er nur 1:22 min
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat