91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:labuladong ? 作者:labuladong ? 2021-05-13 11:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1024. 視頻拼接(Medium)

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

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

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

剪視頻時(shí),每個(gè)視頻片段都可以抽象成了一個(gè)個(gè)區(qū)間,時(shí)間就是區(qū)間的端點(diǎn),這些區(qū)間有的相交,有的不相交……

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

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

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

函數(shù)簽名如下:

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

記得以前寫過好幾篇區(qū)間相關(guān)的問題:

區(qū)間問題合集 寫過求區(qū)間交集、區(qū)間并集、區(qū)間覆蓋這幾個(gè)問題。

貪心算法做時(shí)間管理 寫過利用貪心算法求不相交的區(qū)間。

算上本文的區(qū)間剪輯問題,經(jīng)典的區(qū)間問題也就都講完了。

思路分析

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

前文多次說過,區(qū)間問題肯定按照區(qū)間的起點(diǎn)或者終點(diǎn)進(jìn)行排序。

因?yàn)榕判蛑蟾菀渍业较噜弲^(qū)間之間的聯(lián)系,如果是求最值的問題,可以使用貪心算法進(jìn)行求解。

區(qū)間問題特別容易用貪心算法,公眾號(hào)歷史文章除了 貪心算法之區(qū)間調(diào)度,還有一篇 貪心算法玩跳躍游戲,其實(shí)這個(gè)跳躍游戲就相當(dāng)于一個(gè)將起點(diǎn)排序的區(qū)間問題,你細(xì)品,你細(xì)品。

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

為什么這樣排序呢,主要考慮到這道題的以下兩個(gè)特點(diǎn):

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

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

2、如果有幾個(gè)短視頻的起點(diǎn)都相同,那么一定應(yīng)該選擇那個(gè)最長(zhǎng)(終點(diǎn)最大)的視頻。

這一條就是貪心的策略,因?yàn)轭}目讓我們計(jì)算最少需要的短視頻個(gè)數(shù),如果起點(diǎn)相同,那肯定是越長(zhǎng)越好,不要白不要,多出來了大不了剪輯掉嘛。

基于以上兩個(gè)特點(diǎn),將clips按照起點(diǎn)升序排序,起點(diǎn)相同的按照終點(diǎn)降序排序,最后得到的區(qū)間順序就像這樣:

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

這樣我們就可以確定,如果clips[0]是的起點(diǎn)是 0,那么clips[0]這個(gè)視頻一定會(huì)被選擇。

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

當(dāng)我們確定clips[0]一定會(huì)被選擇之后,就可以選出第二個(gè)會(huì)被選擇的視頻:

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

我們會(huì)比較所有起點(diǎn)小于clips[0][1]的區(qū)間,根據(jù)貪心策略,它們中終點(diǎn)最大的那個(gè)區(qū)間就是第二個(gè)會(huì)被選中的視頻。

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

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

代碼實(shí)現(xiàn)

實(shí)現(xiàn)上述思路需要我們用兩個(gè)變量curEnd和nextEnd來進(jìn)行:

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

最終代碼實(shí)現(xiàn)如下:

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

if (T == 0) return 0;

// 按起點(diǎn)升序排列,起點(diǎn)相同的降序排列

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

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

return b[1] - a[1];

}

return a[0] - b[0];

});

// 記錄選擇的短視頻個(gè)數(shù)

int res = 0;

int curEnd = 0, nextEnd = 0;

int i = 0, n = clips.length;

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

// 在第 res 個(gè)視頻的區(qū)間內(nèi)貪心選擇下一個(gè)視頻

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

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

i++;

}

// 找到下一個(gè)視頻,更新 curEnd

res++;

curEnd = nextEnd;

if (curEnd 》= T) {

// 已經(jīng)可以拼出區(qū)間 [0, T]

return res;

}

}

// 無法連續(xù)拼出區(qū)間 [0, T]

return -1;

}

