Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - allegfede

Pagine: 1 ... 3 4 [5] 6 7 ... 50
61
per "mimare" con il componente gb.media il comportamento di questa pipeline funzionante (da shell):

Codice: [Seleziona]
gst-launch-1.0 uridecodebin uri=file:///home/v1p3r/video.mp4 name=decode decode. ! interlace field-pattern=1 ! 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

ho pensato di usare questo codice (un inaspettato aiuto dal forum tedeco di gambas:https://www.gambas-club.de/viewtopic.php?t=5438):

Codice: [Seleziona]
' Gambas class file

'typedef enum
' {
'   GST_INTERLACE_PATTERN_1_1,
'   GST_INTERLACE_PATTERN_2_2,
'   GST_INTERLACE_PATTERN_2_3,
'   GST_INTERLACE_PATTERN_2_3_3_2,
'   GST_INTERLACE_PATTERN_EURO
' }GstInterlacePattern;

Public Sub ToggleButton1_Click()
Dim pl As MediaPipeline
Dim src As MediaControl
Dim interlace As MediaControl
Dim videoconvert, videoscale, videorate, audioconvert As MediaFilter
Dim videosnk, audiosnk As MediaControl

 
 pl = New MediaPipeline
 
 src = New MediaControl(pl, "uridecodebin")
 src["uri"] = "file:///home/v1p3r/video.mp4"

 interlace = New MediaControl(pl, "interlace")
 interlace["field-pattern"] = "0"
 
 videoconvert = New MediaFilter(pl, "video/x-raw,format=UYVY")
 
 videoscale = New MediaFilter(pl, "video/x-raw,width=720,height=576")
 
 videorate = New MediaFilter(pl, "video/x-raw,framerate=25/1")
 
 audioconvert = New MediaFilter(pl, "audio/x-raw,format=S16LE,channels=2")
 
 videosnk = New MediaControl(pl, "decklinkvideosink")
 videosnk["mode"] = 3
 
 audiosnk = New MediaControl(pl, "decklinkaudiosink")
 
 src.LinkLaterTo(interlace)
 interlace.LinkTo(videoconvert)
 videoconvert.LinkTo(videoscale)
 videoscale.LinkTo(videorate)
 videorate.LinkTo(videosnk)
 
 src.LinkLaterTo(audioconvert)
 audioconvert.LinkTo(audiosnk)

 
 pl.Play()
 
 ToggleButton1.Enabled = False
 
 While pl.Duration > pl.Position
   Write "\rTempo: " & Date(0, 0, 0, 0, 0, 0, pl.Position * 1000)
   Wait 0.001
 Wend
 
 pl.Stop()
 pl.Close()

 ToggleButton1.Enabled = True

End

ma, come al solito, al pl.play() ottengo un misero "cannot set status" .....

idee?

62
OpenBar / assenza giustificata :D
« il: 26 Marzo 2019, 19:31:42 »
ragazi scusate l'assenza dal forum, ma ho dovuto insegnare JAVA ad una ragazza, che dal reparto comunicazione, hanno spostato a fare la programmatrice (su progetti enterprise) .....

e la cosa bella e' che io:
1) odio java
2) non programmo in java (vedi punto 1)

.... e quindi ho dovuto insegnare, portare avanti il mio normale lavoro quotidiano, studiare java nel tempo libero ..... :D

ma il corso e' quasi finito e tornero' piu' gamberoso che mai ;-)

PS: ed ho anche messo su un canale youtube .... se non bastasse

63
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

64
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.

65
Programmazione / Re:audio mixer con gstremer e gb.media
« il: 09 Gennaio 2019, 13:26:02 »
si li avevo visti (anche se qualche tempo fa' e sinceramente me ne ero scordato).

Pero' in quei casi, ENTRAMBE le clip audio sorgenti, facevano capo alla stessa pipeline, e quindi devono iniziare (almeno) nello stesso momento.

Io vorrei invece ottenere un "mix" infinito che e' sempre in esecuzione (da quando il programma e' inizializzato) e permetta a le sorgenti che vogliono, di puntare a lui e quindi venire mixate ed analizzate (vumeter globale).

