一種基于ios設(shè)備的視頻編輯方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明提供了一種基于IOS設(shè)備的視頻編輯方法,所述IOS設(shè)備設(shè)置有第一緩沖區(qū)域以及第二緩沖區(qū)域,所述方法包括:在接收視頻編輯指令后,判斷所述第一緩沖區(qū)域是否存在第一編輯數(shù)據(jù),所述視頻編輯指令包括目標(biāo)富媒體數(shù)據(jù)的路徑信息;若是,則獲取所述第一編輯數(shù)據(jù)并實(shí)時(shí)預(yù)覽;若否,則生成第一數(shù)據(jù)獲取請(qǐng)求;依據(jù)所述第一數(shù)據(jù)獲取請(qǐng)求判斷所述第二緩沖區(qū)域中是否存在第二編輯數(shù)據(jù);若是,則獲取所述第二編輯數(shù)據(jù)并對(duì)所述第二編輯數(shù)據(jù)進(jìn)行渲染,生成第一編輯數(shù)據(jù)存儲(chǔ)在第一緩沖區(qū)域中;若否,則依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中。
【專(zhuān)利說(shuō)明】一種基于I OS設(shè)備的視頻編輯方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及視頻編輯【技術(shù)領(lǐng)域】,特別是涉及一種基于I0S設(shè)備的視頻編輯裝置及 一種基于I0S設(shè)備的視頻編輯方法。
【背景技術(shù)】
[0002] 近年來(lái),隨著計(jì)算機(jī)圖形圖像技術(shù)的迅速發(fā)展,圖片視頻編輯技術(shù)逐漸成熟,已成 為制作影視節(jié)目、數(shù)字多媒體的主要工具。其中,圖片視頻編輯是指對(duì)圖片或者視頻進(jìn)行加 工,例如:將多張高清視頻合成一個(gè)連續(xù)的視頻,將完整視頻裁剪成多段視頻,合并多個(gè)視 頻為單個(gè)視頻,添加背景音樂(lè),改變視頻的顏色等對(duì)視頻進(jìn)行的操作。
[0003] 但是,在現(xiàn)有的圖片視頻編輯處理過(guò)程中,必須要將需要的全部素材以及視頻源 或圖片序列都裝載進(jìn)顯存后再進(jìn)行編輯,而顯存容量的大小限制了裝載的素材的數(shù)量,進(jìn) 而嚴(yán)重影響視頻編輯的發(fā)揮。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明實(shí)施例所要解決的技術(shù)問(wèn)題是提供一種基于I0S設(shè)備的視頻編輯方法,用 以解決因解碼后的數(shù)據(jù)過(guò)大導(dǎo)致存儲(chǔ)空間不足而限制視頻編輯發(fā)揮的問(wèn)題,提高了設(shè)備的 性能,并且減少了渲染等待的時(shí)間,降低了視頻預(yù)覽時(shí)延。
[0005] 相應(yīng)的,本發(fā)明實(shí)施例還提供了一種基于I0S設(shè)備的視頻編輯裝置,用以保證上 述方法的實(shí)現(xiàn)及應(yīng)用。
[0006] 為了解決上述問(wèn)題,本發(fā)明實(shí)施例公開(kāi)了一種基于I0S設(shè)備的視頻編輯裝置,包 括指令接收模塊、顯示模塊、渲染模塊、解碼模塊,所述顯示模塊與所述渲染模塊間設(shè)置有 大小為第一預(yù)設(shè)閾值的第一緩沖區(qū)域,所述解碼模塊與所述渲染模塊間設(shè)置有大小為第二 預(yù)設(shè)閾值的第二緩沖區(qū)域,其中,
[0007] 指令接收模塊,用于接收視頻編輯指令,并將所述視頻編輯指令發(fā)送至顯示模塊 和/或解碼模塊,所述視頻編輯指令包括目標(biāo)富媒體數(shù)據(jù)的路徑信息;
[0008] 顯示模塊,用于依據(jù)所述視頻編輯指令生成第一數(shù)據(jù)獲取請(qǐng)求,將所述第一數(shù)據(jù) 獲取請(qǐng)求發(fā)送至渲染模塊,以及,從所述第一緩沖區(qū)域中獲取一幀第一編輯數(shù)據(jù)進(jìn)行實(shí)時(shí) 預(yù)覽,其中所述第一編輯數(shù)據(jù)為經(jīng)過(guò)渲染的數(shù)據(jù);
[0009] 渲染模塊,用于在收到第一數(shù)據(jù)獲取請(qǐng)求時(shí),或在監(jiān)測(cè)到所述第一緩沖區(qū)域中的 數(shù)據(jù)量小于第一預(yù)設(shè)閾值時(shí),判斷所述第二緩沖區(qū)域是否存在第二編輯數(shù)據(jù),若是,則從所 述第二緩沖區(qū)域中獲取一幀第二編輯數(shù)據(jù),對(duì)所述第二編輯數(shù)據(jù)進(jìn)行渲染生成第一編輯數(shù) 據(jù),將所述第一編輯數(shù)據(jù)存儲(chǔ)到第一緩沖區(qū)域中;若否,則生成第二數(shù)據(jù)獲取請(qǐng)求,將所述 第二數(shù)據(jù)獲取請(qǐng)求發(fā)送至解碼模塊;所述第二編輯數(shù)據(jù)為經(jīng)過(guò)解碼但未經(jīng)過(guò)渲染的數(shù)據(jù);
[0010] 解碼模塊,用于在接收到所述視頻編輯指令時(shí),或在接收到所述第二數(shù)據(jù)獲取請(qǐng) 求時(shí),依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得 到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中,以及,實(shí)時(shí)監(jiān)測(cè)所述第二緩沖區(qū)域的所述第二編 輯數(shù)據(jù)的數(shù)據(jù)量,在所述數(shù)據(jù)量大于或等于第二預(yù)設(shè)閾值時(shí),停止解碼所述目標(biāo)富媒體數(shù) 據(jù),在所述數(shù)據(jù)量小于第二預(yù)設(shè)閾值時(shí),繼續(xù)解碼所述目標(biāo)富媒體數(shù)據(jù)。
[0011] 優(yōu)選地,所述目標(biāo)富媒體數(shù)據(jù)包括目標(biāo)視頻數(shù)據(jù)和/或目標(biāo)圖片數(shù)據(jù),所述第二 編輯數(shù)據(jù)包括第一圖像數(shù)據(jù),和/或第二圖像數(shù)據(jù),所述解碼模塊包括:
[0012] 視頻解碼子模塊,用于對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行解碼,得到第一圖像數(shù)據(jù);
[0013] 圖片解碼子模塊,用于對(duì)所述目標(biāo)圖片數(shù)據(jù)進(jìn)行解碼,得到第二圖像數(shù)據(jù)。
[0014] 優(yōu)選地,所述I0S設(shè)備具有avasset reader接口,所述第二緩沖區(qū)域位于顯存中, 所述I0S設(shè)備預(yù)設(shè)有內(nèi)存地址與第二緩沖區(qū)域地址的映射關(guān)系,所述視頻解碼子模塊包 括:
[0015] 解碼單元,用于采用所述avasset reader接口在內(nèi)存中對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行 解碼,得到第一圖像數(shù)據(jù);
[0016] 轉(zhuǎn)換單元,用于獲取所述內(nèi)存的內(nèi)存地址,按照所述內(nèi)存地址與第二緩沖區(qū)域地 址的映射關(guān)系,將所述第一圖像數(shù)據(jù)的存儲(chǔ)地址由所述內(nèi)存地址轉(zhuǎn)換成對(duì)應(yīng)的第二緩沖區(qū) 域地址。
[0017] 優(yōu)選地,所述解碼單元還用于,初始化所述avasset reader接口,設(shè)置輸出的一中貞 第一圖像數(shù)據(jù)的分辨率大小。
[0018] 優(yōu)選地,所述解碼單元還用于,采用所述avasset reader接口在內(nèi)存中對(duì)所述目 標(biāo)視頻數(shù)據(jù)進(jìn)行解碼,得到與所述第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù),所述音頻數(shù)據(jù)存儲(chǔ)在內(nèi) 存中。
[0019] 優(yōu)選地,所述與所述第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù),采用如下方式獲得:
[0020] 獲取所述目標(biāo)視頻數(shù)據(jù)的幀率;
[0021] 計(jì)算預(yù)設(shè)的音頻數(shù)據(jù)采樣率/幀率,得到一幀第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù)。
[0022] 優(yōu)選地,所述視頻編輯裝置還包括:
[0023] 音頻渲染模塊,用于在內(nèi)存中對(duì)所述音頻數(shù)據(jù)進(jìn)行渲染。
[0024] 優(yōu)選地,所述顯示模塊還用于,在顯示所述第一編輯數(shù)據(jù)時(shí),從內(nèi)存中獲取與所述 第一編輯數(shù)據(jù)對(duì)應(yīng)的經(jīng)過(guò)渲染后的音頻數(shù)據(jù),播放所述音頻數(shù)據(jù)。
[0025] 優(yōu)選地,所述第二緩沖區(qū)域位于顯存中,所述圖片解碼子模塊還用于,采用多線程 在內(nèi)存中對(duì)所述目標(biāo)圖片數(shù)據(jù)進(jìn)行解碼,得到第二圖像數(shù)據(jù),將所述內(nèi)存中的第二圖像數(shù) 據(jù)復(fù)制到第二緩沖區(qū)域中。
[0026] 優(yōu)選地,所述第一數(shù)據(jù)獲取請(qǐng)求包括視頻編輯樣式信息,所述渲染模塊包括:
[0027] 數(shù)據(jù)接收子模塊,用于接收所述第一圖像數(shù)據(jù)和/或所述第二圖像數(shù)據(jù);
[0028] 解析子模塊,用于解析所述視頻編輯樣式信息,獲得一個(gè)或多個(gè)特效元素;
[0029] 順序確定子模塊,用于在所述特效元素為多個(gè)時(shí),確定所述特效元素的組合順 序;
[0030] 特效添加子模塊,用于按照所述組合順序在所述第一圖像數(shù)據(jù)中依次添加對(duì)應(yīng)的 特效元素,生成第三圖像數(shù)據(jù);
[0031] 第一編輯數(shù)據(jù)生成子模塊,用于合并所述第三圖像數(shù)據(jù)以及所述第二圖像數(shù)據(jù), 生成第一編輯數(shù)據(jù)。
[0032] 優(yōu)選地,所述特效添加子模塊還用于,采用著色語(yǔ)言GLSL按照所述組合順序在所 述第一圖像數(shù)據(jù)中依次添加對(duì)應(yīng)的特效元素,生成第三圖像數(shù)據(jù)。
[0033] 優(yōu)選地,所述特效元素包括裁剪信息、尺寸縮放信息、顏色編輯信息、透明度編輯 信息、模糊效果信息。
[0034] 優(yōu)選地,所述路徑信息有多個(gè),所述視頻編輯指令包括多個(gè)路徑信息的導(dǎo)入順序, 則對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù)有多個(gè),所述解碼模塊還用于,
[0035] 在接收到所述第二數(shù)據(jù)獲取請(qǐng)求時(shí),依據(jù)所述導(dǎo)入順序確定所述多個(gè)富媒體數(shù)據(jù) 的解碼順序;
[0036] 按照所述解碼順序?qū)λ瞿繕?biāo)富媒體數(shù)據(jù)進(jìn)行解碼。
[0037] 優(yōu)選地,所述I0S設(shè)備包括圖形處理器GPU,所述渲染模塊位于所述圖形處理器 GPU的第一線程中,所述顯示模塊位于所述圖形處理器GPU的第二線程中,所述第一線程與 第二線程采用共享上下文的方式并行運(yùn)行。
[0038] 本發(fā)明還公開(kāi)了一種基于I0S設(shè)備的視頻編輯方法,所述I0S設(shè)備設(shè)置有大小為 第一預(yù)設(shè)閾值的第一緩沖區(qū)域以及大小為第二預(yù)設(shè)閾值的第二緩沖區(qū)域,所述第一緩沖區(qū) 域用于存儲(chǔ)第一編輯數(shù)據(jù),所述第二緩沖區(qū)域用于存儲(chǔ)第二編輯數(shù)據(jù),所述第一編輯數(shù)據(jù) 為經(jīng)過(guò)渲染的數(shù)據(jù),所述第二編輯數(shù)據(jù)為經(jīng)過(guò)解碼但未渲染的數(shù)據(jù),所述方法包括:
[0039] 在接收視頻編輯指令后,判斷所述第一緩沖區(qū)域是否存在第一編輯數(shù)據(jù),所述視 頻編輯指令包括目標(biāo)富媒體數(shù)據(jù)的路徑信息;
[0040] 若所述第一緩沖區(qū)域存在所述第一編輯數(shù)據(jù),則獲取所述第一編輯數(shù)據(jù)并實(shí)時(shí)預(yù) 覽;
[0041] 若所述第二緩沖區(qū)域不存在所述第一編輯數(shù)據(jù),則生成第一數(shù)據(jù)獲取請(qǐng)求;
[0042] 依據(jù)所述第一數(shù)據(jù)獲取請(qǐng)求判斷所述第二緩沖區(qū)域中是否存在第二編輯數(shù)據(jù);
[0043] 若所述第二緩沖區(qū)域存在所述第二編輯數(shù)據(jù),則獲取所述第二編輯數(shù)據(jù)并對(duì)所述 第二編輯數(shù)據(jù)進(jìn)行渲染,生成第一編輯數(shù)據(jù)存儲(chǔ)在第一緩沖區(qū)域中;
[0044] 若所述第二緩沖區(qū)域不存在第二編輯數(shù)據(jù),則依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo) 富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中。
[0045] 優(yōu)選地,所述方法還包括:
[0046] 實(shí)時(shí)監(jiān)控所述第一緩沖區(qū)域中的第一編輯數(shù)據(jù)的數(shù)據(jù)量,以及所述第二緩沖區(qū)域 中的第二編輯數(shù)據(jù)的數(shù)據(jù)量;
[0047] 在所述第一編輯數(shù)據(jù)的數(shù)據(jù)量大于或等于第一預(yù)設(shè)閾值時(shí),停止對(duì)第二編輯數(shù)據(jù) 的渲染;
[0048] 在所述第二編輯數(shù)據(jù)的數(shù)據(jù)量大于或等于第二預(yù)設(shè)閾值時(shí),停止對(duì)目標(biāo)富媒體數(shù) 據(jù)的解碼。
[0049] 優(yōu)選地,所述目標(biāo)富媒體數(shù)據(jù)包括目標(biāo)視頻數(shù)據(jù),所述第二編輯數(shù)據(jù)包括第一圖 像數(shù)據(jù),所述I0S設(shè)備具有avasset reader接口,所述依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo) 富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中 的步驟包括:
[0050] 所述依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)視頻數(shù)據(jù);
[0051] 采用所述avasset reader接口在內(nèi)存中對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行解碼,得到預(yù)設(shè) 分辨率大小的第一圖像數(shù)據(jù);
[0052] 將所述第一圖像數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中。
[0053] 優(yōu)選地,所述第二緩沖區(qū)域位于顯存中,所述I0S設(shè)備預(yù)設(shè)有內(nèi)存地址與第二緩 沖區(qū)域地址的映射關(guān)系,所述將所述第一圖像數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中的步驟包括:
[0054] 獲取所述內(nèi)存的內(nèi)存地址;
[0055] 按照所述內(nèi)存地址與第二緩沖區(qū)域地址的映射關(guān)系,將所述第一圖像數(shù)據(jù)的存儲(chǔ) 地址由所述內(nèi)存地址轉(zhuǎn)換成對(duì)應(yīng)的第二緩沖區(qū)域地址。
[0056] 優(yōu)選地,所述預(yù)設(shè)分辨率大小為在所述avasset reader接口初始化時(shí)設(shè)定。
[0057] 優(yōu)選地,所述方法還包括:
[0058] 采用所述avasset reader接口在內(nèi)存中對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行解碼,與所述第 一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù),所述音頻數(shù)據(jù)存儲(chǔ)在內(nèi)存中;
[0059] 在內(nèi)存中渲染所述音頻數(shù)據(jù);
[0060] 在顯示所述第一編輯數(shù)據(jù)時(shí),從內(nèi)存中獲取與所述第一編輯數(shù)據(jù)對(duì)應(yīng)的經(jīng)過(guò)渲染 后的音頻數(shù)據(jù);
[0061] 播放所述與所述第一編輯數(shù)據(jù)對(duì)應(yīng)的經(jīng)過(guò)渲染后的音頻數(shù)據(jù)。
[0062] 優(yōu)選地,所述與所述第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù),采用如下方式獲得:
[0063] 獲取所述目標(biāo)視頻數(shù)據(jù)的幀率;
[0064] 計(jì)算預(yù)設(shè)的音頻數(shù)據(jù)采樣率/幀率,得到一幀第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù)。
[0065] 優(yōu)選地,所述目標(biāo)富媒體數(shù)據(jù)包括目標(biāo)圖片數(shù)據(jù),所述第二編輯數(shù)據(jù)包括第二圖 像數(shù)據(jù),所述依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行 解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中的步驟包括:
[0066] 所述依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)圖片數(shù)據(jù);
[0067] 在內(nèi)存中采用多線程對(duì)所述目標(biāo)圖片數(shù)據(jù)進(jìn)行解碼,得到第二圖像數(shù)據(jù);
[0068] 將所述第二圖像數(shù)據(jù)從內(nèi)存中復(fù)制到第二緩沖區(qū)域中。
[0069] 優(yōu)選地,所述第一數(shù)據(jù)獲取請(qǐng)求包括視頻編輯樣式信息,所述獲取所述第二編輯 數(shù)據(jù)并對(duì)所述第二編輯數(shù)據(jù)進(jìn)行渲染,生成第一編輯數(shù)據(jù)存儲(chǔ)在第一緩沖區(qū)域中的步驟包 括:
[0070] 接收所述第一圖像數(shù)據(jù)和/或所述第二圖像數(shù)據(jù);
[0071] 解析所述視頻編輯樣式信息,獲得一個(gè)或多個(gè)特效元素;
[0072] 在所述特效元素為多個(gè)時(shí),確定所述特效元素的組合順序;
[0073] 按照所述組合順序在所述第一圖像數(shù)據(jù)中依次添加對(duì)應(yīng)的特效元素,生成第三圖 像數(shù)據(jù);
[0074] 合并所述第三圖像數(shù)據(jù)以及所述第二圖像數(shù)據(jù),生成第一編輯數(shù)據(jù)。
[0075] 優(yōu)選地,所述按照所述組合順序在所述第一圖像數(shù)據(jù)中依次添加對(duì)應(yīng)的特效元 素,生成第三圖像數(shù)據(jù)的步驟包括:
[0076] 采用著色語(yǔ)言GLSL按照所述組合順序在所述第一圖像數(shù)據(jù)中依次添加對(duì)應(yīng)的特 效元素,生成第三圖像數(shù)據(jù)。
[0077] 優(yōu)選地,所述特效元素包括裁剪信息、尺寸縮放信息、顏色編輯信息、透明度編輯 信息、模糊效果信息。
[0078] 優(yōu)選地,所述路徑信息有多個(gè),所述視頻編輯指令包括多個(gè)路徑信息的導(dǎo)入順序, 則對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù)有多個(gè),所述依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì) 所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中的步驟包括:
[0079] 獲取與所述路徑信息對(duì)應(yīng)的多個(gè)目標(biāo)富媒體數(shù)據(jù);
[0080] 依據(jù)所述導(dǎo)入順序確定所述多個(gè)富媒體數(shù)據(jù)的解碼順序;
[0081] 按照所述解碼順序?qū)λ瞿繕?biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第 二緩沖區(qū)域中。
[0082] 優(yōu)選地,所述I0S設(shè)備包括圖形處理器GPU,在所述GPU的第一線程中生成所述第 一編輯數(shù)據(jù),在所述圖形處理器GPU的第二線程中實(shí)時(shí)預(yù)覽所述第一編輯數(shù)據(jù),所述第一 線程與第二線程采用共享上下文的方式并行運(yùn)行。
[0083] 與【背景技術(shù)】相比,本發(fā)明實(shí)施例包括以下優(yōu)點(diǎn):
[0084] 第一,本發(fā)明實(shí)施例設(shè)置了第二緩沖區(qū)域來(lái)控制解碼模塊解碼的數(shù)據(jù)量,使得解 碼模塊無(wú)需將目標(biāo)富媒體數(shù)據(jù)完整解碼好再傳輸給渲染模塊,避免了因解碼后的數(shù)據(jù)過(guò)大 導(dǎo)致存儲(chǔ)空間不足而限制視頻編輯發(fā)揮的情況發(fā)生,提高了 I0S設(shè)備的性能,并且減少了 渲染模塊的等待時(shí)間,降低了視頻預(yù)覽時(shí)延;
[0085] 第二,在本發(fā)明實(shí)施例中,設(shè)置了第一緩沖區(qū)域來(lái)存儲(chǔ)需要顯示的數(shù)據(jù),在顯示模 塊需要的時(shí)候才到第一緩沖區(qū)域中獲得數(shù)據(jù),避免了顯示模塊由于顯示不及時(shí)而導(dǎo)致的丟 幀的情況發(fā)生,從而達(dá)到準(zhǔn)確的幀級(jí)控制,提高視頻編輯實(shí)時(shí)預(yù)覽的準(zhǔn)確性,提升視頻編輯 質(zhì)量;
[0086] 第三,本發(fā)明實(shí)施例采取可組裝的特效信息添加方式,在需要用到某個(gè)特效filter 時(shí),采用底層GLSL將該filter注冊(cè)到框架就可以(無(wú)需將一個(gè)filter寫(xiě)到另一個(gè)filter 中),隨時(shí)進(jìn)行特效元素的添加或刪減,代碼重用性高,簡(jiǎn)化了開(kāi)發(fā)者的工作量,提高特效添 加效率,進(jìn)而提1?視頻預(yù)覽效率,降低視頻預(yù)覽時(shí)延;
[0087] 第四,本發(fā)明實(shí)施例在進(jìn)行特效元素添加以及貼素材時(shí),無(wú)需進(jìn)行在特效元素添 加完后生成一次視頻,再對(duì)生成視頻進(jìn)行貼素材的過(guò)程,本發(fā)明實(shí)施例經(jīng)過(guò)一次編碼和解 碼便可完成上述動(dòng)作,節(jié)省了編碼解碼時(shí)間,提高視頻編輯效率;
[0088] 第五,在本發(fā)明實(shí)施例中,采用avasset reader接口完成目標(biāo)視頻數(shù)據(jù)的解碼,由 于avasset reader接口的特性,可以直接將解碼后得到的第二編輯數(shù)據(jù)轉(zhuǎn)換至第二緩沖區(qū) 域中,而無(wú)需將第二編輯數(shù)據(jù)由內(nèi)存復(fù)制至顯存中,節(jié)省了數(shù)據(jù)傳輸?shù)臅r(shí)間,同時(shí),防止數(shù) 據(jù)傳輸過(guò)程中數(shù)據(jù)丟失等情況的發(fā)生,提高視頻編輯準(zhǔn)確率;
[0089] 第六,本發(fā)明實(shí)施例對(duì)于目標(biāo)圖片數(shù)據(jù)的解碼,采用多線程的方式進(jìn)行,提高解碼 效率,提升設(shè)備性能。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0090] 圖1示出了本發(fā)明的一種基于I0S設(shè)備的視頻編輯裝置實(shí)施例1的結(jié)構(gòu)框圖;
[0091] 圖2示出了本發(fā)明的本發(fā)明的一種基于I0S設(shè)備的視頻編輯裝置實(shí)施例2的結(jié)構(gòu) 框圖;
[0092] 圖3示出了本發(fā)明的一種基于I0S設(shè)備的視頻編輯裝置實(shí)施例2中的視頻編輯樣 式示意圖;
[0093] 圖4示出了本發(fā)明的一種基于I0S設(shè)備的視頻編輯方法實(shí)施例的步驟流程圖。
【具體實(shí)施方式】
[0094] 為使本發(fā)明實(shí)施例的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和
【具體實(shí)施方式】對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)的說(shuō)明。
[0095] 參照?qǐng)D1,示出了本發(fā)明的一種基于I0S設(shè)備的視頻編輯裝置實(shí)施例1的結(jié)構(gòu)框 圖,可以包括指令接收模塊10、顯示模塊20、渲染模塊30以及解碼模塊40,所述顯示模塊 20與所述渲染模塊30間設(shè)置有大小為第一預(yù)設(shè)閾值的第一緩沖區(qū)域,所述解碼模塊40與 所述渲染模塊30間設(shè)置有大小為第二預(yù)設(shè)閾值的第二緩沖區(qū)域,其中,
[0096] 指令接收模塊10,用于接收視頻編輯指令,并將所述視頻編輯指令發(fā)送至顯示模 塊和/或解碼模塊,所述視頻編輯指令包括目標(biāo)富媒體數(shù)據(jù)的路徑信息;
[0097] 顯示模塊20,用于依據(jù)所述視頻編輯指令生成第一數(shù)據(jù)獲取請(qǐng)求,將所述第一數(shù) 據(jù)獲取請(qǐng)求發(fā)送至渲染模塊,以及,從所述第一緩沖區(qū)域中獲取一幀第一編輯數(shù)據(jù)進(jìn)行實(shí) 時(shí)預(yù)覽,其中所述第一編輯數(shù)據(jù)為經(jīng)過(guò)渲染的數(shù)據(jù);
[0098] 渲染模塊30,用于在收到第一數(shù)據(jù)獲取請(qǐng)求時(shí),或在監(jiān)測(cè)到所述第一緩沖區(qū)域中 的數(shù)據(jù)量小于第一預(yù)設(shè)閾值時(shí),判斷所述第二緩沖區(qū)域是否存在第二編輯數(shù)據(jù),若是,則從 所述第二緩沖區(qū)域中獲取一幀第二編輯數(shù)據(jù),對(duì)所述第二編輯數(shù)據(jù)進(jìn)行渲染生成第一編輯 數(shù)據(jù),將所述第一編輯數(shù)據(jù)存儲(chǔ)到第一緩沖區(qū)域中;若否,則生成第二數(shù)據(jù)獲取請(qǐng)求,將所 述第二數(shù)據(jù)獲取請(qǐng)求發(fā)送至解碼模塊;所述第二編輯數(shù)據(jù)為經(jīng)過(guò)解碼但未經(jīng)過(guò)渲染的數(shù) 據(jù);
[0099] 解碼模塊40,用于在接收到所述視頻編輯指令時(shí),或在接收到所述第二數(shù)據(jù)獲取 請(qǐng)求時(shí),依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼, 得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中;以及,實(shí)時(shí)監(jiān)測(cè)所述顯存區(qū)域的所述第二編輯 數(shù)據(jù)的數(shù)據(jù)量,在所述數(shù)據(jù)量大于或等于第二預(yù)設(shè)閾值時(shí),停止解碼所述目標(biāo)富媒體數(shù)據(jù), 在所述數(shù)據(jù)量小于第二預(yù)設(shè)閾值時(shí),繼續(xù)解碼所述目標(biāo)富媒體數(shù)據(jù)。
[0100] 具體而言,所述視頻編輯指令可以包括目標(biāo)富媒體數(shù)據(jù)的路徑信息等,第一緩沖 區(qū)域以及第二緩沖區(qū)域位于顯存中,第一緩沖區(qū)域用來(lái)存儲(chǔ)已經(jīng)渲染好但未顯示的數(shù)據(jù) (第一編輯數(shù)據(jù)),第二緩沖區(qū)域用來(lái)存儲(chǔ)已經(jīng)解碼好但未渲染的數(shù)據(jù)(第二編輯數(shù)據(jù)),采 用本發(fā)明實(shí)施例中的視頻編輯裝置進(jìn)行視頻編輯時(shí),可以包括如下過(guò)程:
[0101] 指令接收模塊10接收到視頻編輯指令后,將所述視頻編輯指令發(fā)送至顯示模塊 20和/或解碼模塊40,顯示模塊20接收到視頻編輯指令后,依據(jù)視頻編輯指令生成第一數(shù) 據(jù)獲取請(qǐng)求并發(fā)送至渲染模塊30。
[0102] 渲染模塊30接收到第一數(shù)據(jù)獲取請(qǐng)求后,判斷第二緩沖區(qū)域是否存在第二編輯 數(shù)據(jù),若是(解碼模塊接收到視頻編輯指令的情況,此時(shí),解碼模塊依據(jù)視頻編輯指令解碼 目標(biāo)富媒體數(shù)據(jù)),則渲染模塊30從第二緩沖區(qū)域中獲取一幀第二編輯數(shù)據(jù),對(duì)所述第二 編輯數(shù)據(jù)進(jìn)行渲染生成第一編輯數(shù)據(jù),將所述第一編輯數(shù)據(jù)存儲(chǔ)到第一緩沖區(qū)域中,顯示 模塊20檢測(cè)到第一緩沖區(qū)域中有第一編輯數(shù)據(jù),從第一緩沖區(qū)域中獲取一幀第一編輯數(shù) 據(jù)進(jìn)行預(yù)覽。若渲染模塊30判斷第二緩沖區(qū)域不存在已經(jīng)解碼好的第二編輯數(shù)據(jù)(解碼 模塊沒(méi)有接收到視頻編輯指令的情況),則生成第二數(shù)據(jù)獲取請(qǐng)求,將所述第二數(shù)據(jù)獲取請(qǐng) 求發(fā)送至解碼模塊。
[0103] 解碼模塊40接收到第二數(shù)據(jù)獲取請(qǐng)求后,依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富 媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中,以 供渲染模塊30提取。
[0104] 本發(fā)明實(shí)施例中,渲染模塊30實(shí)時(shí)監(jiān)控第一緩沖區(qū)域中的第一編輯數(shù)據(jù)的數(shù)據(jù) 量,在所述第一編輯數(shù)據(jù)的數(shù)據(jù)量小于第一預(yù)設(shè)閾值時(shí),判斷第二緩沖區(qū)域是否存在第二 編輯數(shù)據(jù),若是,則渲染模塊30從第二緩沖區(qū)域中獲取一幀第二編輯數(shù)據(jù),對(duì)所述第二編 輯數(shù)據(jù)進(jìn)行渲染生成第一編輯數(shù)據(jù),將所述第一編輯數(shù)據(jù)存儲(chǔ)到第一緩沖區(qū)域中,如此反 復(fù),直到所述第一編輯數(shù)據(jù)的數(shù)據(jù)量大于或等于第一預(yù)設(shè)閾值時(shí),停止渲染;若渲染模塊 30判斷第二緩沖區(qū)域不存在第二編輯數(shù)據(jù),則生成第二數(shù)據(jù)獲取請(qǐng)求,將所述第二數(shù)據(jù)獲 取請(qǐng)求發(fā)送至解碼模塊40,解碼模塊40接收到第二數(shù)據(jù)獲取請(qǐng)求后,對(duì)所述目標(biāo)富媒體數(shù) 據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中,以供渲染模塊30提取。
[0105] 解碼模塊實(shí)時(shí)監(jiān)控第二緩沖區(qū)域中的第二編輯數(shù)據(jù)的數(shù)據(jù)量,在所述第二編輯數(shù) 據(jù)的數(shù)據(jù)量小于第二預(yù)設(shè)閾值時(shí),繼續(xù)解碼所述目標(biāo)富媒體數(shù)據(jù),獲得第二編輯數(shù)據(jù)存儲(chǔ) 到第二緩沖區(qū)域中,如此反復(fù),直到所述第二編輯數(shù)據(jù)的數(shù)據(jù)量大于或等于第二預(yù)設(shè)閾值 時(shí),停止解碼目標(biāo)富媒體數(shù)據(jù)。
[0106] 需要說(shuō)明的是,所述第一預(yù)設(shè)閾值以及第二預(yù)設(shè)閾值可以為跟幀率相當(dāng)?shù)娜≈担?例如若幀率為25幀/秒,則預(yù)設(shè)閾值為25幀,當(dāng)然,本領(lǐng)域技術(shù)人員也可以根據(jù)實(shí)際需求 設(shè)置為其他取值,例如1幀,2幀,本發(fā)明對(duì)此無(wú)需加以限制。
[0107] 本發(fā)明實(shí)施例設(shè)置了第二緩沖區(qū)域來(lái)控制解碼模塊解碼的數(shù)據(jù)量,使得解碼模塊 40無(wú)需將目標(biāo)富媒體數(shù)據(jù)完整解碼好再傳輸給渲染模塊30,避免了因解碼后的數(shù)據(jù)過(guò)大 導(dǎo)致存儲(chǔ)空間不足而限制視頻編輯發(fā)揮的情況發(fā)生,提高了 I0S設(shè)備的性能,并且減少了 渲染模塊30的等待時(shí)間,降低了視頻預(yù)覽時(shí)延。
[0108] 另外,在本發(fā)明實(shí)施例中,設(shè)置了第一緩沖區(qū)域來(lái)存儲(chǔ)需要顯示的數(shù)據(jù),在顯示模 塊20需要的時(shí)候才到第一緩沖區(qū)域中獲得數(shù)據(jù),避免了顯示模塊20由于顯示不及時(shí)而導(dǎo) 致的丟幀的情況發(fā)生,從而達(dá)到準(zhǔn)確的幀級(jí)控制,提高視頻編輯實(shí)時(shí)預(yù)覽的準(zhǔn)確性,提升視 頻編輯質(zhì)量。
[0109] 參照?qǐng)D2,示出了本發(fā)明的一種基于I0S設(shè)備的視頻編輯裝置實(shí)施例2的結(jié)構(gòu)框 圖,所述視頻編輯裝置是基于OpenGL ES(0penGL for Embedded Systems)的視頻編輯裝 置,其中,OpenGL ES是OpenGL(Open Graphics Library,是個(gè)專(zhuān)業(yè)的圖形程序接口,是一個(gè) 功能強(qiáng)大,調(diào)用方便的底層圖形庫(kù))的三維圖形API的子集,是免授權(quán)費(fèi)的,跨平臺(tái)的,功能 完善的2D和3D圖形應(yīng)用程序接口 API,主要針對(duì)多種嵌入式設(shè)備專(zhuān)門(mén)設(shè)計(jì),包括控制臺(tái)、移 動(dòng)電話、手持設(shè)備、家電設(shè)備和汽車(chē)。它由精心定義的桌面OpenGL子集組成,創(chuàng)造了軟件與 圖形加速間靈活強(qiáng)大的底層交互接口。
[0110] 本發(fā)明實(shí)施例中的視頻編輯裝置可以包括指令接收模塊1〇〇、顯示模塊200、渲染 模塊300以及解碼模塊400,所述顯示模塊200與所述渲染模塊300間設(shè)置有大小為第一預(yù) 設(shè)閾值的第一緩沖區(qū)域,所述解碼模塊400與所述渲染模塊300間設(shè)置有大小為第二預(yù)設(shè) 閾值的第二緩沖區(qū)域,第一緩沖區(qū)域及第二緩沖區(qū)域位于顯存中,以下對(duì)每個(gè)模塊加以具 體說(shuō)明:
[0111] 指令接收模塊100,用于接收視頻編輯指令,并將所述視頻編輯指令發(fā)送至顯示模 塊和/或解碼模塊,所述視頻編輯指令包括目標(biāo)富媒體數(shù)據(jù)的路徑信息;
[0112] 在具體實(shí)現(xiàn)中,用戶(hù)可以采用本發(fā)明實(shí)施例中的視頻編輯裝置對(duì)某個(gè)視頻進(jìn)行編 輯或者將多張圖片拼接成視頻,并實(shí)時(shí)預(yù)覽視頻效果。此時(shí),用戶(hù)側(cè)的操作可以為:用戶(hù)在 視頻編輯裝置提供的特定入口中導(dǎo)入I0S設(shè)備中的用戶(hù)想用于編輯的富媒體數(shù)據(jù)的路徑 信息,選擇界面中給出的視頻編輯樣式,點(diǎn)擊"Start"等特定觸發(fā)按鈕,即可觸發(fā)本視頻編 輯裝置工作。因此,目標(biāo)富媒體數(shù)據(jù)為該用戶(hù)導(dǎo)入的路徑信息對(duì)應(yīng)的富媒體數(shù)據(jù),視頻編輯 指令為用戶(hù)點(diǎn)擊特定觸發(fā)按鈕所觸發(fā)的指令,本發(fā)明實(shí)施例中的視頻編輯指令可以包括目 標(biāo)富媒體數(shù)據(jù)的路徑信息,視頻編輯樣式信息,若所述路徑信息為多個(gè),所述視頻編輯指令 還可以包括多個(gè)路徑信息的導(dǎo)入順序等,所述目標(biāo)富媒體數(shù)據(jù)可以包括目標(biāo)視頻數(shù)據(jù)和/ 或目標(biāo)圖片數(shù)據(jù)。
[0113] 需要說(shuō)明的是,所述I0S設(shè)備中的富媒體數(shù)據(jù)的來(lái)源,可以為采用所述I0S設(shè)備采 集得到的,也可以是其他外部設(shè)備導(dǎo)入的,本發(fā)明實(shí)施例對(duì)富媒體數(shù)據(jù)的來(lái)源無(wú)需加以限 制。
[0114] 指令接收模塊100接收視頻編輯指令后,將該視頻編輯指令發(fā)送至顯示模塊200 和/或解碼模塊400,以觸發(fā)顯示模塊200和/或解碼模塊400的工作。
[0115] 顯示模塊200,用于依據(jù)所述視頻編輯指令生成第一數(shù)據(jù)獲取請(qǐng)求,將所述第一數(shù) 據(jù)獲取請(qǐng)求發(fā)送至渲染模塊,以及,從所述第一緩沖區(qū)域中獲取一幀第一編輯數(shù)據(jù)進(jìn)行實(shí) 時(shí)預(yù)覽,其中所述第一編輯數(shù)據(jù)為經(jīng)過(guò)渲染的數(shù)據(jù);
[0116] 在本發(fā)明實(shí)施例中,顯示模塊200的作用是實(shí)時(shí)預(yù)覽第二緩沖區(qū)域中的第一編輯 數(shù)據(jù),具體而言,指令接收模塊100接收到視頻編輯指令后,將視頻編輯指令發(fā)送至顯示模 塊200,顯示模塊200接收到視頻編輯指令后,生成第一數(shù)據(jù)獲取請(qǐng)求,并將所述第一數(shù)據(jù) 獲取請(qǐng)求發(fā)送至渲染模塊300,以觸發(fā)渲染模塊300獲取第二編輯數(shù)據(jù),并對(duì)所述第二編輯 數(shù)據(jù)進(jìn)行渲染生成第一編輯數(shù)據(jù)。
[0117] 第一編輯數(shù)據(jù)以隊(duì)列的形式存儲(chǔ)在第一緩沖區(qū)域中,顯示模塊200還可以每隔預(yù) 設(shè)時(shí)間段監(jiān)測(cè)第一緩沖區(qū)域中是否有第一編輯數(shù)據(jù),若有,則從隊(duì)列中獲取排列在前面的 第一編輯數(shù)據(jù)進(jìn)行顯示。
[0118] 在具體實(shí)現(xiàn)中,顯示模塊200向渲染模塊300發(fā)送第一數(shù)據(jù)獲取請(qǐng)求的過(guò)程,實(shí)際 為顯示模塊200調(diào)用渲染模塊300中的相應(yīng)函數(shù)的過(guò)程。
[0119] 渲染模塊300,用于在收到第一數(shù)據(jù)獲取請(qǐng)求時(shí),或在監(jiān)測(cè)到所述第一緩沖區(qū)域 中的數(shù)據(jù)量小于第一預(yù)設(shè)閾值時(shí),判斷所述第二緩沖區(qū)域是否存在第二編輯數(shù)據(jù),若是,則 從所述第二緩沖區(qū)域中獲取一幀第二編輯數(shù)據(jù),對(duì)所述第二編輯數(shù)據(jù)進(jìn)行渲染生成第一編 輯數(shù)據(jù),將所述第一編輯數(shù)據(jù)存儲(chǔ)到第一緩沖區(qū)域中;若否,則生成第二數(shù)據(jù)獲取請(qǐng)求,將 所述第二數(shù)據(jù)獲取請(qǐng)求發(fā)送至解碼模塊;所述第二編輯數(shù)據(jù)為經(jīng)過(guò)解碼但未經(jīng)過(guò)渲染的數(shù) 據(jù);
[0120] 在具體實(shí)現(xiàn)中,渲染模塊300的作用是對(duì)解碼后的第二編輯數(shù)據(jù)進(jìn)行渲染生成第 一編輯數(shù)據(jù),具體而言,渲染模塊300接收到第一數(shù)據(jù)獲取請(qǐng)求后,判斷第二緩沖區(qū)域是否 存在第二編輯數(shù)據(jù),若是(解碼模塊接收到視頻編輯指令的情況,此時(shí),解碼模塊依據(jù)視頻 編輯指令解碼目標(biāo)富媒體數(shù)據(jù)),則渲染模塊300從第二緩沖區(qū)域中獲取一幀第二編輯數(shù) 據(jù),對(duì)所述第二編輯數(shù)據(jù)進(jìn)行渲染生成第一編輯數(shù)據(jù),將所述第一編輯數(shù)據(jù)存儲(chǔ)到第一緩 沖區(qū)域中,顯示模塊200檢測(cè)到第一緩沖區(qū)域中有第一編輯數(shù)據(jù),從第一緩沖區(qū)域中獲取 一幀第一編輯數(shù)據(jù)進(jìn)行預(yù)覽。若渲染模塊300判斷第二緩沖區(qū)域不存在已經(jīng)解碼好的第二 編輯數(shù)據(jù)(解碼模塊沒(méi)有接收到視頻編輯指令的情況),則生成第二數(shù)據(jù)獲取請(qǐng)求,將所述 第二數(shù)據(jù)獲取請(qǐng)求發(fā)送至解碼模塊。其中,渲染模塊300向解碼模塊400發(fā)送第二數(shù)據(jù)獲 取請(qǐng)求的過(guò)程,實(shí)際為渲染模塊300調(diào)用解碼模塊400中的相應(yīng)函數(shù)的過(guò)程。
[0121] 本發(fā)明實(shí)施例中,渲染模塊300實(shí)時(shí)監(jiān)控第一緩沖區(qū)域中的第一編輯數(shù)據(jù)的數(shù)據(jù) 量,在所述第一編輯數(shù)據(jù)的數(shù)據(jù)量小于第一預(yù)設(shè)閾值時(shí),判斷第二緩沖區(qū)域是否存在第二 編輯數(shù)據(jù),若是,則渲染模塊300從第二緩沖區(qū)域中獲取一幀第二編輯數(shù)據(jù),對(duì)所述第二編 輯數(shù)據(jù)進(jìn)行渲染生成第一編輯數(shù)據(jù),將所述第一編輯數(shù)據(jù)存儲(chǔ)到第一緩沖區(qū)域中,如此反 復(fù),直到第一緩沖區(qū)域中的所述第一編輯數(shù)據(jù)的數(shù)據(jù)量大于或等于第一預(yù)設(shè)閾值時(shí),停止 渲染;若渲染模塊300判斷第二緩沖區(qū)域不存在第二編輯數(shù)據(jù),則生成第二數(shù)據(jù)獲取請(qǐng)求, 將所述第二數(shù)據(jù)獲取請(qǐng)求發(fā)送至解碼模塊40。
[0122] 本發(fā)明實(shí)施例設(shè)置第一緩沖區(qū)域存儲(chǔ)第一編輯數(shù)據(jù),顯示模塊每隔預(yù)設(shè)時(shí)間段從 第一緩沖區(qū)域中獲取一幀第一編輯數(shù)據(jù)進(jìn)行顯示,顯示模塊在需要的時(shí)候才在第一緩沖區(qū) 域中獲取第一編輯數(shù)據(jù),避免因顯示不及時(shí)導(dǎo)致的丟幀的情況發(fā)生,提高視頻編輯質(zhì)量,提 升I0S設(shè)備性能。需要說(shuō)明的是,所述預(yù)設(shè)時(shí)間段為按照幀率計(jì)算得到的每顯示一幀需要 的時(shí)長(zhǎng),所述第一預(yù)設(shè)閾值可以為跟幀率相當(dāng)?shù)娜≈?,?dāng)然本領(lǐng)域技術(shù)人員也可以根據(jù)實(shí) 際需求將第一預(yù)設(shè)閾值設(shè)置為其他取值,例如1幀,2幀,本發(fā)明對(duì)此無(wú)需加以限制。
[0123] 在實(shí)際中,對(duì)第二編輯數(shù)據(jù)進(jìn)行渲染的過(guò)程,可以為對(duì)第二編輯數(shù)據(jù)添加特效以 及貼素材的過(guò)程。由于視頻編輯指令中包含視頻編輯樣式信息,因此依據(jù)視頻編輯指令生 成的第一數(shù)據(jù)獲取請(qǐng)求也包含視頻編輯樣式信息,在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中, 渲染模塊300可以包括如下子模塊 :
[0124] 數(shù)據(jù)接收子模塊3001,接收第一圖像數(shù)據(jù)和/或第二圖像數(shù)據(jù);
[0125] 具體而言,第一圖像數(shù)據(jù)為對(duì)目標(biāo)視頻數(shù)據(jù)解碼后得到的數(shù)據(jù),第二圖像數(shù)據(jù)為 對(duì)目標(biāo)圖片數(shù)據(jù)解碼后得到的數(shù)據(jù)。第二圖像數(shù)據(jù)可以作為素材數(shù)據(jù),貼在第一圖像數(shù)據(jù) 中。對(duì)于第一圖像數(shù)據(jù)以及第二圖像數(shù)據(jù)將在下面解碼模塊中加以具體說(shuō)明。
[0126] 解析子模塊3002,用于解析所述視頻編輯樣式信息,獲得一個(gè)或多個(gè)特效元素;
[0127] 順序確定子模塊3003,用于在所述特效元素為多個(gè)時(shí),確定所述特效元素的組合 順序;
[0128] 具體而言,視頻編輯樣式信息為上述用戶(hù)側(cè)操作中用戶(hù)選擇的視頻編輯樣式后生 成的信息,是用戶(hù)所想要添加到目標(biāo)富媒體數(shù)據(jù)中的特效元素以及素材元素的組合,通過(guò) 解析視頻編輯樣式信息可以獲得一個(gè)或多個(gè)特效元素,以及在特效信息為多個(gè)時(shí),可以確 定所述特效元素的組合順序。例如,如圖3所示的視頻編輯樣式示意圖,對(duì)該視頻編輯樣式 解析,可知其添加了透明泡泡特效以及顏色特效,而由于視頻編輯樣式中的泡泡是有顏色 的,可以得知兩個(gè)特效的組合順序是先添加透明泡泡特效,然后添加顏色特效。
[0129] 進(jìn)一步地,還可以依據(jù)所述視頻編輯樣式信息獲取特效元素添加的位置信息,即 特效元素添加到視頻的哪個(gè)時(shí)間段上。例如,若一段視頻數(shù)據(jù)一共有10秒,若需要在4-6 秒添加特效元素,則特效元素添加在4-6秒的幀上。
[0130] 所述特效元素可以包括裁剪信息、尺寸縮放信息、顏色編輯信息、透明度編輯信 息、模糊效果信息等。在實(shí)際中,可以使用濾鏡(filter)來(lái)添加特效元素。
[0131] 特效添加子模塊3004,用于按照所述組合順序在所述第一圖像數(shù)據(jù)中依次添加對(duì) 應(yīng)的特效元素,生成第三圖像數(shù)據(jù);
[0132] 具體而言,渲染模塊300內(nèi)部包含各種不同的獨(dú)立的且模塊化了的filter,可以 根據(jù)用戶(hù)的選擇來(lái)進(jìn)行不同的組合得到不一樣的效果。具體的,可以按照組合順序?qū)⒍?個(gè)特效元素的濾鏡filter串聯(lián)起來(lái),當(dāng)處理到特效元素添加的位置信息時(shí),對(duì)該位置信息 上的每一幀第一圖像數(shù)據(jù),依次被串聯(lián)起來(lái)的濾鏡渲染后生成第三圖像數(shù)據(jù),例如,一個(gè) 1920x1080的第二編輯數(shù)據(jù),最后要生成一個(gè)480x480正方形的第一編輯數(shù)據(jù),可以先經(jīng)過(guò) 裁剪filter,裁剪成1080x1080,然后通過(guò)縮放filter縮放成480x480。
[0133] 在本發(fā)明實(shí)施例中,可以采用著色語(yǔ)言GLSL按照組合順序在第一圖像數(shù)據(jù)中依 次添加對(duì)應(yīng)的特效元素,生成第三圖像數(shù)據(jù)。GLSL(0penGL Shading Language, OpenGL著 色語(yǔ)言)是用來(lái)在OpenGL中著色編程的語(yǔ)言,也即開(kāi)發(fā)人員寫(xiě)的短小的自定義程序,是在 圖形卡的GPU(Graphic Processor Unit圖形處理器)上執(zhí)行的,代替了固定的渲染管線的 一部分,使渲染管線中不同層次具有可編程型。比如:視圖轉(zhuǎn)換、投影轉(zhuǎn)換等??梢詫LSL 所寫(xiě)的代碼直接作為長(zhǎng)字符串資源放進(jìn)應(yīng)用程序中。
[0134] 本發(fā)明實(shí)施例采取可組裝的特效信息添加方式,在需要用到某個(gè)特效filter時(shí), 采用底層GLSL將該filter注冊(cè)到框架就可以(無(wú)需將一個(gè)filter寫(xiě)到另一個(gè)filter中), 隨時(shí)進(jìn)行特效元素的添加或刪減,代碼重用性高,簡(jiǎn)化了開(kāi)發(fā)者的工作量,提高特效添加效 率,進(jìn)而提高視頻預(yù)覽效率,降低視頻預(yù)覽時(shí)延。
[0135] 第一編輯數(shù)據(jù)生成子模塊3005,用于合并所述第三圖像數(shù)據(jù)以及所述第二圖像數(shù) 據(jù),生成第一編輯數(shù)據(jù)。
[0136] 具體而言,對(duì)第一圖像數(shù)據(jù)添加特效元素生成第三圖像數(shù)據(jù)后,以第二圖像數(shù)據(jù) 作為素材元素貼到第三圖像數(shù)據(jù)中,即合并第三圖像數(shù)據(jù)以及第二圖像數(shù)據(jù),生成第一編 輯數(shù)據(jù)。在具體實(shí)現(xiàn)中,可以通過(guò)疊加運(yùn)算例如第三圖像數(shù)據(jù)以及第二圖像數(shù)據(jù)的對(duì)應(yīng)位 置像素相加的方式來(lái)實(shí)現(xiàn)第三圖像數(shù)據(jù)和第二圖像數(shù)據(jù)的合并。
[0137] 本發(fā)明實(shí)施例在進(jìn)行特效元素添加以及貼素材時(shí),無(wú)需進(jìn)行在特效元素添加完后 生成一次視頻,再對(duì)生成視頻進(jìn)行貼素材的過(guò)程,本發(fā)明實(shí)施例經(jīng)過(guò)一次編碼和解碼便可 完成上述動(dòng)作,節(jié)省了編碼解碼時(shí)間,提高視頻編輯效率。
[0138] 在本發(fā)明實(shí)施例中,I0S設(shè)備包括圖形處理器GPU(Graphic Processing Unit,圖 形處理器,GPU是顯示卡的"大腦",它決定了該顯卡的檔次和大部分性能),顯示模塊200 以及渲染模塊300位于GPU的不同線程中(例如,渲染模塊300位于第一線程中,顯示模 塊200位于第二線程中),并且并行工作,然而,OPENGL規(guī)定,在并行工作的不同的線程中是 不能使用相同的上下文context,在此種情況下,本發(fā)明實(shí)施例使用共享方式創(chuàng)建兩個(gè)上下 文,這樣兩個(gè)線程之間的紋理texture傳遞采用共享上下文的模式。
[0139] 解碼模塊400,用于在接收到視頻編輯指令時(shí),或在接收到所述所述第二數(shù)據(jù)獲取 請(qǐng)求時(shí),依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼, 得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中;以及,實(shí)時(shí)監(jiān)測(cè)所述第二緩沖區(qū)域的所述第二 編輯數(shù)據(jù)的數(shù)據(jù)量,在所述數(shù)據(jù)量大于或等于第二預(yù)設(shè)閾值時(shí),停止解碼所述目標(biāo)富媒體 數(shù)據(jù),在所述數(shù)據(jù)量小于第二預(yù)設(shè)閾值時(shí),繼續(xù)解碼所述目標(biāo)富媒體數(shù)據(jù)。
[0140] 在本發(fā)明實(shí)施例中,解碼模塊400的作用是將目標(biāo)富媒體數(shù)據(jù)解碼成一幀一幀的 原始數(shù)據(jù)(即第二編輯數(shù)據(jù))。具體而言,若解碼模塊400接收到視頻編輯指令,則解碼模 塊400在初始化時(shí)即開(kāi)始解碼目標(biāo)富媒體數(shù)據(jù),具體的,解碼模塊400依據(jù)所述路徑信息獲 取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第 二緩沖區(qū)域中,以供渲染模塊300提取。若解碼模塊400沒(méi)有接收到視頻編輯指令,則解碼 模塊400在接收到第二數(shù)據(jù)獲取請(qǐng)求后才開(kāi)始解碼目標(biāo)富媒體數(shù)據(jù),具體的,解碼模塊接 收到第二數(shù)據(jù)獲取請(qǐng)求后,依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富 媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中,以供渲染模塊300提取。
[0141] 本發(fā)明實(shí)施例中,解碼模塊400實(shí)時(shí)監(jiān)控第二緩沖區(qū)域中的第二編輯數(shù)據(jù)的數(shù)據(jù) 量,在所述第二編輯數(shù)據(jù)的數(shù)據(jù)量小于第二預(yù)設(shè)閾值時(shí),繼續(xù)解碼所述目標(biāo)富媒體數(shù)據(jù),獲 得第二編輯數(shù)據(jù)存儲(chǔ)到第二緩沖區(qū)域中,如此反復(fù),直到所述第二緩沖區(qū)域中的第二編輯 數(shù)據(jù)的數(shù)據(jù)量大于或等于第二預(yù)設(shè)閾值時(shí),停止解碼目標(biāo)富媒體數(shù)據(jù)。其中,所述第二預(yù)設(shè) 閾值可以為跟幀率相當(dāng)?shù)娜≈担?dāng)然本領(lǐng)域技術(shù)人員也可以根據(jù)實(shí)際需求將第二預(yù)設(shè)閾值 設(shè)置為其他取值,例如1幀,2幀,本發(fā)明對(duì)此無(wú)需加以限制。
[0142] 本發(fā)明實(shí)施例設(shè)置第二緩沖區(qū)域,使得解碼模塊400只需要解碼一部分目標(biāo)富媒 體數(shù)據(jù)即可開(kāi)始渲染及顯示操作,無(wú)需將目標(biāo)富媒體數(shù)據(jù)完整解碼好再傳輸給渲染模塊 300,避免了因解碼后的數(shù)據(jù)過(guò)大導(dǎo)致存儲(chǔ)空間不足限制視頻編輯發(fā)揮的情況發(fā)生,提高了 設(shè)備性能,且減少了對(duì)渲染模塊300的等待時(shí)間,降低了視頻預(yù)覽時(shí)延。
[0143] 在具體實(shí)現(xiàn)中,若所述路徑信息有多個(gè),則視頻編輯指令包括多個(gè)路徑信息的導(dǎo) 入順序,則依據(jù)視頻編輯指令生成的第二數(shù)據(jù)獲取請(qǐng)求可以包括多個(gè)路徑信息的導(dǎo)入順 序,解碼模塊400在對(duì)目標(biāo)富媒體數(shù)據(jù)解碼時(shí),還可以依據(jù)所述導(dǎo)入順序確定所述多個(gè)富 媒體數(shù)據(jù)的解碼順序;按照所述解碼順序?qū)λ瞿繕?biāo)富媒體數(shù)據(jù)進(jìn)行解碼。即在導(dǎo)入多個(gè) 富媒體數(shù)據(jù)的路徑的情況下,先解碼第一個(gè)導(dǎo)入的富媒體數(shù)據(jù)的路徑對(duì)應(yīng)的富媒體數(shù)據(jù)。
[0144] 在本發(fā)明實(shí)施例中,目標(biāo)富媒體數(shù)據(jù)可以包括目標(biāo)圖片數(shù)據(jù)以及目標(biāo)視頻數(shù)據(jù), 相對(duì)應(yīng)地,所述第二編輯數(shù)據(jù)可以包括第一圖像數(shù)據(jù),和/或第二圖像數(shù)據(jù),解碼模塊400 可以包括視頻解碼子模塊4001以及圖片解碼子模塊4002,視頻解碼子模塊4001用于對(duì)目 標(biāo)視頻數(shù)據(jù)進(jìn)行解碼,得到第一圖像數(shù)據(jù);圖片解碼子模塊4002用于對(duì)目標(biāo)圖片數(shù)據(jù)進(jìn)行 解碼,得到第二圖像數(shù)據(jù)。
[0145] 在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述I0S設(shè)備具有avasset reader接口, 所述I0S設(shè)備預(yù)設(shè)有內(nèi)存地址與第二緩沖區(qū)域地址的映射關(guān)系,所述視頻解碼子模塊可以 包括如下單元:
[0146] 解碼單元,用于采用所述avasset reader接口在內(nèi)存中對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行 解碼,得到第一圖像數(shù)據(jù)以及與所述第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù);
[0147] 具體而言,avasset 是 I0S 設(shè)備中的一個(gè)視頻 API (Application Programming Interface,應(yīng)用程序編程接口)接口,avasset reader接口用來(lái)解碼目標(biāo)視頻數(shù)據(jù),得 到一幀一幀的第一圖像數(shù)據(jù)以及與所述第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù)??梢酝ㄟ^(guò)初始化 所述avasset reader接口來(lái)設(shè)置輸出的一巾貞第一圖像數(shù)據(jù)的分辨率大小,從而省略將其 他分辨率縮放至需要的分辨率的過(guò)程,節(jié)省時(shí)間的同時(shí),提升了后續(xù)的渲染速度。其中, 所述分辨率可以為I0S設(shè)備的最佳顯示分辨率,例如,需求的分辨率是640x480,可以直接 通過(guò)avasset reader的初始化來(lái)設(shè)置輸出大小,這樣可以直接減掉一些高清視頻縮放到 640x480的過(guò)程,提升后續(xù)的渲染速度。
[0148] 在本發(fā)明實(shí)施例的一種優(yōu)選實(shí)施例中,所述與所述第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù) 據(jù),可以采用如下方式獲得:獲取所述目標(biāo)視頻數(shù)據(jù)的幀率;計(jì)算預(yù)設(shè)的音頻數(shù)據(jù)采樣率/ 幀率,得到一幀第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù)。
[0149] 具體的,幀率(Frame rate)是用于測(cè)量顯示幀數(shù)的量度。所謂的測(cè)量單位為每 秒顯示巾貞數(shù)(Frames per Second,簡(jiǎn)稱(chēng):FPS)或"赫茲"(Hz),所述目標(biāo)視頻數(shù)據(jù)的巾貞率 可以從所述目標(biāo)視頻數(shù)據(jù)的頭文件中獲得,音頻采樣率是指錄音設(shè)備在一秒鐘內(nèi)對(duì)聲音信 號(hào)的采樣次數(shù),采樣頻率越高聲音的還原就越真實(shí)越自然,在數(shù)字音頻領(lǐng)域,常用的采樣 率有:8, 000Hz、ll, 025Hz、22, 050Hz、32, 000Hz、44, 100Hz、47,250Hz、48,000Hz、50,000Hz、 50, 400Hz、96, 000或者192, 000Hz、2. 8224MHz等。計(jì)算預(yù)設(shè)的音頻數(shù)據(jù)采樣率/幀率,得到 一幀第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù),例如,目標(biāo)視頻數(shù)據(jù)的幀率是25幀每秒,音頻采樣率 是8000Hz (表示一秒鐘采樣了 8000個(gè)點(diǎn),假設(shè)每個(gè)點(diǎn)是一個(gè)字節(jié),那么一秒鐘音頻數(shù)據(jù)量 就是8000個(gè)字節(jié)),計(jì)算出一幀第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù)為8000/25 = 320個(gè)字節(jié)。
[0150] 轉(zhuǎn)換單元,用于獲取所述內(nèi)存的內(nèi)存地址,按照所述內(nèi)存地址與第二緩沖區(qū)域地 址的映射關(guān)系,將所述第一圖像數(shù)據(jù)的存儲(chǔ)地址由所述內(nèi)存地址轉(zhuǎn)換成對(duì)應(yīng)的第二緩沖區(qū) 域地址。
[0151] 在本發(fā)明實(shí)施例中,采用avasset reader接口完成目標(biāo)視頻數(shù)據(jù)的解碼,由于 avasset reader接口的特性,可以直接將解碼后得到的第二編輯數(shù)據(jù)轉(zhuǎn)換至第二緩沖區(qū)域 中,具體的,本發(fā)明實(shí)施例的I0S設(shè)備上預(yù)設(shè)有內(nèi)存地址與第二緩沖區(qū)域地址的映射關(guān)系, 當(dāng)解碼出第二編輯數(shù)據(jù)后,可以通過(guò)avasset reader接口,依據(jù)所述內(nèi)存地址與第二緩沖 區(qū)域地址的映射關(guān)系,直接將第二編輯數(shù)據(jù)的內(nèi)存地址轉(zhuǎn)換成第二緩沖區(qū)域地址,期間第 二編輯數(shù)據(jù)的存儲(chǔ)位置并沒(méi)發(fā)生變化,只是存儲(chǔ)的地址名稱(chēng)發(fā)生了改變,而無(wú)需將第二編 輯數(shù)據(jù)由內(nèi)存復(fù)制至顯存中,節(jié)省了數(shù)據(jù)傳輸?shù)臅r(shí)間,同時(shí),防止數(shù)據(jù)傳輸過(guò)程中數(shù)據(jù)丟失 等情況的發(fā)生,提商視頻編輯準(zhǔn)確率。
[0152] 需要說(shuō)明的是,對(duì)目標(biāo)視頻數(shù)據(jù)解碼后得到的第一圖像數(shù)據(jù)存儲(chǔ)在顯存的第二緩 沖區(qū)域中,并在顯存中對(duì)所述第一圖像數(shù)據(jù)進(jìn)行渲染;而解碼后得到的與所述第一圖像數(shù) 據(jù)對(duì)應(yīng)的音頻數(shù)據(jù)存儲(chǔ)在內(nèi)存中,本發(fā)明實(shí)施例還設(shè)置有音頻渲染模塊,用于在內(nèi)存中對(duì) 所述音頻數(shù)據(jù)進(jìn)行渲染(包括變調(diào)處理等)。當(dāng)顯示模塊200從第一緩沖區(qū)域中獲取第一 編輯數(shù)據(jù)用于顯示時(shí),還可以從內(nèi)存中獲取與所述第一編輯數(shù)據(jù)對(duì)應(yīng)的經(jīng)過(guò)渲染后的音頻 數(shù)據(jù),播放所述音頻數(shù)據(jù)。
[0153] 本發(fā)明實(shí)施例采用avasset reader接口來(lái)解碼目標(biāo)視頻數(shù)據(jù),由于avasset reader本身的工作原理是,想要獲取哪個(gè)時(shí)間的幀,就會(huì)解碼對(duì)應(yīng)的幀,不存在與音頻數(shù)據(jù) 的同步,避免了調(diào)用播放器來(lái)解碼視頻時(shí)出現(xiàn)音視頻同步導(dǎo)致的后期處理時(shí)間不夠快出現(xiàn) 的丟幀的情況,達(dá)到精準(zhǔn)的幀級(jí)控制。
[0154] 對(duì)于目標(biāo)圖片數(shù)據(jù)的解碼,本實(shí)施例中的圖片解碼子模塊采用多線程的方式在內(nèi) 存中對(duì)所述目標(biāo)圖片數(shù)據(jù)進(jìn)行解碼,提高解碼效率,提升設(shè)備性能。解碼后得到的第二圖像 數(shù)據(jù)可以通過(guò)opengles的teximage2d函數(shù)由內(nèi)存中復(fù)制到第二緩沖區(qū)域中。另外,若圖 片解碼子模塊用來(lái)將多張圖片拼接成視頻,由于在所述第二緩沖區(qū)域中的所述第二圖像數(shù) 據(jù)的數(shù)據(jù)量大于第二預(yù)設(shè)閾值,停止解碼所述目標(biāo)圖片數(shù)據(jù),否則,繼續(xù)解碼所述目標(biāo)圖片 數(shù)據(jù),防止出現(xiàn)多張圖片拼接成視頻時(shí)存儲(chǔ)空間不夠而導(dǎo)致需要限制拼接圖片張數(shù)引起的 影響視頻質(zhì)量的問(wèn)題,提升視頻編輯質(zhì)量。
[0155] 參照?qǐng)D4,示出了本發(fā)明的一種基于I0S設(shè)備的視頻編輯方法實(shí)施例的步驟流程 圖,所述I0S設(shè)備設(shè)置有大小為第一預(yù)設(shè)閾值的第一緩沖區(qū)域以及大小為第二預(yù)設(shè)閾值的 第二緩沖區(qū)域,所述第一緩沖區(qū)域用于存儲(chǔ)第一編輯數(shù)據(jù),所述第二緩沖區(qū)域用于存儲(chǔ)第 二編輯數(shù)據(jù),所述第一編輯數(shù)據(jù)為經(jīng)過(guò)渲染的數(shù)據(jù),所述第二編輯數(shù)據(jù)為經(jīng)過(guò)解碼但未渲 染的數(shù)據(jù),本發(fā)明實(shí)施例可以包括如下步驟:
[0156] 步驟401,接收視頻編輯指令,所述視頻編輯指令包括目標(biāo)富媒體數(shù)據(jù)的路徑信 息;
[0157] 步驟402,判斷所述第一緩沖區(qū)域中是否存在第一編輯數(shù)據(jù),若是,執(zhí)行步驟403, 若否,執(zhí)行步驟404;
[0158] 步驟403,獲取所述第一編輯數(shù)據(jù)并實(shí)時(shí)預(yù)覽;
[0159] 步驟404,生成第一數(shù)據(jù)獲取請(qǐng)求,繼續(xù)執(zhí)行步驟405 ;
[0160] 步驟405,依據(jù)所述第一數(shù)據(jù)獲取請(qǐng)求判斷所述第二緩沖區(qū)域中是否存在第二編 輯數(shù)據(jù),若是,執(zhí)行步驟406,若否,執(zhí)行步驟407 ;
[0161] 步驟406,獲取所述第二編輯數(shù)據(jù)并對(duì)所述第二編輯數(shù)據(jù)進(jìn)行渲染,生成第一編輯 數(shù)據(jù)存儲(chǔ)在第一緩沖區(qū)域中,返回執(zhí)行步驟402 ;
[0162] 步驟407,依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù) 進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中,返回執(zhí)行步驟405。
[0163] 在本發(fā)明的一種優(yōu)選實(shí)施例中,本發(fā)明實(shí)施例還可以包括:
[0164] 實(shí)時(shí)監(jiān)控所述第一緩沖區(qū)域中的第一編輯數(shù)據(jù)的數(shù)據(jù)量,以及所述第二緩沖區(qū)域 中的第二編輯數(shù)據(jù)的數(shù)據(jù)量,在所述第二編輯數(shù)據(jù)的數(shù)據(jù)量大于或等于第二預(yù)設(shè)閾值時(shí), 停止對(duì)目標(biāo)富媒體數(shù)據(jù)的解碼。
[0165] 在本發(fā)明的一種優(yōu)選實(shí)施例中,所述目標(biāo)富媒體數(shù)據(jù)包括目標(biāo)視頻數(shù)據(jù),所述第 二編輯數(shù)據(jù)包括第一圖像數(shù)據(jù),所述I0S設(shè)備具有avasset reader接口,所述步驟407可 以包括如下子步驟:
[0166] 子步驟S11,所述依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)視頻數(shù)據(jù);
[0167] 子步驟S12,采用所述avasset reader接口在內(nèi)存中對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行解 碼,得到預(yù)設(shè)分辨率大小的第一圖像數(shù)據(jù);
[0168] 其中,所述預(yù)設(shè)分辨率大小為在所述avasset reader接口初始化時(shí)設(shè)定。
[0169] 子步驟S13,將所述第一圖像數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中。
[0170] 在本發(fā)明的一種優(yōu)選實(shí)施例中,所述第二緩沖區(qū)域位于顯存中,所述I0S設(shè)備預(yù) 設(shè)有內(nèi)存地址與第二緩沖區(qū)域地址的映射關(guān)系,所述子步驟S13進(jìn)一步可以包括如下子步 驟:
[0171] 子步驟S131,獲取所述內(nèi)存的內(nèi)存地址;
[0172] 子步驟S132,按照所述內(nèi)存地址與第二緩沖區(qū)域地址的映射關(guān)系,將所述第一圖 像數(shù)據(jù)的存儲(chǔ)地址由所述內(nèi)存地址轉(zhuǎn)換成對(duì)應(yīng)的第二緩沖區(qū)域地址。
[0173] 在本發(fā)明的一種優(yōu)選實(shí)施例中,所述方法還可以包括:
[0174] 采用所述avasset reader接口在內(nèi)存中對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行解碼,與所述第 一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù),所述音頻數(shù)據(jù)存儲(chǔ)在內(nèi)存中;
[0175] 在內(nèi)存中渲染所述音頻數(shù)據(jù);
[0176] 在顯示所述第一編輯數(shù)據(jù)時(shí),從內(nèi)存中獲取與所述第一編輯數(shù)據(jù)對(duì)應(yīng)的經(jīng)過(guò)渲染 后的音頻數(shù)據(jù);
[0177] 播放所述與所述第一編輯數(shù)據(jù)對(duì)應(yīng)的經(jīng)過(guò)渲染后的音頻數(shù)據(jù)。
[0178] 在本發(fā)明的一種優(yōu)選實(shí)施例中,所述與所述第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù),可以 采用如下方式獲得:
[0179] 獲取所述目標(biāo)視頻數(shù)據(jù)的幀率;
[0180] 計(jì)算預(yù)設(shè)的音頻數(shù)據(jù)采樣率/幀率,得到一幀第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù)。
[0181] 在本發(fā)明的一種優(yōu)選實(shí)施例中,所述目標(biāo)富媒體數(shù)據(jù)包括目標(biāo)圖片數(shù)據(jù),所述第 二編輯數(shù)據(jù)包括第二圖像數(shù)據(jù),所述步驟407可以包括如下子步驟 :
[0182] 子步驟S21,所述依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)圖片數(shù)據(jù);
[0183] 子步驟S22,在內(nèi)存中采用多線程對(duì)所述目標(biāo)圖片數(shù)據(jù)進(jìn)行解碼,得到第二圖像數(shù) 據(jù);
[0184] 子步驟S23,將所述第二圖像數(shù)據(jù)從內(nèi)存中復(fù)制到第二緩沖區(qū)域中。
[0185] 在本發(fā)明的一種優(yōu)選實(shí)施例中,所述第一數(shù)據(jù)獲取請(qǐng)求包括視頻編輯樣式信息, 所述步驟406可以包括如下子步驟 :
[0186] 子步驟S31,接收所述第一圖像數(shù)據(jù)和/或所述第二圖像數(shù)據(jù);
[0187] 子步驟S32,解析所述視頻編輯樣式信息,獲得一個(gè)或多個(gè)特效元素;
[0188] 子步驟S33,在所述特效元素為多個(gè)時(shí),確定所述特效元素的組合順序;
[0189] 子步驟S34,按照所述組合順序在所述第一圖像數(shù)據(jù)中依次添加對(duì)應(yīng)的特效元素, 生成第三圖像數(shù)據(jù);
[0190] 子步驟S35,合并所述第三圖像數(shù)據(jù)以及所述第二圖像數(shù)據(jù),生成第一編輯數(shù)據(jù)。
[0191] 在本發(fā)明的一種優(yōu)選實(shí)施例中,所述子步驟S34進(jìn)一步可以包括如下子步驟:
[0192] 子步驟S341,采用著色語(yǔ)言GLSL按照所述組合順序在所述第一圖像數(shù)據(jù)中依次 添加對(duì)應(yīng)的特效元素,生成第三圖像數(shù)據(jù)。
[0193] 作為本發(fā)明實(shí)施例的一種示例,所述特效元素可以包括裁剪信息、尺寸縮放信息、 顏色編輯信息、透明度編輯信息、模糊效果信息。
[0194] 在本發(fā)明的一種優(yōu)選實(shí)施例中,所述路徑信息有多個(gè),所述視頻編輯指令包括多 個(gè)路徑信息的導(dǎo)入順序,則對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù)有多個(gè),所述步驟407可以包括如下子 步驟:
[0195] 子步驟S41,獲取與所述路徑信息對(duì)應(yīng)的多個(gè)目標(biāo)富媒體數(shù)據(jù);
[0196] 子步驟S42,依據(jù)所述導(dǎo)入順序確定所述多個(gè)富媒體數(shù)據(jù)的解碼順序;
[0197] 子步驟S43,按照所述解碼順序?qū)λ瞿繕?biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù) 據(jù)存儲(chǔ)在第二緩沖區(qū)域中。
[0198] 在本發(fā)明的一種優(yōu)選實(shí)施例中,所述I0S設(shè)備包括圖形處理器GPU,在所述GPU的 第一線程中生成所述第一編輯數(shù)據(jù),在所述圖形處理器GPU的第二線程中實(shí)時(shí)預(yù)覽所述第 一編輯數(shù)據(jù),所述第一線程與第二線程采用共享上下文的方式并行運(yùn)行。
[0199] 對(duì)于方法實(shí)施例而言,由于其與上述裝置實(shí)施例基本相似,所以描述的比較簡(jiǎn)單, 相關(guān)之處參照在通訊錄中添加插件的方法實(shí)施例的部分說(shuō)明即可。
[0200] 本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與 其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參照即可。
[0201] 本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明實(shí)施例的實(shí)施例可提供為方法、裝置、或計(jì)算 機(jī)程序產(chǎn)品。因此,本發(fā)明實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和 硬件方面的實(shí)施例的形式。而且,本發(fā)明實(shí)施例可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可 用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上 實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0202] 本發(fā)明實(shí)施例是參照根據(jù)本發(fā)明實(shí)施例的方法、移動(dòng)設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序 產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框 圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商?供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理 移動(dòng)設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理移動(dòng)設(shè)備的處 理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多 個(gè)方框中指定的功能的裝置。
[0203] 這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理移動(dòng)設(shè)備 以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包 括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方 框或多個(gè)方框中指定的功能。
[0204] 這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理移動(dòng)設(shè)備上,使得 在計(jì)算機(jī)或其他可編程移動(dòng)設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在 計(jì)算機(jī)或其他可編程移動(dòng)設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程 和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0205] 盡管已描述了本發(fā)明實(shí)施例的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基 本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為 包括優(yōu)選實(shí)施例以及落入本發(fā)明實(shí)施例范圍的所有變更和修改。
[0206] 最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將 一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作 之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)"包括"、"包含"或者其任何其他變體意 在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者移動(dòng)設(shè)備不僅包 括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品 或者移動(dòng)設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句"包括一個(gè)……"限定的要 素,并不排除在包括所述要素的過(guò)程、方法、物品或者移動(dòng)設(shè)備中還存在另外的相同要素。
[0207] 以上對(duì)本發(fā)明實(shí)施例所提供的一種基于I0S設(shè)備的視頻編輯裝置和一種基于I0S 設(shè)備的視頻編輯方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明實(shí)施例的原理及實(shí) 施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明實(shí)施例的方法及其核心思 想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實(shí)施例的思想,在【具體實(shí)施方式】及應(yīng)用 范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明實(shí)施例的限制。
【權(quán)利要求】
1. 一種基于IOS設(shè)備的視頻編輯裝置,其特征在于,包括指令接收模塊、顯示模塊、渲 染模塊、解碼模塊,所述顯示模塊與所述渲染模塊間設(shè)置有大小為第一預(yù)設(shè)閾值的第一緩 沖區(qū)域,所述解碼模塊與所述渲染模塊間設(shè)置有大小為第二預(yù)設(shè)閾值的第二緩沖區(qū)域,其 中, 指令接收模塊,用于接收視頻編輯指令,并將所述視頻編輯指令發(fā)送至顯示模塊和/ 或解碼模塊,所述視頻編輯指令包括目標(biāo)富媒體數(shù)據(jù)的路徑信息; 顯示模塊,用于依據(jù)所述視頻編輯指令生成第一數(shù)據(jù)獲取請(qǐng)求,將所述第一數(shù)據(jù)獲取 請(qǐng)求發(fā)送至渲染模塊,以及,從所述第一緩沖區(qū)域中獲取一幀第一編輯數(shù)據(jù)進(jìn)行實(shí)時(shí)預(yù)覽, 其中所述第一編輯數(shù)據(jù)為經(jīng)過(guò)渲染的數(shù)據(jù); 渲染模塊,用于在收到第一數(shù)據(jù)獲取請(qǐng)求時(shí),或在監(jiān)測(cè)到所述第一緩沖區(qū)域中的數(shù)據(jù) 量小于第一預(yù)設(shè)閾值時(shí),判斷所述第二緩沖區(qū)域是否存在第二編輯數(shù)據(jù),若是,則從所述第 二緩沖區(qū)域中獲取一幀第二編輯數(shù)據(jù),對(duì)所述第二編輯數(shù)據(jù)進(jìn)行渲染生成第一編輯數(shù)據(jù), 將所述第一編輯數(shù)據(jù)存儲(chǔ)到第一緩沖區(qū)域中;若否,則生成第二數(shù)據(jù)獲取請(qǐng)求,將所述第二 數(shù)據(jù)獲取請(qǐng)求發(fā)送至解碼模塊;所述第二編輯數(shù)據(jù)為經(jīng)過(guò)解碼但未經(jīng)過(guò)渲染的數(shù)據(jù); 解碼模塊,用于在接收到所述視頻編輯指令時(shí),或在接收到所述第二數(shù)據(jù)獲取請(qǐng)求時(shí), 依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第 二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中,以及,實(shí)時(shí)監(jiān)測(cè)所述第二緩沖區(qū)域的所述第二編輯數(shù) 據(jù)的數(shù)據(jù)量,在所述數(shù)據(jù)量大于或等于第二預(yù)設(shè)閾值時(shí),停止解碼所述目標(biāo)富媒體數(shù)據(jù),在 所述數(shù)據(jù)量小于第二預(yù)設(shè)閾值時(shí),繼續(xù)解碼所述目標(biāo)富媒體數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述目標(biāo)富媒體數(shù)據(jù)包括目標(biāo)視頻數(shù)據(jù) 和/或目標(biāo)圖片數(shù)據(jù),所述第二編輯數(shù)據(jù)包括第一圖像數(shù)據(jù),和/或第二圖像數(shù)據(jù),所述解 碼模塊包括: 視頻解碼子模塊,用于對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行解碼,得到第一圖像數(shù)據(jù); 圖片解碼子模塊,用于對(duì)所述目標(biāo)圖片數(shù)據(jù)進(jìn)行解碼,得到第二圖像數(shù)據(jù)。
3. 根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述I0S設(shè)備具有avasset reader接口, 所述第二緩沖區(qū)域位于顯存中,所述IOS設(shè)備預(yù)設(shè)有內(nèi)存地址與第二緩沖區(qū)域地址的映射 關(guān)系,所述視頻解碼子模塊包括: 解碼單元,用于采用所述avasset reader接口在內(nèi)存中對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行解 碼,得到第一圖像數(shù)據(jù); 轉(zhuǎn)換單元,用于獲取所述內(nèi)存的內(nèi)存地址,按照所述內(nèi)存地址與第二緩沖區(qū)域地址的 映射關(guān)系,將所述第一圖像數(shù)據(jù)的存儲(chǔ)地址由所述內(nèi)存地址轉(zhuǎn)換成對(duì)應(yīng)的第二緩沖區(qū)域地 址。
4. 根據(jù)權(quán)利要求3所述的裝置,其特征在于,所述解碼單元還用于,初始化所述 avasset reader接口,設(shè)置輸出的一巾貞第一圖像數(shù)據(jù)的分辨率大小。
5. 根據(jù)權(quán)利要求3或4所述的裝置,其特征在于,所述解碼單元還用于,采用所述 avasset reader接口在內(nèi)存中對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行解碼,得到與所述第一圖像數(shù)據(jù)對(duì) 應(yīng)的音頻數(shù)據(jù),所述音頻數(shù)據(jù)存儲(chǔ)在內(nèi)存中。
6. 根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述與所述第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù) 據(jù),采用如下方式獲得: 獲取所述目標(biāo)視頻數(shù)據(jù)的幀率; 計(jì)算預(yù)設(shè)的音頻數(shù)據(jù)采樣率/幀率,得到一幀第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù)。
7. 根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述視頻編輯裝置還包括: 音頻渲染模塊,用于在內(nèi)存中對(duì)所述音頻數(shù)據(jù)進(jìn)行渲染。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述顯示模塊還用于,在顯示所述第一編 輯數(shù)據(jù)時(shí),從內(nèi)存中獲取與所述第一編輯數(shù)據(jù)對(duì)應(yīng)的經(jīng)過(guò)渲染后的音頻數(shù)據(jù),播放所述音 頻數(shù)據(jù)。
9. 根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述第二緩沖區(qū)域位于顯存中,所述圖片 解碼子模塊還用于,采用多線程在內(nèi)存中對(duì)所述目標(biāo)圖片數(shù)據(jù)進(jìn)行解碼,得到第二圖像數(shù) 據(jù),將所述內(nèi)存中的第二圖像數(shù)據(jù)復(fù)制到第二緩沖區(qū)域中。
10. 根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述第一數(shù)據(jù)獲取請(qǐng)求包括視頻編輯樣 式信息,所述渲染模塊包括: 數(shù)據(jù)接收子模塊,用于接收所述第一圖像數(shù)據(jù)和/或所述第二圖像數(shù)據(jù); 解析子模塊,用于解析所述視頻編輯樣式信息,獲得一個(gè)或多個(gè)特效元素; 順序確定子模塊,用于在所述特效元素為多個(gè)時(shí),確定所述特效元素的組合順序; 特效添加子模塊,用于按照所述組合順序在所述第一圖像數(shù)據(jù)中依次添加對(duì)應(yīng)的特效 元素,生成第三圖像數(shù)據(jù); 第一編輯數(shù)據(jù)生成子模塊,用于合并所述第三圖像數(shù)據(jù)以及所述第二圖像數(shù)據(jù),生成 第一編輯數(shù)據(jù)。
11. 根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述特效添加子模塊還用于,采用著色 語(yǔ)言GLSL按照所述組合順序在所述第一圖像數(shù)據(jù)中依次添加對(duì)應(yīng)的特效元素,生成第三 圖像數(shù)據(jù)。
12. 根據(jù)權(quán)利要求10或11所述的裝置,其特征在于,所述特效元素包括裁剪信息、尺寸 縮放信息、顏色編輯信息、透明度編輯信息、模糊效果信息。
13. 根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述路徑信息有多個(gè),所述視頻編輯指 令包括多個(gè)路徑信息的導(dǎo)入順序,則對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù)有多個(gè),所述解碼模塊還用于, 在接收到所述第二數(shù)據(jù)獲取請(qǐng)求時(shí),依據(jù)所述導(dǎo)入順序確定所述多個(gè)富媒體數(shù)據(jù)的解 碼順序; 按照所述解碼順序?qū)λ瞿繕?biāo)富媒體數(shù)據(jù)進(jìn)行解碼。
14. 根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述IOS設(shè)備包括圖形處理器GPU,所述 渲染模塊位于所述圖形處理器GPU的第一線程中,所述顯示模塊位于所述圖形處理器GPU 的第二線程中,所述第一線程與第二線程采用共享上下文的方式并行運(yùn)行。
15. -種基于IOS設(shè)備的視頻編輯方法,其特征在于,所述IOS設(shè)備設(shè)置有大小為第一 預(yù)設(shè)閾值的第一緩沖區(qū)域以及大小為第二預(yù)設(shè)閾值的第二緩沖區(qū)域,所述第一緩沖區(qū)域用 于存儲(chǔ)第一編輯數(shù)據(jù),所述第二緩沖區(qū)域用于存儲(chǔ)第二編輯數(shù)據(jù),所述第一編輯數(shù)據(jù)為經(jīng) 過(guò)渲染的數(shù)據(jù),所述第二編輯數(shù)據(jù)為經(jīng)過(guò)解碼但未渲染的數(shù)據(jù),所述方法包括: 在接收視頻編輯指令后,判斷所述第一緩沖區(qū)域是否存在第一編輯數(shù)據(jù),所述視頻編 輯指令包括目標(biāo)富媒體數(shù)據(jù)的路徑信息; 若所述第一緩沖區(qū)域存在所述第一編輯數(shù)據(jù),則獲取所述第一編輯數(shù)據(jù)并實(shí)時(shí)預(yù)覽; 若所述第二緩沖區(qū)域不存在所述第一編輯數(shù)據(jù),則生成第一數(shù)據(jù)獲取請(qǐng)求; 依據(jù)所述第一數(shù)據(jù)獲取請(qǐng)求判斷所述第二緩沖區(qū)域中是否存在第二編輯數(shù)據(jù); 若所述第二緩沖區(qū)域存在所述第二編輯數(shù)據(jù),則獲取所述第二編輯數(shù)據(jù)并對(duì)所述第二 編輯數(shù)據(jù)進(jìn)行渲染,生成第一編輯數(shù)據(jù)存儲(chǔ)在第一緩沖區(qū)域中; 若所述第二緩沖區(qū)域不存在第二編輯數(shù)據(jù),則依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒 體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中。
16. 根據(jù)權(quán)利要求15所述的方法,其特征在于,還包括: 實(shí)時(shí)監(jiān)控所述第一緩沖區(qū)域中的第一編輯數(shù)據(jù)的數(shù)據(jù)量,以及所述第二緩沖區(qū)域中的 第二編輯數(shù)據(jù)的數(shù)據(jù)量; 在所述第一編輯數(shù)據(jù)的數(shù)據(jù)量大于或等于第一預(yù)設(shè)閾值時(shí),停止對(duì)第二編輯數(shù)據(jù)的渲 染; 在所述第二編輯數(shù)據(jù)的數(shù)據(jù)量大于或等于第二預(yù)設(shè)閾值時(shí),停止對(duì)目標(biāo)富媒體數(shù)據(jù)的 解碼。
17. 根據(jù)權(quán)利要求15所述的方法,其特征在于,所述目標(biāo)富媒體數(shù)據(jù)包括目標(biāo)視頻數(shù) 據(jù),所述第二編輯數(shù)據(jù)包括第一圖像數(shù)據(jù),所述IOS設(shè)備具有avasset reader接口,所述依 據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二 編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中的步驟包括: 所述依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)視頻數(shù)據(jù); 采用所述avasset reader接口在內(nèi)存中對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行解碼,得到預(yù)設(shè)分辨 率大小的第一圖像數(shù)據(jù); 將所述第一圖像數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中。
18. 根據(jù)權(quán)利要求17所述的方法,其特征在于,所述第二緩沖區(qū)域位于顯存中,所述 IOS設(shè)備預(yù)設(shè)有內(nèi)存地址與第二緩沖區(qū)域地址的映射關(guān)系,所述將所述第一圖像數(shù)據(jù)存儲(chǔ) 在第二緩沖區(qū)域中的步驟包括: 獲取所述內(nèi)存的內(nèi)存地址; 按照所述內(nèi)存地址與第二緩沖區(qū)域地址的映射關(guān)系,將所述第一圖像數(shù)據(jù)的存儲(chǔ)地址 由所述內(nèi)存地址轉(zhuǎn)換成對(duì)應(yīng)的第二緩沖區(qū)域地址。
19. 根據(jù)權(quán)利要求17所述的方法,其特征在于,所述預(yù)設(shè)分辨率大小為在所述avasset reader接口初始化時(shí)設(shè)定。
20. 根據(jù)權(quán)利要求17所述的方法,其特征在于,還包括: 采用所述avasset reader接口在內(nèi)存中對(duì)所述目標(biāo)視頻數(shù)據(jù)進(jìn)行解碼,與所述第一圖 像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù),所述音頻數(shù)據(jù)存儲(chǔ)在內(nèi)存中; 在內(nèi)存中渲染所述音頻數(shù)據(jù); 在顯示所述第一編輯數(shù)據(jù)時(shí),從內(nèi)存中獲取與所述第一編輯數(shù)據(jù)對(duì)應(yīng)的經(jīng)過(guò)渲染后的 音頻數(shù)據(jù); 播放所述與所述第一編輯數(shù)據(jù)對(duì)應(yīng)的經(jīng)過(guò)渲染后的音頻數(shù)據(jù)。
21. 根據(jù)權(quán)利要求20所述的方法,其特征在于,所述與所述第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻 數(shù)據(jù),采用如下方式獲得: 獲取所述目標(biāo)視頻數(shù)據(jù)的幀率; 計(jì)算預(yù)設(shè)的音頻數(shù)據(jù)采樣率/幀率,得到一幀第一圖像數(shù)據(jù)對(duì)應(yīng)的音頻數(shù)據(jù)。
22. 根據(jù)根據(jù)權(quán)利要求17所述的方法,其特征在于,所述目標(biāo)富媒體數(shù)據(jù)包括目標(biāo)圖 片數(shù)據(jù),所述第二編輯數(shù)據(jù)包括第二圖像數(shù)據(jù),所述依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)富 媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩沖區(qū)域中的 步驟包括: 所述依據(jù)所述路徑信息獲取對(duì)應(yīng)的目標(biāo)圖片數(shù)據(jù); 在內(nèi)存中采用多線程對(duì)所述目標(biāo)圖片數(shù)據(jù)進(jìn)行解碼,得到第二圖像數(shù)據(jù); 將所述第二圖像數(shù)據(jù)從內(nèi)存中復(fù)制到第二緩沖區(qū)域中。
23. 根據(jù)權(quán)利要求22所述的方法,其特征在于,所述第一數(shù)據(jù)獲取請(qǐng)求包括視頻編輯 樣式信息,所述獲取所述第二編輯數(shù)據(jù)并對(duì)所述第二編輯數(shù)據(jù)進(jìn)行渲染,生成第一編輯數(shù) 據(jù)存儲(chǔ)在第一緩沖區(qū)域中的步驟包括: 接收所述第一圖像數(shù)據(jù)和/或所述第二圖像數(shù)據(jù); 解析所述視頻編輯樣式信息,獲得一個(gè)或多個(gè)特效元素; 在所述特效元素為多個(gè)時(shí),確定所述特效元素的組合順序; 按照所述組合順序在所述第一圖像數(shù)據(jù)中依次添加對(duì)應(yīng)的特效元素,生成第三圖像數(shù) 據(jù); 合并所述第三圖像數(shù)據(jù)以及所述第二圖像數(shù)據(jù),生成第一編輯數(shù)據(jù)。
24. 根據(jù)權(quán)利要求23所述的方法,其特征在于,所述按照所述組合順序在所述第一圖 像數(shù)據(jù)中依次添加對(duì)應(yīng)的特效元素,生成第三圖像數(shù)據(jù)的步驟包括: 采用著色語(yǔ)言GLSL按照所述組合順序在所述第一圖像數(shù)據(jù)中依次添加對(duì)應(yīng)的特效元 素,生成第三圖像數(shù)據(jù)。
25. 根據(jù)權(quán)利要求23或24所述的方法,其特征在于,所述特效元素包括裁剪信息、尺寸 縮放信息、顏色編輯信息、透明度編輯信息、模糊效果信息。
26. 根據(jù)權(quán)利要求15所述的方法,其特征在于,所述路徑信息有多個(gè),所述視頻編輯指 令包括多個(gè)路徑信息的導(dǎo)入順序,則對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù)有多個(gè),所述依據(jù)所述路徑信 息獲取對(duì)應(yīng)的目標(biāo)富媒體數(shù)據(jù),對(duì)所述目標(biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ) 在第二緩沖區(qū)域中的步驟包括: 獲取與所述路徑信息對(duì)應(yīng)的多個(gè)目標(biāo)富媒體數(shù)據(jù); 依據(jù)所述導(dǎo)入順序確定所述多個(gè)富媒體數(shù)據(jù)的解碼順序; 按照所述解碼順序?qū)λ瞿繕?biāo)富媒體數(shù)據(jù)進(jìn)行解碼,得到第二編輯數(shù)據(jù)存儲(chǔ)在第二緩 沖區(qū)域中。
27. 根據(jù)權(quán)利要求15所述的方法,其特征在于,所述IOS設(shè)備包括圖形處理器GPU,在 所述GPU的第一線程中生成所述第一編輯數(shù)據(jù),在所述圖形處理器GPU的第二線程中實(shí)時(shí) 預(yù)覽所述第一編輯數(shù)據(jù),所述第一線程與第二線程采用共享上下文的方式并行運(yùn)行。
【文檔編號(hào)】G11B27/031GK104091607SQ201410265869
【公開(kāi)日】2014年10月8日 申請(qǐng)日期:2014年6月13日 優(yōu)先權(quán)日:2014年6月13日
【發(fā)明者】蔣金峰 申請(qǐng)人:北京奇藝世紀(jì)科技有限公司