使用GSTREAMER/PYTHON(GNONLIN?)切割视频的一部分



我有一个视频文件,我想删除某些场景(通过时间位置或帧确定)。据我所知,Gnonlin应该可以做到这一点,但是到目前为止,我还找不到示例如何(理想情况下使用Python)。如果可能的话,我不想修改视频/音频零件(但是转换为MP4/WebM是可以接受的)。

我是否会纠正Gnonlin是Gstreamer Universe中的正确组成部分?另外,我很高兴为一些指示/食谱如何解决问题(gstreamer newbie)。

实际上,事实证明" gnonlin"太低了,仍然需要大量的gstreamer知识。幸运的是,有" Gstreamer-editing-Services"(GST-编辑服务)在GSTREAMER和GNONLIN上提供更高级别的API的库。

带有一点点RTFM阅读和有用的博客文章,其中有一个python示例,我能够解决我的基本问题:

  1. 加载资产(视频)
  2. 用单层创建一个时间表
  3. 多次将资产添加到该层,调整开始,关注点和持续时间,因此仅在输出视频中存在视频的相关部分

我的大多数代码直接从上面的引用博客文章中获取,因此我不想在这里丢弃所有这些。相关内容是:

    asset = GES.UriClipAsset.request_sync(source_uri)
    timeline = GES.Timeline.new_audio_video()
    layer = timeline.append_layer()
    start_on_timeline = 0
    start_position_asset = 10 * 60 * Gst.SECOND
    duration = 5 * Gst.SECOND
    # GES.TrackType.UNKNOWN => add every kind of stream to the timeline
    clip = layer.add_asset(asset, start_on_timeline, start_position_asset,
        duration, GES.TrackType.UNKNOWN)
    start_on_timeline = duration
    start_position_asset = start_position_asset + 60 * Gst.SECOND
    duration = 20 * Gst.SECOND
    clip2 = layer.add_asset(asset, start_on_timeline, start_position_asset,
        duration, GES.TrackType.UNKNOWN)
    timeline.commit()

由此产生的视频包括10:00–10:05和11:05-11:25的节目,从本质上讲,有两个剪裁:一个开始。

从我看到的情况下,它可以很好地奏效,音频和视频同步,不用担心关键帧和Whatot。剩下的唯一部分是找出我是否可以将"帧号"转换为GST编辑服务的定时参考。

相关内容

  • 没有找到相关文章

最新更新