| Audio/video stream recording forums  | 
| Attention Visitor: | 
| You may have to register or log in before you can post: 
 | 
| 
 | |||||||
|     | 
|  | Thread Tools | Display Modes | 
| 
			 
			#1  
			
			
			
			
			
		 | |||
| 
 | |||
|  Using LibRTMP in VB or C# applicationHello, I'm trying to use LibRTMP in my VB application, but I can't get it to work. No matter what rtmp stream I use, it always fails to connect (RTMP_Connect). Using RTMPDump with the same rtmp stream works fine. Does anybody have any idea what's wrong? In the immediate window I always get either this message: Code: Parsing... Parsed protocol: 0 Parsed host : rtmp.website.com Parsed app : play Problem accessing the DNS. (addr: rtmp.website.com) Code: Parsing... Parsed protocol: 0 Parsed host : rtmp.website.com Parsed app : play RTMP_Connect0, failed to create socket. Error: 10093 Code: Imports System.Runtime.InteropServices
Imports System.IO
Public Class Form1
    Private m_LogCallback As New LibRTMP.LogCallback(AddressOf LogCallback)
    Private Sub LogCallback(ByVal level As LibRTMP.LogLevel, ByVal message As String)
        Debug.Print(message)
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim b(1023) As Byte
        Dim bytes_read As Integer
        Dim r As IntPtr
        LibRTMP.RTMP_LogSetLevel(LibRTMP.LogLevel.ALL)
        LibRTMP.SetLogCallback(m_LogCallback)
        r = LibRTMP.RTMP_Alloc
        If r = IntPtr.Zero Then
            MessageBox.Show("failed rtmp_alloc")
            Return
        End If
        LibRTMP.RTMP_Init(r)
        LibRTMP.RTMP_SetupURL(r, Marshal.StringToHGlobalAnsi("rtmp://whatever-stream.com"))
        '// Always fails to connect here
        If LibRTMP.RTMP_Connect(r, IntPtr.Zero) = 0 Then
            MessageBox.Show("failed to establish RTMP connection")
            Return
        End If
        If LibRTMP.RTMP_ConnectStream(r, 0) = 0 Then
            MessageBox.Show("failed to establish RTMP session")
            Return
        End If
        Using FS As New FileStream("C:\teststream.flv", FileMode.Create, FileAccess.Write)
            Do
                bytes_read = LibRTMP.RTMP_Read(r, b, b.Length)
                If (bytes_read = 0) Then Exit Do
                FS.Write(b, 0, bytes_read)
            Loop
        End Using
        LibRTMP.RTMP_Close(r)
        LibRTMP.RTMP_Free(r)
    End Sub
End ClassCode: Imports System.Runtime.InteropServices
Public Class LibRTMP
    Public Enum LogLevel
        CRIT = 0
        [ERROR]
        WARNING
        INFO
        DEBUG
        DEBUG2
        ALL
    End Enum
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function RTMP_LibVersion() As Integer
    End Function
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function RTMP_Alloc() As IntPtr
    End Function
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Sub RTMP_Free(ByVal rtmp As IntPtr)
    End Sub
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Sub RTMP_Init(ByVal rtmp As IntPtr)
    End Sub
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Sub RTMP_Close(ByVal rtmp As IntPtr)
    End Sub
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Sub RTMP_EnableWrite(ByVal rtmp As IntPtr)
    End Sub
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function RTMP_SetupURL(ByVal rtmp As IntPtr, ByVal url As IntPtr) As Integer
    End Function
    'Intptr, because memory must remain valid so use StringToHGlobalAnsi
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Sub RTMP_LogSetLevel(ByVal lvl As Integer)
    End Sub
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function RTMP_Connect(ByVal rtmp As IntPtr, ByVal cp As IntPtr) As Integer
    End Function
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function RTMP_ConnectStream(ByVal rtmp As IntPtr, ByVal seekTime As Integer) As Integer
    End Function
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function RTMP_Read(ByVal rtmp As IntPtr, ByVal buffer() As Byte, ByVal size As Integer) As Integer
    End Function
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function RTMP_Pause(ByVal rtmp As IntPtr, ByVal DoPause As Integer) As Integer
    End Function
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function RTMP_IsConnected(ByVal rtmp As IntPtr) As Boolean
    End Function
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function RTMP_IsTimedout(ByVal rtmp As IntPtr) As Boolean
    End Function
    <DllImport("librtmp.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function RTMP_HashSWF(ByVal url As String, <System.Runtime.InteropServices.Out()> ByRef size As Integer, ByVal hash() As Byte, ByVal age As Integer) As Boolean
    End Function
    <DllImport("logstub.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Function InitSockets() As Integer
    End Function
    <DllImport("logstub.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Sub CleanupSockets()
    End Sub
    <DllImport("logstub.dll", CallingConvention:=CallingConvention.Cdecl)>
    Public Shared Sub SetLogCallback(ByVal cb As LogCallback)
    End Sub
    Public Delegate Sub LogCallback(ByVal level As LogLevel, ByVal message As String)
End Class | 
| 
			 
			#2  
			
			
			
			
			
		 | |||
| 
 | |||
|  Re: Using LibRTMP in VB or C# applicationyou need to initialize winsock before calling RTMP_Connect. first error is due to invalid rtmp url and second error is due to non initialized winsock. | 
| 
			 
			#3  
			
			
			
			
			
		 | |||
| 
 | |||
|  Re: Using LibRTMP in VB or C# applicationThank you very much. It works fine now. | 
| 
			 
			#4  
			
			
			
			
			
		 | |||
| 
 | |||
|  Re: Using LibRTMP in VB or C# applicationHi,  I´m trying to get this done too (in VB 6.0) and am right now not so good at it. Would it be possible to get your Code (or a HowTo)? Would be great if you could help me. Thank you very much in advance. Student | 
| 
			 
			#5  
			
			
			
			
			
		 | |||
| 
 | |||
|  Re: Using LibRTMP in VB or C# applicationQuote: 
   Get a copy its free VISUAL BASIC 2010 EXPRESS | 
| 
			 
			#6  
			
			
			
			
			
		 | |||
| 
 | |||
|  Re: Using LibRTMP in VB or C# applicationHi Elgero, can you please post the code that was finally working for you? cheerz lorus | 
|     | 
| Tags: librtmp | 
| Thread Tools | |
| Display Modes | |
| 
 | 
 |