Encoded 10 Sekunden von test1.mp3, nach 5 Sekunden startet test2.wav für 3 Sekunden:
Spoiler anzeigen
#include "Bass.au3"
#include "BassFX.au3"
#include "BassMix.au3"
#include "BassExt.au3"
#include "BassEnc.au3"
_BASS_Startup(@ScriptDir & "\bass.dll")
_BASS_MIX_Startup(@ScriptDir & "\bassmix.dll")
_BASS_FX_Startup(@ScriptDir & "\bass_fx.dll")
_BASS_EXT_Startup(@ScriptDir & "\bassext.dll")
_BASS_Init(0, -1, 44100, 0, "")
_BASS_Encode_Startup()
$smpl1 = _BASS_StreamCreateFile(False, @ScriptDir & "\test1.mp3", 0, 0, $BASS_STREAM_DECODE)
$smpl2 = _BASS_StreamCreateFile(False, @ScriptDir & "\test2.wav", 0, 0, $BASS_STREAM_DECODE)
$hTempo1 = _BASS_FX_TempoCreate($smpl1, $BASS_STREAM_DECODE)
_BASS_ChannelSetAttribute($hTempo1, $BASS_ATTRIB_TEMPO, 0)
_BASS_ChannelSetAttribute($hTempo1, $BASS_ATTRIB_TEMPO_PITCH, 0)
$hTempo2 = _BASS_FX_TempoCreate($smpl2, $BASS_STREAM_DECODE)
_BASS_ChannelSetAttribute($hTempo2, $BASS_ATTRIB_TEMPO, 0)
_BASS_ChannelSetAttribute($hTempo2, $BASS_ATTRIB_TEMPO_PITCH, 0)
$hMixer = _BASS_Mixer_StreamCreate(44100, 2, BitOR($BASS_MIXER_END, $BASS_STREAM_DECODE))
_BASS_Mixer_StreamAddChannel($hMixer, $hTempo1, 0)
$iBytesStart = _BASS_ChannelSeconds2Bytes($hTempo2, 5)
$iBytesLength = _BASS_ChannelSeconds2Bytes($hTempo2, 3)
ConsoleWrite(@CRLF & "! Start nach 5s = " & $iBytesStart & " bytes / spiele 3s = " & $iBytesLength & " bytes" & @CRLF & @CRLF)
_BASS_Mixer_StreamAddChannelEx($hMixer, $hTempo2, 0, $iBytesStart, $iBytesLength)
_BASS_Encode_Start($hMixer, @ScriptDir & "\test.wav", $BASS_ENCODE_PCM)
Global $tBuffer = DllStructCreate("byte[20000]")
Global $pBuffer = DllStructGetPtr($tBuffer)
$iBytesEncode = _BASS_ChannelSeconds2Bytes($hMixer, 10) ; 10 sekunden Aufnahmelänge
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $iBytesEncode Step 20000
If $i + 20000 <= $iBytesEncode Then
_BASS_ChannelGetData($hMixer, $pBuffer, 20000)
Else
_BASS_ChannelGetData($hMixer, $pBuffer, $iBytesEncode - $i)
EndIf
Next
_BASS_FREE()
[/autoit]