我正在尝试使用 GES 播放视频文件。我发现 python 绑定示例使用 gstreamer/Python(gnonlin?)剪切了部分视频,我想将其翻译成 C 语言。
这是我想翻译成 C 的 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)
到目前为止,我已经翻译成 C 代码:
gint start_on_timeline = 0;
gint start_position_asset = 10 * 60 * GST_SECOND;
gint duration = 5 * GST_SECOND;
GESTimeline *timeline2;
GESLayer *layer2;
gchar *uri = gst_filename_to_uri (argv[1], NULL);
GError **error;
GESUriClipAsset *asset = ges_uri_clip_asset_request_sync(uri,error);
timeline2 = ges_timeline_new_audio_video();
if (!ges_timeline_add_layer (timeline2, layer2))
return -1;
ges_layer_add_asset(layer2, asset, start_on_timeline, start_position_asset, duration, GES_TRACK_TYPE_UNKNOWN);
问题是函数 ges_layer_add_asset 接受类型 GESAsset 资产,而我有类型 GESUriClipAsset 资产。
在 GES 文档页面http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-editing-services/html/GESUriClipAsset.html#ges-uri-clip-asset-request-sync似乎没有可以替代 ges_uri_clip_asset_request_sync (const gchar *uri, GError **error) 函数。有什么办法可以从视频文件 uri 构造 GESAsset?也许还有其他方法可以使用 GES 播放视频文件?