Autore Topic: player video MINIMALE per schede Black MAgic  (Letto 1643 volte)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
player video MINIMALE per schede Black MAgic
« il: 25 Marzo 2019, 19:53:24 »
come da titolo il post potra' essere di qualche interesse solo per chi ha una di queste schede di input/output video.

Ma nel mio caso l'idea e' di avere un flusso video in uscita (video composito, ma si puo' settare anche a SDI puo' hdmi) e relativo audio e contemporaneamente avere un feedback sullo schermo VGA del computer.

Le schede Black MAgic, notoriamente pallose, sono compativili con gstreamer (quasi) ed al momento, con il dirver versione  11.0 sembrerebbe che questo comando GSTREAMER funzioni (ps mode3=pal 50i):

gst-launch-1.0 uridecodebin uri=file:///home/v1p3r/path_del_file_video_funziona_solo_percorso_assoluto.mp4 name=decode decode. ! interlace field-pattern=2:2 ! videoconvert ! video/x-raw,format=UYVY ! videoscale ! video/x-raw,width=720,height=576 ! videorate ! video/x-raw,framerate=25/1 ! decklinkvideosink mode=3 decode. ! audioconvert ! decklinkaudiosink

funzioni.

Quindi da questa base ecco un semplice "sequencer" di comandi shell:
Codice: [Seleziona]
' Gambas class file

Public Processo As Process

Public Sub ColumnView_Files_Drop()

  Dim DatiInArrivo As String
 
  DatiInArrivo = Drag.Data
 
  If (DatiInArrivo Like "file:*") Then
    DatiInArrivo = Mid(DatiInArrivo, 1, (InStr(DatiInArrivo, gb.cr)) - 1)
    ColumnView_Files.Add(ColumnView_Files.Count, DatiInArrivo)
  Endif
 
End

Public Sub Form_Open()
 
  ColumnView_Files.Columns.Count = 1
  ColumnView_Files.Columns[0].Text = "file path"
 
End

Public Sub Button_Play_Click()

  Dim i As Integer
  Dim URI As String
  Dim comandoInizio As String = "gst-launch-1.0 uridecodebin uri="
  Dim comandoFine As String = " name=decode decode. ! interlace field-pattern=2:2 ! videoconvert ! video/x-raw,format=UYVY ! videoscale ! video/x-raw,width=720,height=576 ! videorate ! video/x-raw,framerate=25/1 ! decklinkvideosink mode=3 decode. ! audioconvert ! decklinkaudiosink"
  Dim comando As String
 
  For i = 0 To ColumnView_Files.Count - 1
   
    uri = ColumnView_Files[i].Text
    'gst-launch-1.0 uridecodebin uri=file:///home/v1p3r/Video/tg/farmacie/insegna\ croce\ famacia.mp4 name=decode decode. ! interlace field-pattern=2:2 ! videoconvert ! video/x-raw,format=UYVY ! videoscale ! video/x-raw,width=720,height=576 ! videorate ! video/x-raw,framerate=25/1 ! decklinkvideosink mode=3 decode. ! audioconvert ! decklinkaudiosink
    comando = comandoInizio & uri & comandoFine
    Debug "comando=" & comando
   
    Shell comando Wait For Output
   
  Next
 
End


a seguire, cerchero di implementare un vero e proprio player tramite il componente gb.media di gstreamer.

PS: i file video vanno caricati con drag & drop nella lista a destra.
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:player video MINIMALE per schede Black MAgic
« Risposta #1 il: 25 Marzo 2019, 22:10:13 »
...ma come ? Proprio tu con il sistema GStreamer.... usi Shell ?!?!?

« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:player video MINIMALE per schede Black MAgic
« Risposta #2 il: 26 Marzo 2019, 19:20:36 »
c'e' il vecchio problema dell'uso del "linkLater" ... ancora non ho risolto.

vorrei coinvolgere minisini a daer un piccolo template/esempio per l'uso di questo metodo, ma lo vedo preso da altro al momento
se corri, morirai stanco (motto degli sniper)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:player video MINIMALE per schede Black MAgic
« Risposta #3 il: 27 Marzo 2019, 19:32:45 »
il progetto e' cresciuto un po' ... ma sempre con shell (PURTROPPO).

Il nocciolo del discorso ruota intorno a URIDECODEBIN, perche' non ho voglia di smazzarmi con la gestione di pipeline diverse in base alla sorgente in ingresso.
Quindi tocca usa' "linkLaterTO", che anche dando un'occhiata al sorgente C del componente gb.media, non ci si capisce una mazzaferrata :_(

In questa versione piu' "adulta", la playlist adatta l'ora presunta della messa in onda all'ora ESATTA della trasmissione (ed aggiorna a cascata gli altri orari successivi)
Inoltre prevede anche l'invio di comandi seriali a device esterni che switchano tra' una sorgente all'altra.

Oltre che sorgenti di tipo "file" implementero' a breve anche flussi streaming da sorgenti video esterne.

MA se non riesco ad utilizzare l'oggetto pipeline, ho serie difficolta' a tracciare quel che succede (sono in catena aperta, senza feedback).
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:player video MINIMALE per schede Black MAgic
« Risposta #4 il: 27 Marzo 2019, 20:58:51 »
I "..decodebin" danno sempre problemi per l'uso della Classe Pipeline
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:player video MINIMALE per schede Black MAgic
« Risposta #5 il: 01 Aprile 2019, 18:39:58 »
Sono riuscito "parzialmente" ad aggirare il bisogno di lanciare un processo shell, scopiazzando una wiki di VUOTT.

Ho utilizzato le api di gstreamer e sfruttato gst_parse_lanch.
Ora devo integrare il nuovo "manager" del playback con quello vecchio, ma dovrebbe essere facile.

In allegato il prototipo del manager che (toggle button 2) puo' anche mettere in overlay un testo sul video riprodotto ;-)
se corri, morirai stanco (motto degli sniper)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:player video MINIMALE per schede Black MAgic
« Risposta #6 il: 02 Aprile 2019, 17:19:32 »
ho integrato il codice dell'esempietto postato precedentemente a quello del player di "playlist".

se volete potete divertirli a modificarlo
se corri, morirai stanco (motto degli sniper)