鉴于视频文件,我正在尝试播放从给定开始时间到给定结束时间的视频。 我正在尝试使用Segment Event实现此目的,如下所示:
但是,视频只是从头开始播放,而不是从开始播放。 当事件到达管道的接收器元素时,段事件对回放事件没有影响(由gst调试消息验证)。
以下是代码段:
GstSegment *gstSegment;
GstEvent *event_seg;
gstSegment = gst_segment_new();
gst_segment_init( gstSegment, GST_FORMAT_BYTES );
gstSegment->rate = 2.0;
gstSegment->start = 10 * 1920 * 1080 * 2;
gstSegment->stop = 20 * 1920 * 1080 * 2;
event_seg = gst_event_new_segment(gstSegment);
ret = gst_element_set_state (data.videoPipeline, GST_STATE_PLAYING);
if (ret == GST_STATE_CHANGE_FAILURE) {
printf("Unable to set the pipeline to the playing state\n");
gst_object_unref (data.videoPipeline);
return 1;
}
if ( !gst_element_send_event( GST_ELEMENT (data.videoPipeline), event_seg))
printf("Error");
我可以使用Seek Event实现这一目标。 但无法处理细分事件。
有人可以告诉我如何使用细分事件来实现这一目标吗?