2015-04-22 35 views
5

Sto lavorando su gstreamer per la prima volta e sto provando a trasmettere un file video MP4 da un server a un client utilizzando Gstreamer (RTP e UDP). La linea di comando che sto cercando di utilizzare:Streaming di file video MP4 su Gstreamer

Sul lato server:

gst-launch-1.0 -v filesrc location = file_name.mp4 ! decodebin ! x264enc ! rtph264pay ! udpsink host=192.1XX.XX.XX port=9001 

Sul lato client:

gst-launch-1.0 -v udpsrc port=9001 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtpstreamdepay ! decodebin ! videoconvert ! autovideosink 

sono in grado di trasmettere il video con successo. Ma, non voglio le operazioni decodebin e x264enc sul lato server. Così, ho rimosso queste operazioni e utilizzato questa riga di comando sul lato server

gst-launch-1.0 -v filesrc location =file_name.MP4 ! rtpstreampay ! udpsink host=192.1XX.XX.XX port=9001 

Su quali non ero in grado di trasmettere il video.

Qualcuno potrebbe guidarmi, perché abbiamo bisogno di avere la decodifica e codificare le operazioni in questo scenario durante l'invio dei dati. Esiste un modo per inviare dati senza utilizzare queste operazioni.

Grazie.

risposta

1

Decodifica e ricodifica non è necessaria. L'elemento che si desidera è demultiplexer e, in questo caso, qtdemux.

Ecco una clip da esso del documento:

demultiplexare un file QuickTime in stream audio e video di base ISO supporti supporto del formato file (mp4, 3GPP, qt, mj2)

E ' abbastanza per demultiplex il contenitore video aperto e basta leggere il flusso video codificato direttamente dal contenitore. mp4 contenitori di solito contengono H.264 video codificati, in modo che il gasdotto lato server semplificherebbe in:

gst-launch-1.0 -v filesrc location = file_name.mp4 ! qtdemux ! video/x-h264 ! rtph264pay ! udpsink host=192.1XX.XX.XX port=9001