网站重新搭建程序要多少钱,工程公司经营范围,js效果炫酷的网站推荐,wordpress如何关闭主题1 播放速度 GStreamer提供了两种改变播放速度的机制#xff1a;步进事件#xff08;Step Events#xff09;和搜索事件#xff08;Seek Events#xff09;。步进事件允许跳过一定量的媒体#xff0c;并改变随后的播放速度#xff08;只能为正值#xff09;。搜索事件还…1 播放速度 GStreamer提供了两种改变播放速度的机制步进事件Step Events和搜索事件Seek Events。步进事件允许跳过一定量的媒体并改变随后的播放速度只能为正值。搜索事件还允许跳转到流中的任何位置并设置正向和负向的播放速度。
1.1 改变播放速度
步进事件 是一种更方便的改变播放速度的方式因为创建它们所需的参数较少但是它们也有一些缺点因此本教程使用搜索事件代替步进事件。步进事件只影响到sink在管道的末端因此只有在管道的其余部分能够支持以不同的速度运行时才起作用而搜索事件会通过整个管道传播因此每个元素都可以对其做出反应。步进事件的优点是它们的执行速度要快得多。步进事件也无法改变播放方向。
要使用这些事件需要创建它们并将其传递到管道中其中它们向上传播直到达到可以处理它们的元素。如果将事件传递到像playbin这样的容器元素中它将简单地将事件传递给其所有的sink这将导致执行多次搜索。常见的做法是通过video-sink或audio-sink属性检索playbin的一个sink并直接将事件馈送到sink中。
1.2 逐帧播放视频
逐帧播放是一种允许逐帧播放视频的技术。它通过暂停管道然后发送步进事件来跳过每一帧。
2 函数与知识点 GstEvent *gst_event_new_seek (gdouble rate, GstFormat format, GstSeekFlags flags, GstSeekType start_type, gint64 start, GstSeekType stop_type, gint64 stop) 功能为给定的参数分配一个新的seek事件。 说明seek事件配置了从start到stop以rate给定的速度进行的管线播放也称为播放段。起始和停止值以format表示。 速率为1.0表示正常播放速率2.0表示加倍速度。负值表示倒播。不允许速率为0.0的情况而应该通过将管线暂停来实现。 管道具有默认的播放段配置其起始位置为0停止位置为-1速率为1.0。可以使用GST_QUERY_SEGMENT查询当前配置的播放段。 start_type和stop_type指定如何调整播放段中当前配置的起始和停止字段。调整可以相对于最后配置的值进行。GST_SEEK_TYPE_NONE表示位置不应更新。 当速率为正数且已更新起始位置时播放将从新配置的起始位置开始。 对于负数的速率播放将从新配置的停止位置如果有的话开始。如果更新了停止位置则对于负数的速率它必须与-1#GST_CLOCK_TIME_NONE不同。 不能相对于当前播放位置进行搜索要实现这一点需要将管道暂停使用GST_QUERY_POSITION查询当前播放位置并使用GST_SEEK_TYPE_SET将播放段的当前位置更新为所需位置。 参数 rate - 新的播放速率 format - 寻求值的格式 flags - 可选的寻求标志 start_type - 新的起始位置的类型和标志 start - 新起始位置的值 stop_type - 新停止位置的类型和标志 stop - 新停止位置的值gboolean gst_element_send_event (GstElement * element, GstEvent * event) 功能向元素发送事件。如果元素没有实现事件处理程序事件将被推送到下游事件的任意链接的sink pad或者向上游事件的任意链接的source pad。 cleanup这个函数接管了提供的事件所以如果你想在此调用之后重用事件你应该使用gst_event_ref()。GstEvent *gst_event_new_step (GstFormat format, guint64 amount, gdouble rate, gboolean flush, gboolean intermediate) 功能创建一个新的步进事件。步进事件的目的是指示sink跳过指定量以format表示的媒体。它可用于逐帧播放视频或进行快速技巧模式。 说明不允许使用小于等于0.0的速率。如果要实现rate 0.0的效果请暂停管道如果要实现rate 0.0的效果请使用seek事件来首先反转播放方向。 flush标志将在开始步进操作之前清除管道中的任何待处理数据