Record two session from same StreamMixerCreate

Started by thsorensen, January 24, 2019, 10:34:24 PM

Previous topic - Next topic

thsorensen

I'm trying to record two sessions from an internet stream.

I'm able to start recording to both files, but when I'm stopping recording#1, the other recording is stopping as well.


I start the stream with btnLoad.
Then clicking btnRestart1, followed by btnRestart2.
This will start recording to c:\data\zz.mp3 and c:\data\zz2.mp3.

After a couple of seconds, I press btnRestart1 again, this causes the studioSoundRecorder2 to ALSO stop recording.

Maybe this is clearer with this code:


    Dim smc1 As Short = 0
    Dim smc2 As Short = 0

  Private Sub btnLoad_Click(sender As Object, e As EventArgs) Handles btnLoad.Click
            audioDjStudio1.InitSoundSystem(1, 0, 0, 0, 0, -1)

            audioDjStudio1.LoadInternetStream(0, "URL")

            smc1 = audioDjStudio1.StreamMixerCreate(0, 48000, 2) 'always get 3000 here
            audioDjStudio1.StreamMixerPlayerAdd(smc1, 0)

            ' smc2 = audioDjStudio1.StreamMixerCreate(0, 48000, 2) 'always get 3001 here, but do not get any sound from this ID.
            ' audioDjStudio1.StreamMixerPlayerAdd(smc2, 0)

            audioSoundRecorder1.EncodeFormatForRecording = AudioSoundRecorder.enumEncodingFormats.ENCODING_FORMAT_MP3
            audioSoundRecorder1.EncodeMp3Mode = enumMp3EncodeModes.MP3_ENCODE_CBR
            audioSoundRecorder1.EncodeMp3CBR = 48000

            audioSoundRecorder2.EncodeFormatForRecording = AudioSoundRecorder.enumEncodingFormats.ENCODING_FORMAT_MP3
            audioSoundRecorder2.EncodeMp3Mode = enumMp3EncodeModes.MP3_ENCODE_CBR
            audioSoundRecorder2.EncodeMp3CBR = 48000
        End Sub

        Private Sub btnRestart1_Click(sender As Object, e As EventArgs) Handles btnRestart1.Click
            audioSoundRecorder1.Stop()
            audioSoundRecorder1.StartFromDjStudioMixer(smc1, "c:\data\zz.mp3")
        End Sub

        Private Sub btnRestart2_Click(sender As Object, e As EventArgs) Handles btnRestart2.Click
            audioSoundRecorder2.Stop()
            audioSoundRecorder2.StartFromDjStudioMixer(smc1, "c:\data\zz2.mp3") 'tried using smc2 here, but I'm not getting any sound.
        End Sub


Anyone have a clue what might be wrong?


---
Thomas

Administrator

#1
Hello Thomas,

due to the internal architecture, there are the following limitations that apply to your code:
- a single instance of the DJ studio component cannot create multiple stream mixers: only one is allowed.
- you can record from a specific stream mixer using one single instance of the recorder only
- a player can be attached to a single stream mixer only

We have verified that these points are not well documented so we will have to update the documentation accordingly.

Anyway, in order to achieve what you are trying to do, you should use a second instance of Audio DJ Studio and a code similar to the one below:


Dim smc1 As Short
Dim smc2 As Short
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AudioDjStudio1.InitSoundSystem(1, 0, 0, 0, 0, -1)
AudioDjStudio2.InitSoundSystem(1, 0, 0, 0, 0, -1)
AudioSoundRecorder1.InitRecorder(0, -1)
AudioSoundRecorder2.InitRecorder(0, -1)

smc1 = AudioDjStudio1.StreamMixerCreate(0, 48000, 2) 'always get 3000 here
AudioDjStudio1.StreamMixerPlayerAdd(smc1, 0)

smc2 = AudioDjStudio2.StreamMixerCreate(0, 48000, 2)
AudioDjStudio2.StreamMixerPlayerAdd(smc2, 0)

AudioDjStudio1.LoadInternetStream(0, strURL)
AudioDjStudio2.LoadInternetStream(0, strURL)

AudioSoundRecorder1.EncodeFormatForRecording = AudioSoundRecorder.enumEncodingFormats.ENCODING_FORMAT_MP3
AudioSoundRecorder1.EncodeMp3Mode = enumMp3EncodeModes.MP3_ENCODE_CBR
AudioSoundRecorder1.EncodeMp3CBR = 48000

AudioSoundRecorder2.EncodeFormatForRecording = AudioSoundRecorder.enumEncodingFormats.ENCODING_FORMAT_MP3
AudioSoundRecorder2.EncodeMp3Mode = enumMp3EncodeModes.MP3_ENCODE_CBR
AudioSoundRecorder2.EncodeMp3CBR = 48000

ButtonStart1.Enabled = False
ButtonStart2.Enabled = False
End Sub

Private Sub AudioDjStudio1_StreamLoaded(ByVal sender As System.Object, ByVal e As AudioDjStudio.StreamLoadedEventArgs) Handles AudioDjStudio1.StreamLoaded
AudioDjStudio1.PlaySound(0)
ButtonStart1.Enabled = True
End Sub

Private Sub AudioDjStudio2_StreamLoaded(ByVal sender As System.Object, ByVal e As AudioDjStudio.StreamLoadedEventArgs) Handles AudioDjStudio2.StreamLoaded
AudioDjStudio2.PlaySound(0)
ButtonStart2.Enabled = True
End Sub

Private Sub ButtonStart1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonStart1.Click
AudioSoundRecorder1.Stop()
AudioSoundRecorder1.StartFromDjStudioMixer(smc1, "c:\zz.mp3")
End Sub

Private Sub ButtonStart2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonStart2.Click
AudioSoundRecorder2.Stop()
AudioSoundRecorder2.StartFromDjStudioMixer(smc2, "c:\zz2.mp3")
End Sub


Hope this helps

Kind regards

Severino Delaurenti
MultiMedia Soft