Есть ли способ добавить EOS в конвейер python gstreamer mp4mux - PullRequest
0 голосов
/ 15 мая 2019

Я запускаю конвейер rtspsrc до filesink . В терминале я должен поставить -e, чтобы указать, что конец потока. Когда я добавляю -e в команду, я могу успешно воспроизвести созданный mp4.

Видео, созданное этой командой, воспроизводит:

gst-launch-1.0 -e rtspsrc location = rtsp: //192.168.1.0: 1 / stream! rtph264depay! h264parse! mp4mux! расположение файловой папки = file.mp4

Однако, когда я не использую -e созданное видео не воспроизводится

Видео, созданное этой командой, не воспроизводится:

gst-launch-1.0 rtspsrc location = rtsp: //192.168.1.0: 1 / stream! rtph264depay! h264parse! mp4mux! расположение файловой папки = file.mp4

Проблема в том, что я не использую команду, а пишу код Python для вышеприведенной команды. В терминале я могу -e указать EOS , но как я могу указать EOS в коде Python

bus = self.pipeline.get_bus()

terminate = False

while True:

 msg = bus.timed_pop_filtered(

      Gst.CLOCK_TIME_NONE,

      Gst.MessageType.STATE_CHANGED | Gst.MessageType.EOS | 

       Gst.MessageType.ERROR

       )
msg_type = msg.type
if msg_type == Gst.MessageType.ERROR:

   error, debug = msg.parse_error()

   print("Error: ", msg.src.get_name(), " ", error.message)

   if debug:

      print("Debugging info", debug)

    terminate = True

elif msg_type == Gst.MessageType.EOS:

   print("End of file reached")

   terminate = True[enter image description here][1]
...