這段代碼的時(shí)間復(fù)雜度是多少呢?雖然代碼中有一個(gè)嵌套的 while 循環(huán),但這個(gè)嵌套 while 循環(huán)的時(shí)間復(fù)雜度是O(N)。因?yàn)楫?dāng)i遞增到n時(shí)循環(huán)就會(huì)結(jié)束,所以這段代碼只會(huì)執(zhí)行O(N)次。

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

原文標(biāo)題:剪視頻剪出一個(gè)貪心算法…

文章出處:【微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 視頻
    +關(guān)注

    關(guān)注

    6

    文章

    2005

    瀏覽量

    74978

原文標(biāo)題:剪視頻剪出一個(gè)貪心算法…

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    LMH1981多格式視頻同步分離器:高性能視頻應(yīng)用的理想之選

    LMH1981多格式視頻同步分離器:高性能視頻應(yīng)用的理想之選 在當(dāng)今的視頻技術(shù)領(lǐng)域,對(duì)于高質(zhì)量同步分離的需求日益增長(zhǎng)。德州儀器(TI)的LMH1981多格式視頻同步分離器,以其卓越的性
    的頭像 發(fā)表于 02-10 09:25 ?510次閱讀

    MAXIM CMOS視頻復(fù)用器/放大器:高性能視頻應(yīng)用的理想之選

    、MAX454和MAX455,為視頻應(yīng)用提供了出色的解決方案。本文詳細(xì)介紹這些產(chǎn)品的特點(diǎn)、技術(shù)參數(shù)和應(yīng)用場(chǎng)景,幫助電子工程師更好地了解和使用這些產(chǎn)品。 文件下載: MAX453.pdf 一、產(chǎn)品概述
    的頭像 發(fā)表于 01-29 16:45 ?190次閱讀

    高頻視頻應(yīng)用利器:LT1205視頻多路復(fù)用器解析

    高頻視頻應(yīng)用利器:LT1203/LT1205視頻多路復(fù)用器解析 在當(dāng)今的電子設(shè)計(jì)領(lǐng)域,高頻視頻處理需求日益增長(zhǎng),一款性能卓越的視頻多路復(fù)用器顯得尤為重要。今天就帶大家深入了解Linea
    的頭像 發(fā)表于 01-29 15:00 ?136次閱讀

    高速視頻利器:LT6556視頻多路復(fù)用器詳解

    。 文件下載: LT6556.pdf 一、產(chǎn)品概述 LT6556 是一款高速的三通道 2:1 視頻多路復(fù)用器,內(nèi)部固定增益為 1。它的每個(gè)緩沖器針對(duì) 1k 負(fù)載進(jìn)行了性能優(yōu)化,2Vp-p 信號(hào)下 -3dB 帶寬達(dá)到 450MHz,非常適合驅(qū)動(dòng)高分辨率視頻信號(hào)。每個(gè)放大器獨(dú)
    的頭像 發(fā)表于 01-24 16:30 ?618次閱讀

    鯤云科技AI視頻分析解決方案助力山西化工企業(yè)打破數(shù)據(jù)壁壘

    在化工行業(yè),安全生產(chǎn)是一條不可逾越的紅線。隨著《山西省化工和危險(xiǎn)化學(xué)品企業(yè)視頻智能分析系統(tǒng)建設(shè)與應(yīng)用指南》的正式發(fā)布,如何將“AI 視頻分析”從理念切實(shí)轉(zhuǎn)化為工廠一線可落地、可感知的安全守護(hù)能力,已成為山西眾多化工企業(yè)亟需答好的
    的頭像 發(fā)表于 01-19 09:11 ?604次閱讀

    視頻光端機(jī)的使用方法

    視頻光端機(jī)使用指南 視頻光端機(jī),全稱為視頻光端傳輸終端,是安防監(jiān)控、智能交通、廣播電視等領(lǐng)域中不可或缺的設(shè)備。它的核心作用是攝像頭的模擬或數(shù)字視頻
    的頭像 發(fā)表于 12-03 10:00 ?1416次閱讀

    商品視頻關(guān)聯(lián)接口技術(shù)詳解

    ? ?在現(xiàn)代電商平臺(tái)中,商品視頻關(guān)聯(lián)接口是核心組件之一,它允許系統(tǒng)視頻內(nèi)容(如產(chǎn)品演示、評(píng)測(cè))與商品條目高效綁定。這不僅提升用戶體驗(yàn),還能驅(qū)動(dòng)轉(zhuǎn)化率。本文將從接口設(shè)計(jì)、實(shí)現(xiàn)邏輯到代碼示例,逐步拆解
    的頭像 發(fā)表于 10-13 15:44 ?382次閱讀
    商品<b class='flag-5'>視頻</b>關(guān)聯(lián)接口技術(shù)詳解

    視頻開發(fā)全棧解析

    Media Kit 讓開發(fā)者可以調(diào)用系統(tǒng)的音視頻能力,涵蓋播放、錄制、錄屏、元數(shù)據(jù)提取與轉(zhuǎn)碼六大核心功能模塊,支撐系統(tǒng)應(yīng)用與第三方應(yīng)用在視頻播放、內(nèi)容創(chuàng)作、教學(xué)錄屏、直播互動(dòng)等典型場(chǎng)景下的音視頻處理需求。
    的頭像 發(fā)表于 09-18 14:42 ?853次閱讀
    音<b class='flag-5'>視頻</b>開發(fā)全棧解析

    N9H2x如何將視頻轉(zhuǎn)換為 AVI 文件?

    N9H2x如何將視頻轉(zhuǎn)換為 AVI 文件?
    發(fā)表于 09-01 08:05

    如何降低視頻占用空間?

    我發(fā)現(xiàn)不同分辨率圖像保存的視頻大小接近,1分鐘的視頻都是30MB,如下圖 我最終目的是希望保存視頻占用空間小一點(diǎn),同時(shí)我也沒有找到降低幀率的方法,目前只能使用默認(rèn)的30幀
    發(fā)表于 08-14 06:25

    AI視頻分析系統(tǒng)

    方案背景人工智能大時(shí)代背景下,視頻應(yīng)用領(lǐng)域相關(guān)的行業(yè)應(yīng)用方式已經(jīng)發(fā)生了深刻的變化,各論安防監(jiān)控還是各類垂直行業(yè)視頻應(yīng)用,都需要AI視覺分析與識(shí)別技術(shù)助力,而且需求廣泛而迫切。在應(yīng)用層面,以AI分析
    的頭像 發(fā)表于 08-06 14:39 ?945次閱讀
    AI<b class='flag-5'>視頻</b>分析系統(tǒng)

    HarmonyOS應(yīng)用視頻投播解決方案

    系統(tǒng)投播功能讓用戶能夠輕松手機(jī)上的音視頻投放到其他設(shè)備(如PC/2in1設(shè)備、華為智慧屏)上繼續(xù)播放,實(shí)現(xiàn)跨設(shè)備切換,帶來流暢的觀影體驗(yàn)。為簡(jiǎn)化開發(fā)流程,系統(tǒng)提供了標(biāo)準(zhǔn)化的音視頻投播解決方案,開發(fā)者僅需配置資源信息、監(jiān)聽投播狀
    的頭像 發(fā)表于 07-23 16:43 ?1502次閱讀
    HarmonyOS應(yīng)用<b class='flag-5'>視頻</b>投播解決方案

    使用k230,可以使用pipeline庫(kù),輸入的視頻流進(jìn)行二值化處理嗎?

    關(guān)于使用k230,可以使用pipeline庫(kù),輸入的視頻流進(jìn)行二值化處理嗎
    發(fā)表于 06-16 06:46

    技術(shù)分享 | 迅為RK3568開發(fā)板如何將 Linux 板卡虛擬U盤

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

    如何將Linux安裝包快速轉(zhuǎn)成玲瓏包

    本篇將以 motrix 為例為大家展示如何將 Linux 安裝包快速轉(zhuǎn)成玲瓏包。
    的頭像 發(fā)表于 03-12 16:01 ?1699次閱讀
    <b class='flag-5'>如何將</b>Linux安裝包快速轉(zhuǎn)成玲瓏包