1

当我设置参数时,我有一个pipeline不会抛出 EOS 。stop-index

管道如下所示:

gst-launch-0.10 multifilesrc start-index=140 stop-index=145 location="ADIF%04d.jpg" ! image/jpeg, framerate=5/1 ! decodebin ! videoscale ! video/x-raw-yuv, width=1920, height=1080, framerate=5/1 ! ffmpegcolorspace ! queue ! x264enc bitrate=5000 ! queue ! h264parse ! avimux ! filesink location=x264enc_1080p_5fps_bitrate_5000.avi

此管道不断创建 5 帧 ADIF0140.jpg -> ADIF0145.jpg 的视频,重复,直到我手动停止它。例如,我会有一个显示 5 帧的视频,然后是 5 帧,一次又一次,等等。它就像卡在某种循环中一样。

如果我删除stop-index,那么当文件列表用完时,管道将生成一个 EOS。但是,一旦达到特定数量的帧,我需要管道来抛出 EOS。

gst-inspect-0.10 multifilesrc告诉我该stop-index参数确实告诉管道在达到索引后停止。也许我误解了什么?

有没有办法让 multifilesrc 在达到stop-index参数时生成 EOS?

编辑:

我遵循了评论部分的建议并将 -e 添加到我的 gst-launch 命令中。不幸的是,它对我的​​输出没有任何影响。仍然没有收到任何 EOS。但是,现在当我手动控制 c 时,我确实看到了一条消息,上面写着:

EOS on shutdown enabled -- Forcing EOS on the pipeline
Got EOS from element "pipeline0".
EOS received - stopping pipeline...

export GST_DEBUG="*:3"在运行带有参数集的 gst-launch 命令之前运行了一个,stop-index并得到了一个我无法理解的有趣输出。

New clock: GstSystemClock
0:00:02.708615944  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:02.946719402  1037      0x16b7800 INFO               h264parse gsth264parse.c:1137:gst_h264_parse_update_src_caps:<h264parse0> setting framerate in caps
0:00:02.946788159  1037      0x16b7800 INFO               baseparse gstbaseparse.c:3234:gst_base_parse_set_latency:<h264parse0> min/max latency 0:00:00.200000000, 0:00:00.200000000
0:00:02.946850722  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:03.247947224  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:03.428127717  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:03.671530817  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:03.861473919  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:04.213566287  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:04.400715503  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:04.852917625  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:05.018448277  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:05.200358262  1037      0x16b7800 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0x16b78b0 (tag) to all internally linked pads
0:00:05.266578561  1037      0x16b7800 INFO               h264parse gsth264parse.c:1137:gst_h264_parse_update_src_caps:<h264parse0> setting framerate in caps
0:00:05.266680768  1037      0x16b7800 INFO               baseparse gstbaseparse.c:3234:gst_base_parse_set_latency:<h264parse0> min/max latency 0:00:00.200000000, 0:00:00.200000000

如果我运行相同的 gst-launch 命令,但没有停止索引,我会得到一个 EOS 输出:

New clock: GstSystemClock
0:00:02.073319330  1052       0xec1400 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<avimux0:video_00> Sending event 0xec14b0 (tag) to all internally linked pads
0:00:02.073429953  1052       0xec1400 INFO                GST_PADS gstpad.c:3554:gst_pad_event_default_dispatch:<h264parse0:sink> Sending event 0xec7e90 (eos) to all internally linked pads
0:00:02.073525245  1052       0xec1400 INFO               GST_EVENT gstevent.c:606:gst_event_new_new_segment_full: creating newsegment update 0, rate 1.000000, format bytes, start 0, stop -1, position 0
0:00:02.073572978  1052       0xec1400 INFO               GST_EVENT gstevent.c:606:gst_event_new_new_segment_full: creating newsegment update 0, rate 1.000000, format bytes, start 902654, stop -1, position 902654
Got EOS from element "pipeline0".

谁能帮助解释这些输出?

4

0 回答 0