Differenze tra le versioni di "Ottenere informazioni generali su flussi multimediali con le funzioni esterne del API di Quvi"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "La libreria '''libquvi''' analizza gli URL dei flussi multimediali per le applicazioni Internet che altrimenti dovrebbero utilizzare la piattaforma multimediale ''flash Adobe'...")
 
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 3: Riga 3:
 
Mediante la libreria ''libquvi'' è possibile anche ottenere alcune informazioni generali inerenti ai predetti flussi multimediali.
 
Mediante la libreria ''libquvi'' è possibile anche ottenere alcune informazioni generali inerenti ai predetti flussi multimediali.
  
E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "''libquvi.so.7.0.1''"
+
E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "''libquvi.so.7.0.1'' ".
 
 
  
 
Mostriamo un semplice esempio pratico:
 
Mostriamo un semplice esempio pratico:
  Library "libquvi"
+
  Library "libquvi:7.0.1"
 
   
 
   
 
  Private Const QUVI_OK As Integer = 0
 
  Private Const QUVI_OK As Integer = 0
Riga 91: Riga 90:
 
  '''Private''' Procedure GestioneErrore(q As Pointer, err As Integer)
 
  '''Private''' Procedure GestioneErrore(q As Pointer, err As Integer)
 
    
 
    
   If err > QUVI_OK Then  
+
  Dim s As String = String@(quvi_strerror(q, err))
 +
 
 +
   If err > QUVI_OK Then
 
     quvi_close(VarPtr(q))
 
     quvi_close(VarPtr(q))
     Error.Raise("Errore: " & String@(quvi_strerror(q, err)))
+
     Error.Raise("Errore: " & s)
 
   Endif
 
   Endif
 
    
 
    
 
  '''End'''
 
  '''End'''
 
  
  

Versione attuale delle 20:21, 28 dic 2021

La libreria libquvi analizza gli URL dei flussi multimediali per le applicazioni Internet che altrimenti dovrebbero utilizzare la piattaforma multimediale flash Adobe per accedere a tali flussi. Esempi tipici sono i diversi host multimediali, come YouTube, per i video che utilizzano questa "piattaforma multimediale" per fornire i loro contenuti.

Mediante la libreria libquvi è possibile anche ottenere alcune informazioni generali inerenti ai predetti flussi multimediali.

E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "libquvi.so.7.0.1 ".

Mostriamo un semplice esempio pratico:

Library "libquvi:7.0.1"

Private Const QUVI_OK As Integer = 0
Private Const QUVIPROPERTY_STRING As Integer = 1048576
Private Const QUVIPROPERTY_LONG As Integer = 2097152
Private Const QUVIPROPERTY_DOUBLE As Integer = 3145728

' QUVIcode quvi_init(quvi_t *session)
' Creates a new session.
Private Extern quvi_init(session As Pointer) As Integer

' char *quvi_strerror(quvi_t 	session, QUVIcode code)
' Returns a corresponding error message to the return code.
Private Extern quvi_strerror(session As Pointer, code As Integer) As Pointer

' QUVIcode quvi_parse(quvi_t session, char *url, quvi_media_t *media)
' Parses an URL.
Private Extern quvi_parse(session As Pointer, url As String, media As Pointer) As Integer

' QUVIcode quvi_getprop(quvi_media_t media, QUVIproperty property, ...)
' Returns a media property.
Private Extern quvi_getprop(media As Pointer, _property As Integer, prop As Pointer)

' void quvi_parse_close(quvi_media_t *media)
' Releases a previously allocated media handle.
Private Extern quvi_parse_close(media As Pointer)

' void quvi_close(quvi_t *session)
' Closes a previously started session.
Private Extern quvi_close(session As Pointer)


Public Sub Main()
 
 Dim qu, qm, p As Pointer
 Dim qc As Integer
 Dim url As String
 Dim f As Float
 Dim l As Long
 
 url = "https://www.youtube.com/watch?v=Gu9sqZZOiR0"
 
 qc = quvi_init(VarPtr(qu))
 GestioneErrore(qu, qc)
 
 qc = quvi_parse(qu, url, VarPtr(qm))
 GestioneErrore(qu, qc)
 
' Estrae alcune proprietà del flusso multimediale prescelto:
 quvi_getprop(qm, QUVIPROPERTY_STRING + 1, VarPtr(p))
 Print "Host (or website) ID: "; String@(p)
 quvi_getprop(qm, QUVIPROPERTY_STRING + 2, VarPtr(p))
 Print "Page URL:             "; String@(p)
 quvi_getprop(qm, QUVIPROPERTY_STRING + 3, VarPtr(p))
 Print "Page title:           "; String@(p)
 quvi_getprop(qm, QUVIPROPERTY_STRING + 4, VarPtr(p))
 Print "Media ID:             "; String@(p)
 quvi_getprop(qm, QUVIPROPERTY_STRING + 5, VarPtr(p))
 Print "Media URL:            "; String@(p)
 quvi_getprop(qm, QUVIPROPERTY_DOUBLE + 6, VarPtr(f))
 Print "Media content length: "; f; " byte"
 quvi_getprop(qm, QUVIPROPERTY_STRING + 7, VarPtr(p))
 Print "Media content-type:   "; String@(p)
 quvi_getprop(qm, QUVIPROPERTY_STRING + 8, VarPtr(p))
 Print "File suffix:          "; String@(p)
 quvi_getprop(qm, QUVIPROPERTY_LONG + 9, VarPtr(l))
 Print "Last response code:   "; l
 quvi_getprop(qm, QUVIPROPERTY_STRING + 10, VarPtr(p))
 Print "Requested format:     "; String@(p)
 quvi_getprop(qm, QUVIPROPERTY_STRING + 11, VarPtr(p))
 Print "Start time for media: "; String@(p)
 quvi_getprop(qm, QUVIPROPERTY_STRING + 12, VarPtr(p))
 Print "Media thumbnail URL:  "; String@(p)
 quvi_getprop(qm, QUVIPROPERTY_DOUBLE + 13, VarPtr(f))
 Print "Media duration:       "; Date(0, 0, 0, 0, 0, 0, f)
 
 quvi_parse_close(VarPtr(qm))
 quvi_close(VarPtr(qu))
  
End


Private Procedure GestioneErrore(q As Pointer, err As Integer)
 
 Dim s As String = String@(quvi_strerror(q, err))
 If err > QUVI_OK Then
   quvi_close(VarPtr(q))
   Error.Raise("Errore: " & s)
 Endif
 
End


Riferimenti