在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將若干視頻片段還原成原視頻?

算法與數據結構 ? 來源:labuladong ? 作者:labuladong ? 2021-05-13 11:23 ? 次閱讀

1024. 視頻拼接(Medium)

前面發過 幾個視頻,也算是對視頻剪輯入了個門。像我這種非專業剪輯玩家,不做什么宏大特效電影鏡頭,只是做個視頻教程,其實也沒啥難度,只需要把視頻剪流暢,所以用到最多的功能就是切割功能,然后刪除和拼接視頻片接。

沒有剪過視頻的讀者可能不知道,在常用的剪輯軟件中視頻被切割成若干片段之后,每個片段都可以還原成原始視頻。

就比如一個 10 秒的視頻,在中間切一刀剪成兩個 5 秒的視頻,這兩個五秒的視頻各自都可以還原成 10 秒的原視頻。就好像蚯蚓,把自己切成 4 段就能搓麻,把自己切成 11 段就可以湊一個足球隊。

剪視頻時,每個視頻片段都可以抽象成了一個個區間,時間就是區間的端點,這些區間有的相交,有的不相交……

假設剪輯軟件不支持將視頻片段還原成原視頻,那么如果給我若干視頻片段,我怎么將它們還原成原視頻呢?

這是個很有意思的區間算法問題,也是力扣第 1024 題「視頻拼接」,題目如下:

95c0b3b0-b322-11eb-bf61-12bb97331649.jpg

函數簽名如下:

int videoStitching(int[][] clips, int T);

記得以前寫過好幾篇區間相關的問題:

區間問題合集 寫過求區間交集、區間并集、區間覆蓋這幾個問題。

貪心算法做時間管理 寫過利用貪心算法求不相交的區間。

算上本文的區間剪輯問題,經典的區間問題也就都講完了。

思路分析

題目并不難理解,給定一個目標區間和若干小區間,如何通過裁剪和組合小區間拼湊出目標區間?最少需要幾個小區間?

前文多次說過,區間問題肯定按照區間的起點或者終點進行排序。

因為排序之后更容易找到相鄰區間之間的聯系,如果是求最值的問題,可以使用貪心算法進行求解。

區間問題特別容易用貪心算法,公眾號歷史文章除了 貪心算法之區間調度,還有一篇 貪心算法玩跳躍游戲,其實這個跳躍游戲就相當于一個將起點排序的區間問題,你細品,你細品。

至于到底如何排序,這個就要因題而異了,我做這道題的思路是先按照起點升序排序,如果起點相同的話按照終點降序排序。

為什么這樣排序呢,主要考慮到這道題的以下兩個特點:

1、要用若干短視頻湊出完成視頻[0, T],至少得有一個短視頻的起點是 0。

這個很好理解,如果沒有一個短視頻是從 0 開始的,那么區間[0, T]肯定是湊不出來的。

2、如果有幾個短視頻的起點都相同,那么一定應該選擇那個最長(終點最大)的視頻。

這一條就是貪心的策略,因為題目讓我們計算最少需要的短視頻個數,如果起點相同,那肯定是越長越好,不要白不要,多出來了大不了剪輯掉嘛。

基于以上兩個特點,將clips按照起點升序排序,起點相同的按照終點降序排序,最后得到的區間順序就像這樣:

95f18404-b322-11eb-bf61-12bb97331649.jpg

這樣我們就可以確定,如果clips[0]是的起點是 0,那么clips[0]這個視頻一定會被選擇。

96200e0a-b322-11eb-bf61-12bb97331649.jpg

當我們確定clips[0]一定會被選擇之后,就可以選出第二個會被選擇的視頻:

96358988-b322-11eb-bf61-12bb97331649.jpg

我們會比較所有起點小于clips[0][1]的區間,根據貪心策略,它們中終點最大的那個區間就是第二個會被選中的視頻。

然后可以通過第二個視頻區間貪心選擇出第三個視頻,以此類推,直到覆蓋區間[0, T],或者無法覆蓋返回 -1。

