Я запускаю конвейер 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]