J'essaie d'écrire un pipeline gstreamer pour convertir une vidéo mpeg4 au format mpegts.

J'ai essayé en dessous du pipeline mais pas de chance

$ gst-launch-1.0 -e filesrc location=20200818125158_00001.ts.mp4 ! qtdemux name=mdemux ! \
h264parse ! video/x-h264,stream-format=byte-stream ! mpegtsmux name=mux ! filesink location=20200818125158_00001.ts

J'obtiens une erreur en dessous lorsque j'exécute au-dessus du pipeline

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
WARNING: from element /GstPipeline:pipeline0/GstQTDemux:mdemux: Delayed linking failed.
Additional debug info:
./grammar.y(510): gst_parse_no_more_pads (): /GstPipeline:pipeline0/GstQTDemux:mdemux:
failed delayed linking some pad of GstQTDemux named mdem

Mon format d'entrée

gst-discoverer-1.0 vid.mp4 
Analyzing file:///vid.mp4
Done discovering file:///vid.mp4

Topology:
  container: Quicktime
    video: MPEG-4 Video (Simple Profile)

Properties:
  Duration: 0:00:07.267000000
  Seekable: yes
  Live: no
  Tags: 
      video codec: MPEG-4 video
      maximum bitrate: 8400000
      bitrate: 298925
      encoder: Lavf57.83.100
      container format: ISO MP4/M4A

Mon format cible

Topology:
  container: MPEG-2 Transport Stream
    video: H.264 (High Profile)

Properties:
  Duration: 0:00:09.900164000
  Seekable: yes
  Live: no
  Tags: 
      video codec: H.264
0
amyst 31 août 2020 à 07:51

2 réponses

Meilleure réponse

Après avoir passé plusieurs heures et en savoir plus sur gstreamer, j'ai trouvé le bon pipeline. Ci-dessous le pipeline fonctionne pour moi

gst-launch-1.0 filesrc location=vid.mp4 ! qtdemux ! avdec_mpeg4 ! X264enc ! mpegtsmux  ! filesink location=vid.ts
0
amyst 3 sept. 2020 à 13:57

video codec: MPEG-4 video

Votre codec vidéo dans le fichier source est MPEG-4 Video. C'est différent de H.264. Essayez mpegvideoparse au lieu de h264parse.

Le forçage des majuscules Als video/x-h264,stream-format=byte-stream ne devrait pas être requis. L'analyseur et le multiplexeur doivent s'entendre sur les plafonds par eux-mêmes.

1
Florian Zwoch 31 août 2020 à 07:21