MP3 to WAV Converter.... per CMD

Probleme beim Erstellen von 3D-Modellen und Texturen, keine Ahnung womit man Musik macht? Dies ist dein Forum.
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

MP3 to WAV Converter.... per CMD

Beitrag von Then »

Hi, kennt jemand einen Konverter von MP3 nach WAV... aber der sollt per Shell aufgerufen werden, quasi COMMAND LINE TOOL ??
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: MP3 to WAV Converter.... per CMD

Beitrag von RSBasic »

Kannst du in deiner Signatur dazu schreiben, ob du grundsätzlich Windows, Linux oder MacOS benutzt?
Nicht, dass ich dir eine Windows-Anwendung empfehle, obwohl du ein Linux-User bist.
Danke im Voraus.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: MP3 to WAV Converter.... per CMD

Beitrag von RSBasic »

http://www.chip.de/downloads/FFmpeg_35368574.html oder http://www.ffmpeg.org/

Diese Konsolenanwendung kannst du benutzen, um Dateien automatisiert zu konvertieren. Dokumentation bezüglich der Verwendung der einzelnen Parameter findest du hier: http://www.ffmpeg.org/ffmpeg.html
Beispiel-Aufrufzeile:
C:\...\ffmpeg.exe -y -i "C:\...\sound.mp3" -async 0 -vn -threads 6 -acodec pcm_s16le -ac 2 -ar 44100 -ab 1411k -af volume=630/500 -f wav "C:\...\newsound.wav"
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: MP3 to WAV Converter.... per CMD

Beitrag von Then »

Funktioniert "eigentlich" ganz gut, aber mit dem Code :

Code: Alles auswählen

InitSprite()

