MP3 to WAV Converter.... per CMD
Verfasst: 28.05.2015 10:28
Hi, kennt jemand einen Konverter von MP3 nach WAV... aber der sollt per Shell aufgerufen werden, quasi COMMAND LINE TOOL ??
Das deutsche PureBasic-Forum
http://forums.purebasic.com/german/
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"
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)
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)
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)
Jedes mal.Tommy hat geschrieben:Er heißt Nic, nicht Nick!