Eseguire in streaming un video da youtube mediante l'oggetto WebView

Da Gambas-it.org - Wikipedia.

Per eseguire in streaming un video direttamente da youtube con l'oggetto WebView - senza che sia mostrata l'intera pagina del sito, ma solo il riquadro del video - sono possibili almeno tre modalità.


Uso della proprietà .HTML con uno specifico codice in html

Uso dell'elemento <Iframe>

Questa modalità prevede che sia passata alla proprietà .HTML dell'oggetto WebView uno specifico codice in html contenente il Tag <Iframe>, avendo nel contempo cura di:

  • attivare il componente gb.qt4.webkit;
  • attivare da codice i plugin necessari per il video;
  • far sì che l'indirizzo del video da eseguire sia così formato da tre parti:

- la parte finale sia rappresentata soltanto dal codice identificativo del video;
- tra la parte inziale del dominio e il codice identificativo del video vi deve essere inserita la parola " embed ".

Esempio:

https://www.youtube.com/embed/NgUGjCVkXXY


Vediamo di seguito un codice essenziale e funzionante:

Public Sub Form_Open()
 
 Dim wv As WebView
     
  WebSettings[WebSettings.PluginsEnabled] = True
 
  With wv = New WebView(Me)
    .X = 20
    .Y = 100
    .W = 660
    .H = 500
    .HTML = "<IFRAME width=640 height=480 src=http://www.youtube.com/embed/NgUGjCVkXXY frameborder=0 allowfullscreen></iframe>"
  End With

End


Uso dell'elemento Embed

Possiamo, similmente al caso precedente, utilizzare l'elemento Embed.


 Vediamo di seguito un codice essenziale e funzionante:
Public Sub Form_Open()
 
 Dim wv As WebView
     
  WebSettings[WebSettings.PluginsEnabled] = True
 
  With wv = New WebView(Me)
    .X = 20
    .Y = 100
    .W = 660
    .H = 500
    .HTML = "<EMBED src=http://www.youtube.com/embed/NgUGjCVkXXY width=640 height=480></embed>"
  End With
  
End


Uso della proprietà .Url

Questa modalità è più semplice nella sua codifica rispetto alla modalità precedente. Essa si basa sull'uso della proprietà .Url dell'oggetto WebView.

E' necessario creare l'oggetto WebView da codice, avendo cura di:

  • non impostare (quindi lasciare a zero) le sue proprietà .W e .H;
  • ipostare in modo adeguato al Form le proprietà .X e .Y .


Mostriamo un semplice esempio:

Public Sub Form_Open()
 
 Dim wv As WebView
 
  WebSettings[WebSettings.PluginsEnabled] = True
 
  With wv = New WebView(Me)
    .X = 50
    .Y = -150
    .Url = "https://www.youtube.com/watch?v=NgUGjCVkXXY"
  End With
  
End


Lettura del codice html della pagina del video

Questa modalità prevede la lettura del codice html della pagina contenente il video, e la successiva scelta delle parti di codice essenziali per l'esecuzione del video.

Mostriamo un semplice esempio, nel quale sul Form dovranno essere posti due Button ed una ProgressBar:

Public Sub Button1_Click()
 
 Dim wv As WebView
  
  With wv = New WebView(Me)
    .Url = "https://www.youtube.com/watch?v=NgUGjCVkXXY"
    While .Progress < 1.0
      Wait 0.01
      ProgressBar1.Value = .Progress
    Wend
  End With
  Wait 0.5
  
  ProgressBar1.Visible = False
  
  Avvia_Video(wv)
 
End


Public Procedure Avvia_Video(vid As WebView)
  
 Dim stringa, s As String
 Dim i1, i2 As Integer
  
  stringa = vid.HTML
  s = Left(stringa, InStr(stringa, "<head>") - 1)
  
  i1 = InStr(stringa, "<div id=\"player-api\"")
  i2 = InStr(stringa, "</div>", i1)
  s &= "\n" & Mid(stringa, i1 - 1, (i2 - i1) + 7)
  
  i1 = InStr(stringa, "<script>var ytplayer")
  i2 = InStr(stringa, "</script>", i1)
  s &= "\n" & Mid(stringa, i1 - 1, (i2 - i1) + 10) & "</html>"
  
  WebSettings[WebSettings.PluginsEnabled] = True
   
  With vid
    .X = 100
    .Y = 100
    .W = 330
    .H = 175
    .HTML = s
  End With
  
End


Public Sub Button2_Click()
 
 Me.Close

End