window=OpenWindow(#PB_Any,0,0,1024,600,"stream", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

If ReadFile( 0,datei$ )
  riff$=""
  For i=1 To 4
    riff$+Chr(ReadCharacter(0))
  Next
  gr=ReadLong(0)
  wave$=""
  For i=1 To 4
    wave$+Chr(ReadCharacter(0))
  Next
  fmt$=""
  For i=1 To 4
    fmt$+Chr(ReadCharacter(0))
  Next
  fmt_length=ReadLong(0)
  format_tag=ReadWord(0)
  channels=ReadWord(0)
  sample_rate=ReadLong(0)
  bytes_per_second=ReadLong(0)
  block_align=ReadWord(0)
  bits_per_sample=ReadWord(0)
  dat$=""
  For i=1 To 4
    dat$+Chr(ReadCharacter(0))
  Next
  data_length=ReadLong(0)
  *buffer=AllocateMemory(data_length)
  ReadData(0, *buffer, data_length)
  CloseFile(0)  
EndIf

faktor_x=data_length/1024
faktor_y.d=200/32767

If faktor_x % 2 <> 0 ;faktor_x muß durch 2 teilbar sein
  faktor_x+1
EndIf

OpenWindowedScreen(WindowID(window),0,0,1024,500,0,0,0, #PB_Screen_WaitSynchronization)

Repeat
  event=WindowEvent()
  ClearScreen(0)
  StartDrawing(ScreenOutput())
  x=0
  x1=0
  While x<data_length 
    y=PeekW(*buffer+x)
    y*faktor_y 
    LineXY( x1,250,x1,250+y,RGB(200,87,0) )
    x+faktor_x
    x1+1
  Wend   
  LineXY( 0,250,1024,250,RGB($FF,$00,$00) )
  StopDrawing()
  FlipBuffers()
Until event=#PB_Event_CloseWindow


CloseScreen()
CloseWindow(window)
lässt sich diese Wav nicht anzeigen.... wenn ich mit AnyVideoConverter diese Dateien umwandle (vom MP3 in WAV) dann gehts, dan haben die auch 1536kBit/s bei den FFM leider immer nur 1411kBit/s.... habe schon an den Werten rumgefummelt, aber ohne Wirkung, gibts nicht ein anderes Programm ??
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: MP3 to WAV Converter.... per CMD

Beitrag von RSBasic »

Es gibt viele Programme. Ist nur die Frage, ob sie Command Line unterstützen.
Die meisten Konverter sind eh alle gleich, da sie nur eine Benutzeroberfläche besitzen und auf Tools wie ffmpeg zugreifen, weil sie eben nicht das Rad neu erfinden möchten. Google einfach mal nach Konvertierungsprogrammen.

Ansonsten wenn du dir nicht sicher bist oder nicht weißt, ob sie Command Line anbieten, dann kannst du testweise mit einem beliebigen Programm eine Konvertierung durchführen.
Während einer Testkonvertierung benutzt du Process Explorer. Dort kannst du sehr gut sehen, ob dein Programm eine externe Konvertierungsanwendung wie z.B. ffmpeg ausführt mit allen übergebenen Parametern, die du kopieren und wiederverwenden kannst, falls bezüglich dieser Anwendung keine Dokumentation über Command Lines vorliegt.

Außerdem bezweifle ich, dass es an ffmpeg liegt, sondern an deinem Code (oder an den Parametern?). Die Frage "gibts nicht ein anderes Programm ??" ist meiner Meinung die falsche Vorgehensweise.
Mit welchen Parametern hast du deine Datei konvertiert?

PS: Dein Code habe ich nicht angeschaut wegen Zeitmangel.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: MP3 to WAV Converter.... per CMD

Beitrag von Then »

Also ich habe alle möglichen Parameter verändert und getestet... hier mal komplett :

Code: Alles auswählen

auswahl$="d:\1.mp3"
datei$ = "D:\1.wav"
a$="-y -i "+auswahl$+" -async 0 -vn -threads 6 -acodec pcm_s16le -ac 2 -ar 44100 -ab 1536k -af volume=630/500 -f wav "+datei$
RunProgram("d:\convert.exe ",a$,"",#PB_Program_Wait|#PB_Program_Hide)

InitSprite()

window=OpenWindow(#PB_Any,0,0,1024,600,"stream", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

If ReadFile( 0,datei$ )
  riff$=""
  For i=1 To 4
    riff$+Chr(ReadCharacter(0))
  Next
  gr=ReadLong(0)
  wave$=""
  For i=1 To 4
    wave$+Chr(ReadCharacter(0))
  Next
  fmt$=""
  For i=1 To 4
    fmt$+Chr(ReadCharacter(0))
  Next
  fmt_length=ReadLong(0)
  format_tag=ReadWord(0)
  channels=ReadWord(0)
  sample_rate=ReadLong(0)
  bytes_per_second=ReadLong(0)
  block_align=ReadWord(0)
  bits_per_sample=ReadWord(0)
  dat$=""
  For i=1 To 4
    dat$+Chr(ReadCharacter(0))
  Next
  data_length=ReadLong(0)
  *buffer=AllocateMemory(data_length)
  ReadData(0, *buffer, data_length)
  CloseFile(0)  
EndIf

faktor_x=data_length/1024
faktor_y.d=200/32767

If faktor_x % 2 <> 0 ;faktor_x muß durch 2 teilbar sein
  faktor_x+1
EndIf
If faktor_x=0
 faktor_x=1
 EndIf

OpenWindowedScreen(WindowID(window),0,0,1024,500,0,0,0, #PB_Screen_WaitSynchronization)

Repeat
  event=WindowEvent()
  ClearScreen(0)
  StartDrawing(ScreenOutput())
  x=0
  x1=0
  While x<data_length 
    y=PeekW(*buffer+x)
    y*faktor_y 
    LineXY( x1,250,x1,250+y,RGB(200,87,0) )
    x+faktor_x
    x1+1
  Wend   
  LineXY( 0,250,1024,250,RGB($FF,$00,$00) )
  StopDrawing()
  FlipBuffers()
Until event=#PB_Event_CloseWindow


CloseScreen()
CloseWindow(window)
wobei "1.mp3" irgendein MP3 Song sein kan. Problem ist, dass Faktor_x IMMER = NULL ist und dann die Schleife endlos läuft. Das Wav File kann ich problemlos abspielen, jedoch das Programm hängt in dieser While Schleife :o
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: MP3 to WAV Converter.... per CMD

Beitrag von NicTheQuick »

Du musst mal die Werte alle überprüfen, die du da ausliest. Möglicherweise ist fmt_length gar nicht 16, sondern eine höhere Zahl. In dem Fall würde der Datenbereich erst später anfangen und dann liest du eine falsche data_length aus.
Ich hatte irgendwann mal das hier geschrieben, falls dir das hilft. Da wird das LIST-Tag, was nirgendwo dokumentiert ist, auch noch raus genommen.

Code: Alles auswählen

Define filename.s = OpenFileRequester("Choose a RIFF WAVE file...", GetEnvironmentVariable("HOME") + "/", "RIFF WAVE (*.wav)|*.wav|All Files|*.*", 0)

If filename = ""
	End
EndIf

Procedure assertFileFormat(a.l, b.l, s.s = "")
	;Debug a
	;Debug b
	If (a <> b)
		MessageRequester("Wrong format", "This is not a RIFF WAVE! " + s)
		End
	EndIf
EndProcedure

Define file.i
file = ReadFile(#PB_Any, filename)
If Not file
	MessageRequester("Error opening file", "Could not open file!")
	End
EndIf

; Check if it is a RIFF WAVE file
assertFileFormat(ReadLong(file), 1179011410) ;"RIFF"
Define datasize.i = ReadLong(file)
assertFileFormat(ReadLong(file), 1163280727) ;"WAVE"
assertFileFormat(ReadLong(file), 544501094)	 ;"fmt "
Define headerSize.i = ReadLong(file)
Define dataPos.i = Loc(file) + headerSize
assertFileFormat(ReadUnicodeCharacter(file), 1, "Only PCM is supported.")	;1=PCM
Define channels.i = ReadUnicodeCharacter(file)
Define sampleRate.i = ReadLong(file)
ReadLong(file) ; ignore
Define blockSize.i = ReadUnicodeCharacter(file)
Define bits.i = ReadUnicodeCharacter(file)
assertFileFormat(channels * ((bits + 7) / 8), blockSize, "Blocksize is wrong.")
FileSeek(file, dataPos)
Define blockHeader.i = ReadLong(file)
If (blockHeader = 1414744396) ;LIST
	Define blockSize = ReadLong(file)
	FileSeek(file, blockSize, #PB_Relative)
EndIf
assertFileFormat(ReadLong(file), 1635017060, "Wrong data header.") ;data
Define dataSize.i = ReadLong(file)
Bild
Benutzeravatar
Then
Beiträge: 247
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: MP3 to WAV Converter.... per CMD

Beitrag von Then »

Also das Programm von Nick läuft ohne Fehlermeldung durch, das WAV File kann ich mit jedem Programm abspielen aber dieser andere Code erkennt die Länge scheinbar nicht.... wenn ich s mit nem anderen Programm umwandle ist das Wav File aber auch 2 MB größer und geht dann einwandfrei.... :cry:
PB 5.62 / Windows 11 64Bit (i5/32GB/240GB-SSD+3TB-HDD/1050GTX4GB) / 27" Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
Tommy
Spassvogel
Beiträge: 319
Registriert: 17.10.2013 14:36

Re: MP3 to WAV Converter.... per CMD

Beitrag von Tommy »

Er heißt Nic, nicht Nick!
PB 5.41 x64
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: MP3 to WAV Converter.... per CMD

Beitrag von NicTheQuick »

Tommy hat geschrieben:Er heißt Nic, nicht Nick!
Jedes mal. :lol:

@Then:
Du musst eigentlich nur noch dein 'AllocateMemory' und das 'ReadData' an meinen Code passend anfügen. Dann geht es. Warum die WAVs sich allerdings in 2MB Länge unterscheiden, kann ich dir auch nicht erklären.
Bild
Antworten