Questo sicuramente non sara' banale, ma e' un esperimento che mi potrebbe risultare utile e che sicuramente potrebbe chiarirmi anche il funzionamento dei famosi "linkLaterTo" che ancora mi e' fumoso :-/

66
Programmazione / audio mixer con gstremer e gb.media
« il: 08 Gennaio 2019, 20:15:04 »
al fine di testare il componente "mix" di gstreamer:
https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-audiomixer.html
sto facendo degli esperimenti che forse possono essere inficcati (termine ternano di dubbia moralita') nella wiki ;-)

in allegato un esempio che usa (per ora) due player separati che vengono mixati da pulse (come comportamento di default).

Domani provo a fare in modo che il mix sia interno alla app e che quindi ci sia un VUMETER unico che misura il livello di TUTTO quello che viene riprodotto dai player nell'applicazione.

67
Programmazione / Re:Centrare testo in MessageBox
« il: 02 Gennaio 2019, 12:56:57 »
io ho visto cambiamenti nel comportamento molto grandi dalla versione stable a quella develop.

di punto in bianco alcuni "comandi" non andavano piu' e altri cambiavano comportamento

68
grazie molte del suggerimento!!!

Forse qualcosa ho trovato:
sembrerebbe che il vecchio codice avesse qualche sporcatura nella definizione degli step. E' bastato cambiare lo step nella GUI a 2 (e prremere invio) e poi rimetterlo ad 1 (e premere invio) per ogni spinbox e l'errore e' scomparso!

69
Segnalazione bug / Re:Errore ProgressBar richiesta di prova
« il: 24 Dicembre 2018, 14:05:47 »
il codice originale scoppia il pc a meta' progresso (avevo lasciato 100)

ubuntu 18.04

70
oggi ho riaperto un vecchio programma per modificarlo un po' e non sono riuscito neanche ad avviarne l'interprestazione.

Mi spara un errore stranissimo: spinbox.step_write.439

Che non e' nel testo del mio sorgente! Forse che sia il codice interno del componente spinbox?

Vi allegherei il programma ma senza gli altri pezzi e' un po' inutile ... penso ...

71
ho analizzato a fondo i messaggi che passano per la pipeline .. e mettendo i watchdog nella procedura di gestione dei messaggi (dove leggo i livelli per i vumeter), mi sembra che tutto vada bene.

cambiano i valori di RMS, scorre il valore di "endtime" (in pratica da quanto tempo sta riproducendo l'audio).

MA, se tolgo i watchdog, e lascio il programma girare alla "massima" velocita' ... la pipeline si schianta dopo una manciata di campioni (dipende dalla dimensione del buffer impostato in Public Sub InitSource()[/b]) ......

72
allora, minisini mi ha dato uno spunto di elaborazione.

I componenti "BIN" (uridecodebin, decodebin, etc) creano i pad al momento del collegamento dei media veri e propri (quando ricevono i dati audio ed iniziano a capire come decodificarli).

Quindi NON si puo' usare il metodo "LinkTo" ma va usato il metodo "LinkLATERto".

In questo modo riesco a creare il player (senza errori), ma ancora non sento l'audio ....

73
forse dovrei anche usare come sorgente uno shoutsrc piu' che un filesrc :D

pero' per ora mi accontento della libreia esterna (amche se ho gia' postato la questione a minisini su sourceforge) ;-)

al link la versione con cambio dinamico dell'url della radio da streammare (ora voglio intercettare i metadati dello streming :D):

https://sourceforge.net/projects/pi2fm/files/gstreamer_webradio_play_test-0.0.2.tar.gz/download

74
per ora ho dovuto ripiegare, utilizzando la libreria ESTERNA di gstreamer, ma gia' puo' essere utilizzato.

75
questo perche' di default raspbian ha l'utente primario con privilegi di amministratore .... altrimenti avresti dovuto elevare il comando in questo modo (supponendo di avere la pass di SUDO nella variabile "password"):
Codice: [Seleziona]
Shell "echo " & password & " | sudo -S shutdown -h now"

Pagine: 1 ... 3 4 [5] 6 7 ... 50