以上就是這道題的解題思路,仔細想想,這題的核心和前文 貪心算法玩跳躍游戲 寫的跳躍游戲是相同的,如果你能看出這兩者的聯系,就可以說理解貪心算法的奧義了。

代碼實現

實現上述思路需要我們用兩個變量curEnd和nextEnd來進行:

964f3c3e-b322-11eb-bf61-12bb97331649.gif

最終代碼實現如下:

int videoStitching(int[][] clips, int T) {

if (T == 0) return 0;

// 按起點升序排列,起點相同的降序排列

Arrays.sort(clips, (a, b) -》 {

if (a[0] == b[0]) {

return b[1] - a[1];

}

return a[0] - b[0];

});

// 記錄選擇的短視頻個數

int res = 0;

int curEnd = 0, nextEnd = 0;

int i = 0, n = clips.length;

while (i 《 n && clips[i][0] 《= curEnd) {

// 在第 res 個視頻的區間內貪心選擇下一個視頻

while (i 《 n && clips[i][0] 《= curEnd) {

nextEnd = Math.max(nextEnd, clips[i][1]);

i++;

}

// 找到下一個視頻,更新 curEnd

res++;

curEnd = nextEnd;

if (curEnd 》= T) {

// 已經可以拼出區間 [0, T]

return res;

}

}

// 無法連續拼出區間 [0, T]

return -1;

}

這段代碼的時間復雜度是多少呢?雖然代碼中有一個嵌套的 while 循環,但這個嵌套 while 循環的時間復雜度是O(N)。因為當i遞增到n時循環就會結束,所以這段代碼只會執行O(N)次。

但是別忘了我們對clips數組進行了一次排序,消耗了O(NlogN)的時間,所以本算法的總時間復雜度是O(NlogN)。

原文標題:剪視頻剪出一個貪心算法…

文章出處:【微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 視頻
    +關注

    關注

    6

    文章

    1970

    瀏覽量

    73735

