Differenze tra le versioni di "Ottenere informazioni generali su flussi multimediali con le funzioni esterne del API di Quvi"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 46: | Riga 46: | ||
Dim l As Long | Dim l As Long | ||
− | url = "https://www.youtube.com/watch?v=Gu9sqZZOiR0" | + | url = "<FONT Color=darkgreen>https://www.youtube.com/watch?v=Gu9sqZZOiR0</font>" |
qc = quvi_init(VarPtr(qu)) | qc = quvi_init(VarPtr(qu)) | ||
Riga 80: | Riga 80: | ||
Print "Media thumbnail URL: "; String@(p) | Print "Media thumbnail URL: "; String@(p) | ||
quvi_getprop(qm, QUVIPROPERTY_DOUBLE + 13, VarPtr(f)) | quvi_getprop(qm, QUVIPROPERTY_DOUBLE + 13, VarPtr(f)) | ||
− | Print "Media duration: "; | + | Print "Media duration: "; Time(0, 0, 0, f) |
quvi_parse_close(VarPtr(qm)) | quvi_parse_close(VarPtr(qm)) | ||
Riga 89: | Riga 89: | ||
Private Procedure GestioneErrore(q As Pointer, err As Integer) | Private Procedure GestioneErrore(q As Pointer, err As Integer) | ||
− | + | ||
Dim s As String = String@(quvi_strerror(q, err)) | Dim s As String = String@(quvi_strerror(q, err)) | ||
− | + | ||
If err > QUVI_OK Then | If err > QUVI_OK Then | ||
quvi_close(VarPtr(q)) | quvi_close(VarPtr(q)) |
Versione attuale delle 16:13, 29 giu 2024
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: "; Time(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