[英]cut parts of a video using gstreamer/Python (gnonlin?)
我有一個視頻文件,我想剪切出一些場景(通過時間位置或幀來標識)。 據我了解,使用gnonlin應該可以實現,但是到目前為止,我還沒有找到一個示例(理想情況下使用Python)。 我不想盡可能修改視頻/音頻部分(但可以轉換為mp4 / webm)。
我是否正確認為gnonlin是gstreamer宇宙中執行此操作的正確組件? 我也很高興有一些指示/方法來解決這個問題(gstreamer新手)。
實際上,事實證明“ gnonlin”的級別太低 ,仍然需要大量gstreamer知識。 幸運的是,有一個“ gstreamer-editing-services”( gst-editing-services ),它是一個在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片段,因此基本上有兩個剪輯:一個在開頭,一個在中間。
從我所看到的效果來看,它可以很好地工作,音頻和視頻同步,不用擔心關鍵幀和其他問題。 剩下的唯一部分就是找出是否可以將“幀號”轉換為GST編輯服務的時序參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.