位置和各幀數(shù)據(jù)所對(duì)應(yīng)的時(shí)間。
[0090]所述數(shù)據(jù)編碼模塊460,包括:
[0091]同一編碼單元462,用于若所述視頻數(shù)據(jù)包括同一時(shí)間段拍攝得到的視頻數(shù)據(jù),則根據(jù)所述隊(duì)列中緩存的所述各幀數(shù)據(jù)各自在所述native層中的存儲(chǔ)位置和各幀數(shù)據(jù)所對(duì)應(yīng)的時(shí)間,從所述native層中讀取各幀數(shù)據(jù)并順序編碼至同一個(gè)視頻文件。
[0092]所述數(shù)據(jù)編碼模塊460,包括:單獨(dú)編碼單元464和文件合并單元466 ;
[0093]所述單獨(dú)編碼單元464,用于若所述視頻數(shù)據(jù)包括不同時(shí)間段拍攝得到的視頻數(shù)據(jù),則將各個(gè)時(shí)間段拍攝得到的所述視頻數(shù)據(jù)分別編碼至獨(dú)立的一個(gè)視頻文件;
[0094]所述文件合并單元466,用于將編碼得到的至少兩個(gè)所述視頻文件合并為同一個(gè)視頻文件。
[0095]所述裝置,還包括:文件新建單元461 ;
[0096]所述文件新建單元461,用于在每個(gè)所述時(shí)間段開始拍攝時(shí),新建與所述時(shí)間段對(duì)應(yīng)的視頻文件;
[0097]所述信息緩存單元444,還用于將所述視頻數(shù)據(jù)中各幀數(shù)據(jù)各自所對(duì)應(yīng)的視頻文件名作為所述視頻數(shù)據(jù)的一項(xiàng)相關(guān)信息緩存在所述隊(duì)列中;
[0098]所述單獨(dú)編碼單元464,用于根據(jù)所述視頻數(shù)據(jù)中各幀數(shù)據(jù)各自所對(duì)應(yīng)的視頻文件名,將所述各幀數(shù)據(jù)編碼至對(duì)應(yīng)的視頻文件中。
[0099]可選地,所述裝置,還包括:格式變換單元450 ;
[0100]所述信息緩存單元444,還用于在所述隊(duì)列中緩存每幀所述圖像幀數(shù)據(jù)的相關(guān)信息時(shí),將每幀所述圖像幀數(shù)據(jù)的圖像格式信息也作為一項(xiàng)相關(guān)信息進(jìn)行緩存;
[0101]所述格式變換單元450,用于在編碼前將每幀所述圖像幀數(shù)據(jù)根據(jù)所述圖像格式信息仿射變換至期望格式。
[0102]所述裝置,還包括:線程啟動(dòng)模塊470 ;
[0103]所述線程啟動(dòng)模塊470,用于啟動(dòng)一個(gè)異步線程;
[0104]所述數(shù)據(jù)編碼模塊460,用于通過所述異步線程執(zhí)行所述根據(jù)所述native層中緩存的所述視頻數(shù)據(jù)編碼得到視頻文件的步驟。
[0105]綜上所述,本實(shí)施例提供的視頻拍攝裝置,通過獲取拍攝到的視頻數(shù)據(jù),將視頻數(shù)據(jù)緩存到內(nèi)存分配不受限制的native層,根據(jù)native層中緩存的視頻數(shù)據(jù)編碼得到視頻文件;解決了圖像數(shù)據(jù)被緩存在Java層時(shí),會(huì)頻繁觸發(fā)垃圾回收機(jī)制和發(fā)生內(nèi)存溢出現(xiàn)象的問題;達(dá)到了不需要觸發(fā)垃圾回收機(jī)制,也不會(huì)發(fā)生內(nèi)存溢出現(xiàn)象的效果。
[0106]另一方面,【背景技術(shù)】中將圖像幀數(shù)據(jù)緩存到Java層的線程和進(jìn)行視頻編碼的線程通常為同一線程,如果onPreviewFrame回調(diào)函數(shù)被阻塞,則會(huì)導(dǎo)致編碼得到的視頻文件的幀速降低。而本實(shí)施例的視頻拍攝方法,通過異步線程來(lái)單獨(dú)進(jìn)行視頻編碼,所以不會(huì)發(fā)生阻塞現(xiàn)象,從而可以提高編碼得到的視頻文件的幀速。
[0107]本實(shí)施例提供的視頻拍攝裝置,還通過在緩存視頻數(shù)據(jù)的同時(shí),還緩存圖像幀數(shù)據(jù)和音頻幀數(shù)據(jù)各自所對(duì)應(yīng)的視頻文件名,可以實(shí)現(xiàn)在編碼時(shí)將不同幀數(shù)據(jù)編碼至正確的視頻文件中,從而實(shí)現(xiàn)了斷點(diǎn)拍攝功能。
[0108]本實(shí)施例提供的視頻拍攝裝置,還通過在緩存圖像幀數(shù)據(jù)的同時(shí),還緩存圖像幀數(shù)據(jù)所對(duì)應(yīng)的圖像格式信息,可以實(shí)現(xiàn)在編碼前將每幀圖像幀數(shù)據(jù)根據(jù)圖像格式信息仿射變換至期望格式的效果。
[0109]需要說(shuō)明的是:上述實(shí)施例提供的視頻拍攝裝置在拍攝視頻時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說(shuō)明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的視頻拍攝裝置與視頻拍攝方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
[0110]請(qǐng)參考圖6,其示出了本發(fā)明一個(gè)實(shí)施例提供的電子設(shè)備的結(jié)構(gòu)示意圖。具體來(lái)講:
[0111]電子設(shè)備600可以包括RF (Rad1 Frequency,射頻)電路610、包括有一個(gè)或一個(gè)以上計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的存儲(chǔ)器620、輸入單元630、顯示單元640、傳感器650、音頻電路660、短距離無(wú)線傳輸模塊670、包括有一個(gè)或者一個(gè)以上處理核心的處理器680、以及電源690等部件。本領(lǐng)域技術(shù)人員可以理解,圖6中示出的電子設(shè)備結(jié)構(gòu)并不構(gòu)成對(duì)電子設(shè)備的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:
[0112]RF電路610可用于收發(fā)信息或通話過程中,信號(hào)的接收和發(fā)送,特別地,將基站的下行信息接收后,交由一個(gè)或者一個(gè)以上處理器680處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路610包括但不限于天線、至少一個(gè)放大器、調(diào)諧器、一個(gè)或多個(gè)振蕩器、用戶身份模塊(SIM)卡、收發(fā)信機(jī)、耦合器、LNA(Low Noise Amplifier,低噪聲放大器)、雙工器等。此外,RF電路610還可以通過無(wú)線通信與網(wǎng)絡(luò)和其他設(shè)備通信。所述無(wú)線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于GSM(Global System of Mobile communicat1n,全球移動(dòng)通訊系統(tǒng))、GPRS (General Packet Rad1 Service,通用分組無(wú)線服務(wù))、CDMA (CodeDivis1n Multiple Access,碼分多址)>WCDMA (Wideband Code Divis1n Multiple Access,寬帶碼分多址)、LTE (Long Term Evolut1n,長(zhǎng)期演進(jìn))、電子郵件、SMS (Short MessagingService,短消息服務(wù))等。
[0113]存儲(chǔ)器620可用于存儲(chǔ)軟件程序以及模塊,處理器680通過運(yùn)行存儲(chǔ)在存儲(chǔ)器620的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器620可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)電子設(shè)備600的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器620可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。相應(yīng)地,存儲(chǔ)器620還可以包括存儲(chǔ)器控制器,以提供處理器680和輸入單元630對(duì)存儲(chǔ)器620的訪問。
[0114]輸入單元630可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號(hào)輸入。具體地,輸入單元630可包括圖像輸入設(shè)備631以及其他輸入設(shè)備632。圖像輸入設(shè)備631可以是攝像頭,也可以是光電掃描設(shè)備。除了圖像輸入設(shè)備631,輸入單元630還可以包括其他輸入設(shè)備632。具體地,其他輸入設(shè)備632可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。
[0115]顯示單元640可用于顯示由用戶輸入的信息或提供給用戶的信息以及電子設(shè)備1200的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來(lái)構(gòu)成。顯示單元640可包括顯示面板641,可選的,可以采用IXD(Liquid CrystalDisplay,液晶顯示器)、OLED (Organic Light-Emitting D1de,有機(jī)發(fā)光二極管)等形式來(lái)配置顯示面板641。
[0116]電子設(shè)備600還可包括至少一種傳感器650,比如光傳感器、運(yùn)動(dòng)傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來(lái)調(diào)節(jié)顯示面板641的亮度,接近傳感器可在電子設(shè)備600移動(dòng)到耳邊時(shí),關(guān)閉顯示面板641和/或背光。作為運(yùn)動(dòng)傳感器的一種,重力加速度傳感器可檢測(cè)各個(gè)方向上(一般為三軸)加速度的大小,靜止時(shí)可檢測(cè)出重力的大小及方向,可用于識(shí)別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動(dòng)識(shí)別相關(guān)功能(比如計(jì)步器、敲擊)等;至于電子設(shè)備600還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。
[0117]音頻電路660、揚(yáng)聲器661,傳聲器662可提供用戶與電子設(shè)備600之間的音頻接口。音頻電路660可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號(hào),傳輸?shù)綋P(yáng)聲器661,由揚(yáng)聲器661轉(zhuǎn)換為聲音信號(hào)輸出;另一方面,傳聲器662將收集的聲音信號(hào)轉(zhuǎn)換為電信號(hào),由音頻電路660接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器680處理后,經(jīng)RF電路610以發(fā)送給比如另一電子設(shè)備,或者將音頻數(shù)據(jù)輸出至存儲(chǔ)器620以便進(jìn)一步處理。音頻電路660還可能包括耳塞插孔,以提供外設(shè)耳機(jī)與電子設(shè)備600的通信。
[0118]短距離無(wú)線傳輸模塊670可以使用WiFi技術(shù),電子設(shè)備600通過短距離無(wú)線傳輸模塊670可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁(yè)和訪問流式媒體等,它為用戶提供了無(wú)線的寬帶互聯(lián)網(wǎng)訪問。雖然圖6示出了短距離無(wú)線傳輸模塊670,但是可以理解的是,其并不屬于電子設(shè)備600的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
[0119]處理器680是電子設(shè)備600的控制中心,利用各種接口和線路連接整個(gè)手機(jī)的各個(gè)部分,通過運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器620內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器620內(nèi)的數(shù)據(jù),執(zhí)行電子設(shè)備600的各種功能和處理數(shù)據(jù),從而對(duì)手機(jī)進(jìn)行整體監(jiān)控??蛇x的,處理器680可包括一個(gè)或多個(gè)處理核心;優(yōu)選的,處理器680可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無(wú)線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器680中。
[0120]電子設(shè)備600還包括給各個(gè)部件供電的電源690 (比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器680邏輯相連,