bass.dll - Tiel anzeigen und Wechsel

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Mütze.

    bass.dll - Tiel anzeigen und Wechsel

    Hallo@ all,

    Nachdem ich mich nun überall durchgelesen habe und ein Beispiel von bass.dll durchgelesen habe, komme ich auf keinen grünen Zweig. Selbst der Tread von Onkel R - https://www.vb-paradise.de/index.php/Thread/90040-Bass-dll-Titel-zeigen/ hat mich nich weitergeholfen.
    Ich höre einen Radiostream ab - wie im folgenden Code dar gestellt - nur, wenn der Titel vom Sender wechselt, kommt das neue Lied vom Sender nicht in meine TextBox in der Interpret ud Titel stehen.

    Für Hilfe oder Anregungen wäre ich sehr dankbar.

    Mütze

    Quellcode

    1. Private Sub PictureBox17_Click(sender As Object, e As EventArgs) Handles PictureBox17.Click
    2. Dim url As String = "http://live96.106acht.de"
    3. stream = Bass.BASS_StreamCreateURL(url, 0, BASSFlag.BASS_STREAM_AUTOFREE, Nothing, 0)
    4. Bass.BASS_ChannelPlay(stream, True)
    5. Me.TextBox2.Text = "Alster Radio - Rock"
    6. _StartTime = Date.Now.Ticks
    7. Me.Timer2.Start()
    8. Dim tagInfo As New Un4seen.Bass.AddOn.Tags.TAG_INFO(url)
    9. _stream_TagInfo = New TAG_INFO(url)
    10. If Un4seen.Bass.AddOn.Tags.BassTags.BASS_TAG_GetFromURL(stream, tagInfo) Then
    11. TextBox1.Text = tagInfo.artist.ToString & " - " & tagInfo.title.ToString
    12. End If
    13. Me.Label9.Visible = False
    14. Me.Label9.Visible = False
    15. Me.Timer5.Stop()
    16. Me.TrackBar1.Focus()
    17. End Sub


    *Topic verschoben*
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    In dem Thread ist das doch zu sehen, man braucht keinen Timer. Geschieht alles automatisch, sobald Tags verfügbar sind, bzw. diese sich ändern.

    Nachdem der stream läuft
    Einmal die Tags auslesen und anzeigen um nicht auf den Callback warten zu müssen, danach:

    VB.NET-Quellcode

    1. _stream_SYNCPROC = New SYNCPROC(AddressOf MetaSync)
    2. _stream_Synchronizer = Bass.BASS_ChannelSetSync(inet_stream, BASSSync.BASS_SYNC_META, 0, _stream_SYNCPROC, IntPtr.Zero)


    hier dann deine Anzeige updaten

    VB.NET-Quellcode

    1. Public Delegate Sub UpdateTagDelegate()
    2. Private Sub MetaSync(ByVal handle As Integer, ByVal channel As Integer, ByVal data As Integer, ByVal user As IntPtr)
    3. If _stream_TagInfo.UpdateFromMETA(Bass.BASS_ChannelGetTags(channel, BASSTag.BASS_TAG_META), False, True) Then
    4. Me.Invoke(New UpdateTagDelegate(AddressOf UpdateTagDisplay))
    5. End If
    6. End Sub
    7. Private Sub UpdateTagDisplay()
    8. tbx_Album.Text = _stream_TagInfo.album
    9. tbx_Artist.Text = _stream_TagInfo.artist
    10. tbx_Title.Text = _stream_TagInfo.title
    11. tbx_Comment.Text = _stream_TagInfo.comment
    12. tbx_Genre.Text = _stream_TagInfo.genre
    13. tbx_Year.Text = _stream_TagInfo.year
    14. tbx_Bitrate.Text = CStr(_stream_TagInfo.bitrate)
    15. tbx_Frequenz.Text = CStr(_stream_TagInfo.channelinfo.freq)
    16. tbx_Channels.Text = CStr(_stream_TagInfo.channelinfo.chans)
    17. End Sub
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „NoIde“ ()

    Spoiler anzeigen

    Quellcode

    1. Private Sub PictureBox17_Click(sender As Object, e As EventArgs) Handles PictureBox17.Click
    2. Dim url As String = "http://live96.106acht.de"
    3. Bass.BASS_ChannelPlay(stream, False)
    4. stream = Bass.BASS_StreamCreateURL(url, 0, BASSFlag.BASS_STREAM_AUTOFREE, Nothing, 0)
    5. Dim tagInfo As New Un4seen.Bass.AddOn.Tags.TAG_INFO(url)
    6. _stream_TagInfo = New TAG_INFO(url)
    7. If Un4seen.Bass.AddOn.Tags.BassTags.BASS_TAG_GetFromURL(stream, tagInfo) Then
    8. Me.TextBox1.Text = tagInfo.artist.ToString & " - " & tagInfo.title.ToString
    9. End If
    10. Me.TextBox2.Text = "Alster Radio - Rock"
    11. _StartTime = Date.Now.Ticks
    12. Me.Timer2.Start()
    13. Me.Label9.Visible = False
    14. Me.Timer5.Stop()
    15. Me.TrackBar1.Focus()
    16. End Sub
    17. Private Sub PictureBox19_Click(sender As Object, e As EventArgs) Handles PictureBox19.Click
    18. Dim url As String = "http://channels.webradio.antenne.de/lovesongs"
    19. stream = Bass.BASS_StreamCreateURL(url, 0, BASSFlag.BASS_STREAM_AUTOFREE, Nothing, 0)
    20. Bass.BASS_ChannelPlay(stream, True)
    21. Me.TextBox2.Text = "Antenne Bayern - Lovesongs"
    22. _StartTime = Date.Now.Ticks
    23. Me.Timer2.Start()
    24. Dim tagInfo As New Un4seen.Bass.AddOn.Tags.TAG_INFO(url)
    25. _stream_TagInfo = New TAG_INFO(url)
    26. If Un4seen.Bass.AddOn.Tags.BassTags.BASS_TAG_GetFromURL(stream, tagInfo) Then
    27. Me.TextBox1.Text = tagInfo.artist.ToString & " - " & tagInfo.title.ToString
    28. End If
    29. Me.Label9.Visible = False
    30. Me.Timer5.Stop()
    31. Me.TrackBar1.Focus()
    32. End Sub
    @ Morrison,

    mit einem Timer hatte ich es auch schon versucht, jedoch bin ich bei der "Lektüre" von Bass.dll - wird ja mitgeliefert - darauf gekommen, das ein Timer nicht von Nöten ist um den Meta des entsprechenden Senders auszulesen.
    Der Post vom "Meckerpott" :) .
    Doch leider auch nach heutigen zahlreichen Versuchen habe ich es nicht hinbekommen, dass sich der Inhalt verändert. Es muss aber machbar sein, wenn ich den Stream stoppe und neu starte, erscheint in meiner TextBox Titel und Interpret. Entweder bin ich zu "bekloppt" oder denke einfach zu kompliziert.

    Ich werde hier nochmals meinen Code darstellen und vielleicht begnadet sich ja der "Meckerpott" oder jemand aus dem Forum mir den Code einmal dar zu stellen. GGf. würde ich auch dafür bezahlen.
    Es gibt sicher andere Wege dieses zu realisieren, doch ich möchte gerne diesen gewissen Automatismus realisieren.

    Habe mal zwei Sender als Code angehängt.

    Im Vorfeld vielen Dank für Eure Hilfe.
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen
    Also ich habe den Code einfach mal so prepariert, das er sofort lauffähig ist. Sobald Tags verfügbar sind, werden diese in der DirektAusgabe angezeigt, wie auch wenn diese sich ändern. Lass den Stream einfach mehrere Minuten laufen, die Tags werden meist nur beim Liedwechsel geändert, gibt aber auch Ausnahmen.

    VB.NET-Quellcode

    1. Imports Un4seen.Bass
    2. Imports Un4seen.Bass.Misc
    3. Imports Un4seen.Bass.AddOn.Tags
    4. Public Class Form1
    5. Private Delegate Sub UpdateTagDelegate()
    6. Private StreamHandle As Integer
    7. Private Url As String = "http://shoutcast.aplus.by:9000/aplus_deep_32"
    8. Private MetaTag As TAG_INFO
    9. Private Callback As SYNCPROC
    10. Private SyncHandle As Integer
    11. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
    12. Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, Nothing)
    13. Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PREBUF, 500)
    14. Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PLAYLIST, 1)
    15. Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_BUFFER, 1000)
    16. StreamHandle = Bass.BASS_StreamCreateURL(Url, 0, BASSFlag.BASS_STREAM_AUTOFREE, Nothing, Nothing)
    17. If StreamHandle <> 0 Then
    18. MetaTag = New TAG_INFO(Url)
    19. If BassTags.BASS_TAG_GetFromURL(StreamHandle, MetaTag) Then
    20. TagOutput()
    21. End If
    22. Callback = New SYNCPROC(AddressOf MetaSync)
    23. SyncHandle = Bass.BASS_ChannelSetSync(StreamHandle, BASSSync.BASS_SYNC_META, 0, Callback, Nothing)
    24. Bass.BASS_ChannelPlay(StreamHandle, False)
    25. End If
    26. End Sub
    27. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    28. Bass.BASS_ChannelRemoveSync(StreamHandle, SyncHandle)
    29. Bass.BASS_ChannelStop(StreamHandle)
    30. Bass.BASS_StreamFree(StreamHandle)
    31. Bass.BASS_Free()
    32. End Sub
    33. Private Sub MetaSync(ByVal handle As Integer, ByVal channel As Integer, ByVal data As Integer, ByVal user As IntPtr)
    34. If MetaTag.UpdateFromMETA(Bass.BASS_ChannelGetTags(channel, BASSTag.BASS_TAG_META), False, True) Then
    35. Me.Invoke(New UpdateTagDelegate(AddressOf TagOutput))
    36. End If
    37. End Sub
    38. Private Sub TagOutput()
    39. Dim album As String = MetaTag.album
    40. If String.IsNullOrWhiteSpace(album) Then
    41. album = "N A"
    42. End If
    43. Dim artist As String = MetaTag.artist
    44. If String.IsNullOrWhiteSpace(artist) Then
    45. artist = "N A"
    46. End If
    47. Dim title As String = MetaTag.title
    48. If String.IsNullOrWhiteSpace(title) Then
    49. title = "N A"
    50. End If
    51. Debug.WriteLine(String.Format("Album: {1}{0}Artist: {2}{0}Title: {3}{0}{0}###############################{0}{0}", vbNewLine, album, artist, title))
    52. End Sub
    53. End Class
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „NoIde“ ()

    @ Meckerpott

    Sehr vielen Dank für Deine Hilfe, habe Deinen Code entsprechend meinen Bedürfnissen umgebaut und siehe es läuft. leider hast Du die Variable mit dem Sender gleich mit eingesetzt, so dass ich nur die Möglichkeit habe diesen Sender zu hören, ich möchte aber auf Klicken einer PictureBox einen anderen Sender hören. Versucht habe ich auch, die Variable umzubennen und dann z.B. bei PictureBox17 den Stream zu starten. Zwei Bilder anbei.

    Im Grunde möchte ich, wie auf den Bildern zu sehen, bei einem Klick auf die PictureBox, dass der Stream startet und logischerweisse nach Deinem - vielen Dank für Deine Arbeit - sich der Sender wechselt, also muss ich die Variable, welche Du gleich mit der entsprechenden Streamadresse eingesetzt hast ändern. Heute leider ohne Erfolg - meine Frage, weisst Du einen Rat dafür?

    Vielen Dank

    Mütze
    Bilder
    • snip1.PNG

      380,05 kB, 862×803, 220 mal angesehen
    • snip2.PNG

      512,33 kB, 867×813, 190 mal angesehen
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen
    Die Variable ist doch OK. Warum denn nicht einfach beim klick auf die Picturebox den Stream stoppen, Url einen neuen Wert zuweisenUrl = "die neue Url" und wieder abspielen? Mal nebenbei, deine Art die Sender statisch einzubauen macht wenig Sinn, solltest das dynamisch machen, dann ist das leichter zu pflegen. Mir scheint das du einigen redundanten Code drin hast, im erweiterten Beispiel nutze ich eine Methode zum starten eines Streams, so kannst du solch vermeiden.

    VB.NET-Quellcode

    1. Imports Un4seen.Bass
    2. Imports Un4seen.Bass.Misc
    3. Imports Un4seen.Bass.AddOn.Tags
    4. Public Class Form1
    5. Private Delegate Sub UpdateTagDelegate()
    6. Private StreamHandle As Integer
    7. Private MetaTag As TAG_INFO
    8. Private Callback As SYNCPROC
    9. Private SyncHandle As Integer
    10. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
    11. If Not Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, Nothing) Then
    12. MessageBox.Show("Konnte Bass nicht initialisieren" & Environment.NewLine & Bass.BASS_ErrorGetCode().ToString())
    13. Application.Exit()
    14. End If
    15. Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PREBUF, 500)
    16. Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PLAYLIST, 1)
    17. Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_BUFFER, 1000)
    18. End Sub
    19. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    20. Bass.BASS_ChannelRemoveSync(StreamHandle, SyncHandle)
    21. Bass.BASS_ChannelStop(StreamHandle)
    22. Bass.BASS_StreamFree(StreamHandle)
    23. Bass.BASS_Free()
    24. End Sub
    25. Private Sub MetaSync(ByVal handle As Integer, ByVal channel As Integer, ByVal data As Integer, ByVal user As IntPtr)
    26. If MetaTag.UpdateFromMETA(Bass.BASS_ChannelGetTags(channel, BASSTag.BASS_TAG_META), False, True) Then
    27. Me.BeginInvoke(New UpdateTagDelegate(AddressOf TagOutput))
    28. End If
    29. End Sub
    30. Private Sub TagOutput()
    31. Dim album As String = MetaTag.album
    32. If String.IsNullOrWhiteSpace(album) Then
    33. album = "N A"
    34. End If
    35. Dim artist As String = MetaTag.artist
    36. If String.IsNullOrWhiteSpace(artist) Then
    37. artist = "N A"
    38. End If
    39. Dim title As String = MetaTag.title
    40. If String.IsNullOrWhiteSpace(title) Then
    41. title = "N A"
    42. End If
    43. Debug.WriteLine(String.Format("Album: {1}{0}Artist: {2}{0}Title: {3}{0}{0}###############################{0}{0}", Environment.NewLine, album, artist, title))
    44. End Sub
    45. Private Sub PlayStream(ByVal url As String)
    46. Bass.BASS_ChannelRemoveSync(StreamHandle, SyncHandle)
    47. Bass.BASS_ChannelStop(StreamHandle)
    48. Bass.BASS_StreamFree(StreamHandle)
    49. StreamHandle = Bass.BASS_StreamCreateURL(url, 0, BASSFlag.BASS_STREAM_AUTOFREE, Nothing, Nothing)
    50. If StreamHandle = 0 Then
    51. MessageBox.Show("Konnte nicht abspielen" & Environment.NewLine & Bass.BASS_ErrorGetCode().ToString())
    52. Else
    53. MetaTag = New TAG_INFO(url)
    54. If BassTags.BASS_TAG_GetFromURL(StreamHandle, MetaTag) Then
    55. TagOutput()
    56. End If
    57. Callback = New SYNCPROC(AddressOf MetaSync)
    58. SyncHandle = Bass.BASS_ChannelSetSync(StreamHandle, BASSSync.BASS_SYNC_META, 0, Callback, Nothing)
    59. Bass.BASS_ChannelPlay(StreamHandle, False)
    60. End If
    61. End Sub
    62. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    63. PlayStream("http://shoutcast.aplus.by:9000/aplus_deep_32")
    64. End Sub
    65. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    66. PlayStream("http://shoutcast.aplus.by:9000/aplus_deep_64")
    67. End Sub
    68. End Class
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    @ Meckerpott

    Vielen Dank für Deine außergewöhnliche Mühe + Hilfe. Gern wollte ich Dir eine hilfreiche Bewertung abgeben, konnte leider den "Button" nicht finden.
    Werde mich mal einwenig mehr mit dem Bass.dll befassen.

    Vielen Dank

    Mütze
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen

    Mütze schrieb:

    Gern wollte ich Dir eine hilfreiche Bewertung abgeben, konnte leider den "Button" nicht finden.

    ?(
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Jojo, Ad Block wars...
    Hilfreich - erfolgreich ...
    Nichts desto trotz, @Meckerpott - vielen Dank für Deine außergewöhnliche Hilfe.

    Ich habe Deinen Code entsprechend meinen Bedürfnissen angepasst und er funzt super. Vielen Dank.
    ;( Nun habe ich in diesem Code ein neues Problem, gerne möchte ich - wenn ein Lied gefällt, dieses aufnehmen. Ich habe auch die Lektüre dazu unter unseen - auch einen Beispielcode - gefunden, jedoch kann ich den Code nicht in den vorhandenen einsetzen. Auch die Anleitung von Onkel R konnte mir nicht weiterhelfen.

    Ich nutze zwei Button - Aufnehmen - Stoppen - und einen zum Abspielen. Die Datei wird auf dem Deskttop abgelegt. Auch unter Google habe ich nichts brauchbares gefunden, um einen Radiostream im mp3 Format aufzunehmen und zu speichern. Stereomix ist eingestellt, Micro aus.

    Vielleicht mag mir jemand helfen.

    Leider haben wir momentan eine sogenannte MDK Prüfung - diese findet jedes Jahr statt und die Jungs nehmen unseren Laden ganz schön auseinander - ob alles so i.O. ist, anschließend werde ich mich mehr diesem Forum widmen und ich denke in manchen Bereichen kann ich anderen Usern auch helfen.

    Also, allen einen schönen Abend :)

    Friedhelm Mütze
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mütze“ ()

    Wenn die Aufnahmen im mp3-Format gespeichert werden sollen, brauchst du Lame. Sind ja nicht alle Radiostreams im mp3-Format, so das wir direkt die Datei schreiben können. Du kannst dir hier
    lame.sourceforge.net/download.php
    den Source runterladen und selbst kompilieren oder hier schon kompiliert runterladen
    computerbild.de/?dl=1&dlcid=Wj…EotM2BLLCNARi5KR2AKYAo%3D

    Wenn du selbst kompilierst die lame.exe und die lame_enc.dll aus dem output Ordner jeweils in debug und release Ordner kopieren(Dein Radioprojekt)
    Wenn du schon kompiliert runterlädst sind in der .zip 2 weitere .zip, je 32 und 64 Bit, das entsprechende entpacken, darin sind dann die beiden Dateien, welche du kopieren musst.

    Noch diese paar Zeilen Code und gut. Vergiss nicht Imports Un4seen.Bass.AddOn.Misc!

    VB.NET-Quellcode

    1. Private LameEncoder As EncoderLAME
    2. Private Sub RecordStart()
    3. If Not Bass.BASS_ChannelIsActive(StreamHandle) = BASSActive.BASS_ACTIVE_PLAYING Then
    4. Return
    5. End If
    6. LameEncoder = New EncoderLAME(StreamHandle)
    7. LameEncoder.LAME_UseVBR = False
    8. LameEncoder.LAME_Bitrate = EncoderLAME.BITRATE.kbps_320
    9. LameEncoder.LAME_TargetSampleRate = EncoderLAME.SAMPLERATE.Hz_48000
    10. LameEncoder.LAME_Mode = EncoderLAME.LAMEMode.Stereo
    11. 'id3v2 tag für zieldatei
    12. Dim tag As New TAG_INFO()
    13. tag.tagType = BASSTag.BASS_TAG_ID3V2
    14. tag.title = "radiorecord " & Now.ToString("dd.MM.yyyy HH:mm:ss")
    15. tag.genre = "radiorecord"
    16. tag.album = "radiorecord"
    17. tag.track = "0"
    18. tag.disc = "0"
    19. tag.year = Now.Year.ToString()
    20. LameEncoder.TAGs = tag
    21. LameEncoder.OutputFile = "radiorecord" & Now.ToString("dd_MM_yyyy___HH_mm_ss") & ".mp3"
    22. 'aufnahme starten(aufzeichnung in datei)
    23. LameEncoder.Start(Nothing, IntPtr.Zero, False)
    24. End Sub
    25. Private Sub RecordStop()
    26. If Not LameEncoder Is Nothing Then
    27. If LameEncoder.IsActive Then
    28. LameEncoder.Stop()
    29. End If
    30. End If
    31. End Sub

    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „NoIde“ ()

    @Meckerpott
    Danke für Deine Hilfe, leider scheitere ich daran, dass ich drei Buttons habe. Aufnehmen - dann soll er den Stream aufnehmen. Stoppen - Aufnahme stoppen und dann noch einen Button zum Abspielen der Aufnahme.
    Vielleicht bin ich heute Morgen auch etwas zu durcheinander um den OutputFile in der Lame zu finden.

    Grüße

    Mütze
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen
    Dann wäre es gut deinen Code zu sehen, dann kann ich dir sagen ob du etwas falsch machst.

    Mütze schrieb:

    Vielleicht bin ich heute Morgen auch etwas zu durcheinander um den OutputFile in der Lame zu finden.


    Also die Aufnahmen sollten im selben Ordner wie deine .exe sein, ich habe ja einen relativen Pfad angegeben. Also im Debug-Modus sind Aufnahmen im Ordner Projektmappe/bin/debug/.

    lame.exe und lame_enc.dll in die Ordner kopiert? Ich hatte beim editieren meines Posts etwas wichtiges versehendlich entfernt, du musst auch bei un4seen.com/ die bassenc.dll runterladen und auch jeweils in den Debug/Release-Ordner kopieren. Wäre das der Fehler gewesen, würde allerdings eine Exception ausgelöst werden. Die dll hast du aufgrund deiner vorherigen Versuche, scheinbar schon dort gehabt, du hast ja keine Exception erwähnt.

    Falls du versucht hast die Aufnahme zu starten und dann erst den Stream abgespielt hast, konnte es so nicht klappen. Das liegt hier daran der Stream ins mp3-Format konvertiert wird, ohne das wir einen Mixerstream oder Pushstream verwenden. Wenn du das so haben möchtest, wie z.B. wie früher beim den Kassettendecks, also das wenn kein Ton da(also kein Radio läuft), auch Stille aufgezeichnet wird, braucht man 2 Streams, die WebradioStreams werden dann in einen weiteren Stream rein gemixt, der Stream wo rein gemixt wird, läuft dann durchgehend, wodurch dann die Aufnahme von Stille einfach so möglich ist. Wobei wenn der Webradiostream still ist, das wird aufgezeichnet, kommen ja Daten rein.(wenn kein Radio läuft ist ja nichts da was aufgezeichnet werden könnte)
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „NoIde“ ()

    @Meckerpott

    Nein, er hatte nicht gemeckert, die von dir angesprochene bassenc.dll habe ich auch runtergeladen und in die entsprechenden Ordner kopiert.
    Die Aufnahme würde ich nur starten, wenn der Stream läuft. Im Falle dass mal irgendwo ein Lied gespielt wird welches mir gefällt, kann ich es sofort aufnehmen. Aus dem Grunde den Button Aufnahme - Stoppen - Aufnahme abspielen. Bezugnehmend auf die Stille - die möchte ich nicht aufnehmen. Sicher ist dieses Bass.dll eine feine Sache und es scheint wirklich möglich zu sein, dass man damit viel machen kann.

    Wie ich Dir in einer Mail geschrieben habe, konnte ich leider meinen Code nicht hier in einen Spoiler "packen", da es zuviele Zeilen waren, aber ich gehe heute Abend mal dabei diesen abzuspecken. Ich werde Dir das Projekt mal gezippt senden, falls ich das gesamte Projekt nicht hier hochgeladen bekomme. Es muss aber doch möglich sein, mit denentsprechen Buttons zu arbeiten, oder zumindest mehrere Aufnahmen zu machen, z.B.: record 1 - record2 u.s.w. wie über +1(im code vorhanden).

    Also mal einen Versuch zu zippen...

    Ich bedanke mich im Voraus und werde mal an das Abspecken gehen - allen wünsche ich einen angenehmen Abend.

    Mütze

    Menno, hat geklappt - nicht sagen ichgehe mit Gewalt dabei - wie gesagt ich werde heute entrümpeln
    Dateien
    • Musik_1.rar

      (6,18 MB, 292 mal heruntergeladen, zuletzt: )
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen
    Ufff, also das ist alles sogar mit viel viel weniger Code machbar. Du hast nirgends die Subs RecordStart und RecordStop gecallt. Auch die ganzen PictureBoxen, warum nicht auf einen Panel machen, dann einfach den Panel ausblenden anstatt alle Boxen einzeln?

    Ich habe dir jetzt einfach mal den Code des Button für Aufnahme starten/stoppen angepasst, solltest deinen Controls auch anständige Namen geben, nächstes Jahr weist du nicht mehr welcher Button welcher ist.

    VB.NET-Quellcode

    1. Private Recording As Boolean = False
    2. Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
    3. Recording = Not Recording
    4. If Recording Then
    5. RecordStart()
    6. Timer7.Start()
    7. Else
    8. RecordStop()
    9. Timer7.Stop()
    10. End If
    11. Label5.Visible = Recording
    12. Button17.Visible = Not Recording
    13. Button19.Visible = Recording
    14. End Sub
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    @ Meckerpott

    Was soll ich sagen, außer mich herzlichst bei Dir zu bedanken. Ich habe alles noch einwenig umgebaut - Panel, den Ablageort der Datei etc.
    Klar müssen die Controls eindeutige zuweisende Namen haben, aber ich hatte einfach mal angefangen. Ist aber geändert.

    Vielen Dank für Deine Hilfe und ich werde nun mal weiter aufräumen - Code - und wünsche Dir ein restliches angenehmes Wochenende.

    Mütze
    "Das Jahresende ist kein Ende und kein Anfang, sondern ein Weiterleben mit der Weisheit, die uns die Erfahrung gelehrt hat".
    "Das Fortrücken in der Kalenderjahrzahl macht wohl den Menschen, aber nicht die Menschheit reifer". :)
    "Wer bin ich, wenn ich bin, was ich habe und dann verliere was ich habe ?"
    Wie man VisualStudio nutzt? => Visual Studio richtig nutzen