2015-07-30 1 views
2

Je ne peux pas créer un pipeline avec gstreamer et je ne sais pas comment je peux le déboguer davantage.AVERTISSEMENT: pipeline erroné: impossible de lier customsrc0 à mpegtsmux0

gst-launch-1.0 --gst-debug=GST_CAPS:4 -v -e customsrc num-buffers=1000 ! video/x-h264,width=600,height=600,framerate=1/12,stream-format=byte-stream ! mpegtsmux ! udpsink host=10.92.7.2 port=5000 
WARNING: erroneous pipeline: could not link customsrc0 to mpegtsmux0 

Les capacités de customsrc et de mpegtsmux correspondent. Mais de toute évidence, il manque quelque chose.

customsrc

Pad Templates: 
    SRC template: 'src' 
    Availability: Always 
    Capabilities: 
     video/x-h264 
        width: [ 1, 2147483647 ] 
       height: [ 1, 2147483647 ] 
       framerate: [ 1/2147483647, 2147483647/1 ] 
      stream-format: avc 
       alignment: au 

mpegtsmux

Pad Templates: 
    SINK template: 'sink_%d' 
    Availability: On request 
     Has request_new_pad() function: 0x76beca8c 
    Capabilities: 
     video/x-h264 
      stream-format: byte-stream 
       alignment: { au, nal } 

Que puis-je faire d'autre pour comprendre le décalage?

+0

Ils ont différents formats de flux (avc = octet -courant). Peut-être utiliser un élément h264parse entre eux? – mpr

+0

Est-ce que 'vidéo/x-h264, largeur = 600, hauteur = 600, framerate = 1/12, stream-format = byte-stream' filtre assez pour convertir le format en byte-stream? – Umut

Répondre

3

Les capuchons servent à filtrer et à définir le fonctionnement du pipeline: ils ne provoquent aucune transformation par eux-mêmes. Par exemple, si vous avez deux éléments avec ces bouchons sur leurs sources et tampons évier:

video/x-h264 
     stream-format: byte-stream 
      alignment: { au, nal } 

    video/x-h264 
     stream-format: byte-stream 
      alignment: { au, nal } 

Et vous placez ce filtre entre les casquettes:

video/x-h264,alignment=nal 

Vous causez le pipeline à utiliser final alignement là. Si vos éléments ont ces bouchons sur leurs patins:

video/x-h264 
     stream-format: avc 
      alignment: { au, nal } 

    video/x-h264 
     stream-format: byte-stream 
      alignment: { au, nal } 

Vous devez ajouter un élément qui permet de convertir la vidéo/x-H264, flux format = avc en vidéo/x-H264, flux format = byte courant. h264parse va le faire, car il faut une vidéo/contenu x-H264 sur son pad évier et sorties quel que soit flux format et les alignements sont nécessaires pour sa source en aval:

SRC template: 'src' 
    Availability: Always 
    Capabilities: 
     video/x-h264 
       parsed: true 
      stream-format: { avc, avc3, byte-stream } 
       alignment: { au, nal } 

    SINK template: 'sink' 
    Availability: Always 
    Capabilities: 
     video/x-h264