原文標題:剪視頻剪出一個貪心算法…

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    技術分享 | 迅為RK3568開發板如何將 Linux 板卡虛擬U盤

    技術分享 | 迅為RK3568開發板如何將 Linux 板卡虛擬U盤
    的頭像 發表于 06-04 10:57 ?298次閱讀
    技術分享 | 迅為RK3568開發板<b class='flag-5'>如何將</b> Linux 板卡虛擬<b class='flag-5'>成</b>U盤

    k230如何將yolo分類視頻流推理后的視頻結果保存到本地?

    請問k230如何將yolo分類視頻流推理后的視頻結果保存到本地?
    發表于 02-08 08:09

    請問ccs4.2如何將采集到的數據導出dat文件?

    ccs4.2如何將采集到的數據導出dat文件
    發表于 01-14 08:08

    hdmi是什么電平?hdmi信號里有幾對差分還有幾個單端的,差分的信號是不是cml電平?

    出來的cml信號在還原成hdmi信號,接到顯示器上。現在有幾個問題: 1,hdmi是什么電平?第一次接觸,hdmi信號里有幾對差分還有幾個單端的,差分的信號是不是cml電平? 2,如果差分的是cml電平
    發表于 12-24 06:34

    640x480的視頻數據輸入給TVP5158進行解碼處理,輸出的是640 x 240的視頻數據,為什么?

    640 x 480的視頻數據輸入給TVP5158進行解碼處理,可是輸出的是640 x 240 的視頻數據,這是什么原因導致的呢?
    發表于 12-20 07:12

    請問如何將腦電數據經過數據轉換器輸出?

    PC機,向USB口輸出,并經過DA轉換器后,還原成模擬信號,并讓模擬信號與外接線圈轉接,使之產生腦電場,逆向研究原始腦電信號對人腦的影響,但是問題是:這個由電腦輸出的數字信號如何才能轉換成模擬信號并
    發表于 12-17 07:02

    OpenAI開放Sora視頻生成模型

    升級,準備迎接廣大用戶的深入探索與廣泛應用。 據官方公告介紹,Sora Turbo作為Sora的升級版本,具備強大的視頻生成能力。它能夠根據用戶的文本提示,快速創建出最長達20秒的高清視頻片段。更令人驚喜的是,Sora Turb
    的頭像 發表于 12-10 11:16 ?698次閱讀

    用ADS8866采集方波并用DAC8551還原出來,發現有200us左右的臺階,為什么?

    如圖,黃色是原始的輸入進ADC的波形,藍色是DAC輸出的波形,DAC單獨測試過是可以輸出1.6kHz的方波的;本次測試方法是ADC采集到的電壓通過mcu算出電壓再發給DAC,讓DAC還原成原波形,但發現有200us左右的臺階,不知道什么原因
    發表于 11-26 08:19

    AIGC在視頻內容制作中的應用前景

    AIGC技術能夠顯著縮短視頻內容的制作周期。通過AI算法,可以快速生成視頻剪輯、特效、字幕和配樂等,減少人工操作的時間。例如,在短視頻制作中,AIGC技術可以自動找到最佳剪輯點、裁剪視頻
    的頭像 發表于 10-25 15:44 ?1671次閱讀

    視頻時鐘合成芯片怎么用

    視頻時鐘合成芯片(Video Clock Synthesizer,VCS)是一種用于生成和調整視頻信號時鐘的電子設備,廣泛應用于視頻處理、顯示、傳輸等領域。它能夠輸入的時鐘信號轉換成
    的頭像 發表于 10-10 11:17 ?673次閱讀

    常見的視頻接口有哪些

    CVBS,全稱Composite Video Broadcast Signal或Composite Video Blanking and Sync,中文翻譯為復合視頻廣播信號或復合視頻消隱和同步
    的頭像 發表于 10-09 15:58 ?2926次閱讀

    盤點那些常見音視頻接口

    我們熟知的一些常見音視頻接口,發展至今在日常使用中已經漸漸少了。但是在工業領域的音視頻連接,依然能看到其身影。這些看似消失的接口,它們現在發展什么樣子了?本期我們將做一個大盤點。
    的頭像 發表于 09-09 14:34 ?1133次閱讀

    如何將LMH34400評估模塊設置電流輸入模式?

    LMH34400 評估模塊手冊里注明默認電壓輸入模式,如何設置電流輸入模式沒有說明,煩請說明下如何將LMH34400 評估模塊設置電流輸入模式,謝謝。
    發表于 08-01 07:35

    視頻處理器分辨率怎么調

    信號進行解碼、編碼、轉換、縮放等操作。視頻處理器廣泛應用于電視、顯示器、投影儀、攝像頭等設備中。 視頻處理器的主要功能包括: 視頻解碼:壓縮的視頻
    的頭像 發表于 07-16 11:25 ?1913次閱讀
    主站蜘蛛池模板: 在线视频网址免费播放 | 成 人色 网 站 欧美大片在线观看 | 午夜性爽快| 欧美一区二区三区高清视频 | 免费一级特黄特色大片在线观看 | 丁香婷婷久久 | 亚洲狠狠婷婷综合久久久久图片 | 丝袜美女被c | 午夜影院0606 | 久久精品视频免费观看 | 99综合色 | 国产日本特黄特色大片免费视频 | 在线免费观看h | 同性男男肉交短文 | 欧美区在线 | 欧美高清免费一级在线 | 九九99久久精品午夜剧场免费 | 免费观看色视频 | 四虎精品久久久久影院 | 天天射天天爱天天干 | 欧美高清免费一级在线 | 欧美三级小视频 | 1024 cc香蕉在线观看看中文 | 黄色在线网站 | 一区二区3区免费视频 | 免费国内精品久久久久影院 | 噜噜噜 综合 亚洲 | 7m凹凸精品分类大全免费 | 久久99热久久精品23 | jiucao视频在线观看 | 天堂在线观看视频 | 美女视频一区二区 | 男女同床爽爽视频免费 | 午夜在线影视 | 天天综合网天天做天天受 | 黄色18网站 | 黄黄网址 | 日本不卡视频免费的 | 一级一级毛片免费播放 | 77788色淫免费网站视频 | 免费视频在线看 |