我有一个视频文件,我想删除某些场景(通过时间位置或帧确定)。据我所知,Gnonlin应该可以做到这一点,但是到目前为止,我还找不到示例如何(理想情况下使用Python)。如果可能的话,我不想修改视频/音频零件(但是转换为MP4/WebM是可以接受的)。
我是否会纠正Gnonlin是Gstreamer Universe中的正确组成部分?另外,我很高兴为一些指示/食谱如何解决问题(gstreamer newbie)。
实际上,事实证明" gnonlin"太低了,仍然需要大量的gstreamer知识。幸运的是,有" Gstreamer-editing-Services"(GST-编辑服务)在GSTREAMER和GNONLIN上提供更高级别的API的库。
带有一点点RTFM阅读和有用的博客文章,其中有一个python示例,我能够解决我的基本问题:
- 加载资产(视频)
- 用单层创建一个时间表
- 多次将资产添加到该层,调整开始,关注点和持续时间,因此仅在输出视频中存在视频的相关部分
我的大多数代码直接从上面的引用博客文章中获取,因此我不想在这里丢弃所有这些。相关内容是:
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编辑服务的定时参考。