在视频中创建分段

6 投票
1 回答
634 浏览
提问于 2025-04-17 02:23

我正在使用Python 2.7、PyGTK 2.24和PyGST(Gstreamer)。

为了确保从一个视频片段播放到另一个片段时不会出现闪烁,我把所有需要的片段合成了一个更大的视频。这样我就可以在代码中精确地定位到我需要的地方。其中一个片段是“填充片段”,当其他片段没有播放时,它应该循环播放。

不过,为了让我的代码更简单、更流畅,我想用“段”来定义这个大视频中的不同片段。然后,在每个段的结束时(我知道有一个段结束事件),我就可以切换到填充片段。当我需要另一个片段时,我只需切换到那个段。

我的问题是,如何准确地创建这些段?我猜这可能是 event_new_new_segment(),但我不太确定。我可以用这个函数创建多个片段来切换吗?还有其他的函数可以使用吗?在这种视频切换的方法中,有什么需要注意的地方吗?

第二,我该如何切换到那个段呢?

谢谢!

1 个回答

1

看起来只有 GstElement 这种东西才能生成 NEWSEGMENT 事件,你不能简单地把它附加到一个已经存在的元素上。如果不使用 Python,最接近的做法就是创建一个 单次触发 或者 周期性GstClockID,然后使用 gst_clock_id_wait_async 等待时钟时间到达。不过问题是,GstClockID 在 PyGst 中并没有被封装。

我觉得我其实在处理一些类似的问题。我现在使用的某种解决方案是通过 gnonlin 实时拼接视频流。好的一面是:看起来能工作,但我还没时间彻底测试。坏的一面是:文档很差,存在很多bug。来自 flumotion 项目的 这些 源代码(还有里面的注释!)对我理解如何让整个事情运作非常有帮助。

撰写回答