Ottenere informazioni generali su flussi multimediali con le funzioni esterne del API di Quvi
Da Gambas-it.org - Wikipedia.
Versione del 13 set 2018 alle 10:17 di Vuott (Discussione | contributi) (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'...")
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" 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) If err > QUVI_OK Then quvi_close(VarPtr(q)) Error.Raise("Errore: " & String@(quvi_strerror(q, err))) Endif End