亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種由音頻和圖片組成的視頻文件的生成和檢索播放方法、裝置與流程

文檔序號:12038173閱讀:553來源:國知局
一種由音頻和圖片組成的視頻文件的生成和檢索播放方法、裝置與流程

本發(fā)明涉及音視頻處理技術(shù)領(lǐng)域,尤其涉及一種視頻文件生成和檢索播放方法、裝置。



背景技術(shù):

隨著錄像錄音設(shè)備的普及,用戶錄制、傳播音視頻的需求也越來越多。通過微信、qq等網(wǎng)絡(luò)方式進(jìn)行音視頻分享,已經(jīng)成為大眾網(wǎng)絡(luò)用戶的常態(tài),也已經(jīng)成為傳播知識、文化的最重要途徑。但用戶錄制講座、課堂教學(xué)等場合的音視頻時常常遇到一個兩難的問題:只錄制音頻時一些關(guān)鍵的圖像信息就難以同時采集,不能給人直觀印象,并且長音頻在回放時不好精確定位其中的某一部分;直接錄制為帶有聲音的視頻的話就會面臨視頻尺寸龐大、不便存儲傳輸?shù)膯栴}。因此,一種能在音頻中嵌入關(guān)鍵圖片的錄制方式將是一種好的解決方案:既控制了文件尺寸的大小,也便于給人直觀信息以及精確定位。現(xiàn)有技術(shù)中,對音視頻的去信息冗余和檢索多采用后期處理的方式實現(xiàn),操作比較麻煩,缺少一種在錄制時直接對信息高效采集并整合成可檢索視頻的方法。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的在于針對現(xiàn)有技術(shù)的不足,提供一種由音頻和圖片組成的視頻文件的生成和檢索播放方法。

本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的:一種由音頻和圖片組成的視頻文件的生成方法,包括以下步驟:

s1、采集音頻,同時采集與音頻時間同步的圖片,圖片的采集方式為自動、手動或其他系統(tǒng)觸發(fā);

s2、將采集的圖片編碼為視頻流,將音頻編碼為音頻流;

s3、將視頻流與音頻流封裝生成視頻文件,所述視頻文件用于對嵌入了圖片后的音頻進(jìn)行索引和連續(xù)播放。

進(jìn)一步地,所述步驟s2中,將要嵌入的圖片編碼為視頻流對應(yīng)時間點的i幀,視頻流中的其他幀不編碼為i幀(可編碼為p幀)。

進(jìn)一步地,i幀編碼圖片在視頻中保持靜止直到下一張圖片出現(xiàn)。

進(jìn)一步地,所述步驟s1中,自動觸發(fā)方式為用戶定時拍照:當(dāng)計時器計時到用戶設(shè)定的定時拍照時間時,自動獲取一幀圖像,將該圖像編碼為視頻流;或者,自動觸發(fā)方式為自動檢測到場景轉(zhuǎn)換時拍照:用戶設(shè)置感興趣的區(qū)域和觸發(fā)拍照的閾值th,按用戶設(shè)定的視頻幀率獲取圖像,從獲取的圖像中提取用戶設(shè)置的感興趣區(qū)域的圖像g,對g進(jìn)行運動估計得到運動矢量,對運動矢量的長度進(jìn)行加和,除以感興趣區(qū)域的圖像大小,得到運動速度的指標(biāo)e;當(dāng)e大于th時,將當(dāng)前圖像編碼為視頻流,否則,將載有上一幀信息的視頻幀拷貝并寫入到視頻流中進(jìn)行編碼。

進(jìn)一步地,所述步驟s1中,手動觸發(fā)為用戶點擊按鈕觸發(fā):當(dāng)用戶點擊拍照按鈕時,記錄當(dāng)前時間,獲取一幀圖像,將該圖像編碼為視頻流;其他系統(tǒng)觸發(fā)為:通過遙控器紅外信號觸發(fā),當(dāng)接收到其他系統(tǒng)拍照請求時,獲取當(dāng)前圖像,將該圖像編碼為視頻流。

進(jìn)一步地,所述步驟s1中,采集音頻之前,還包括參數(shù)設(shè)置的步驟,設(shè)置的參數(shù)包括音頻錄制參數(shù)、圖片拍攝參數(shù)和視頻生成參數(shù);所述音頻錄制參數(shù)包括音頻碼率;所述圖片拍攝參數(shù)包括圖片大小和分辨率,所述視頻生成參數(shù)包括視頻幀率。

一種由音頻和圖片組成的視頻文件的檢索播放方法,該方法包括:

用戶選取待播放的視頻文件;

從視頻文件中獲取視頻流并逐幀解碼;

讀取幀的類型,如果是關(guān)鍵幀,則將該幀圖像展示給用戶;關(guān)鍵幀出現(xiàn)的時間與圖片嵌入的時間點對應(yīng);

當(dāng)用戶選中某個要播放的幀后,直接跳到選中幀對應(yīng)的時間進(jìn)行音頻播放。

進(jìn)一步地,所述關(guān)鍵幀為i幀。

一種由音頻和圖片組成的視頻文件的生成裝置,該裝置包括:

音頻采集單元:采集音頻,將采集的音頻編碼為音頻流;

圖片采集單元:采集與音頻時間同步的圖片,將采集的圖片編碼為視頻流,圖片的采集方式為自動、手動觸發(fā)或其他系統(tǒng)觸發(fā);

視頻文件生成單元:將視頻流與音頻流封裝生成視頻文件,所述視頻文件用于對嵌入了圖片后的音頻進(jìn)行索引和連續(xù)播放。

一種由音頻和圖片組成的視頻文件的檢索播放裝置,該裝置包括:

顯示單元,具有錄音檢索界面,該界面顯示視頻中所有關(guān)鍵幀圖像,當(dāng)用戶點擊某個關(guān)鍵幀圖像時,自動定位到該幀所在的錄音時間點,即用戶拍攝該照片的錄音時間點播放音頻;

播放控制單元,對播放的音頻進(jìn)行控制,包括開始播放按鈕、暫停播放按鈕以及播放進(jìn)度條。

本發(fā)明的有益效果是:本發(fā)明可以在錄制音頻的同時,以定時拍照、用戶點擊按鈕觸發(fā)拍照或者自動檢測到場景轉(zhuǎn)換時拍照等方式觸發(fā)拍照,并在對應(yīng)時間點將圖片嵌入音頻中,最終生成一個方便檢索,尺寸合適的視頻文件(如mp4格式)。該視頻文件可以用普通視頻播放器播放,也可以用使用了本發(fā)明所公開的方法的播放器播放。使用后一種方式時,用戶可以通過關(guān)鍵幀索引的方式,用圖片作為輔助信息快速定位并播放。采用本發(fā)明所述方法,可以在會議、講座、課堂等場景中,在采集的音頻中按時間軸不同位置補(bǔ)充附加圖片或照片,以便在播放時更好理解音頻內(nèi)容、更快速檢索和定位播放音頻。同時,生成的視頻文件,其尺寸由音頻質(zhì)量和圖片尺寸決定。相較直接錄像得到的視頻文件,文件尺寸大大減小(在相同音頻質(zhì)量和圖片分辨率情況下)。

附圖說明

圖1為本發(fā)明實施過程的流程示意圖;

圖2為本發(fā)明實施中手機(jī)端錄制界面布局示意圖;

圖3為本發(fā)明實施中手機(jī)端播放界面布局示意圖。

具體實施方式

為了便于本領(lǐng)域技術(shù)人員的理解,下面結(jié)合附圖和具體實施例對本發(fā)明作進(jìn)一步的描述。

本發(fā)明由音頻和圖片組成的視頻文件的生成方法,包括如下步驟:

1.用戶設(shè)置音頻錄制參數(shù)(音頻錄制格式為aac之后再編碼成mp3,默認(rèn)設(shè)置為固定碼率128kbps,也可以是192kbps等,默認(rèn)采樣頻率為44.1khz,單聲道或立體聲),設(shè)置圖片拍攝參數(shù)(即設(shè)置圖片大小、分辨率,例如常用值可以是4160x3120,4160x2336,3104x3104,3264x2448,3264x1840等),視頻生成參數(shù)(即設(shè)置幀率,默認(rèn)設(shè)置為25fps),并設(shè)置觸發(fā)拍照的條件,拍照的條件可以是定時拍照、用戶點擊按鈕觸發(fā)拍照或者自動檢測到場景轉(zhuǎn)換時拍照。

當(dāng)用戶發(fā)出“開始錄音”命令時開始向文件中寫入音頻流,與此同時,當(dāng)觸發(fā)拍照條件時,攝像頭獲取一張照片并將其寫入視頻流。當(dāng)用戶發(fā)出“結(jié)束錄音”命令時,將音頻流和視頻流壓縮、封裝并保存成視頻文件(如mp4格式)。

例如,當(dāng)該功能在手機(jī)app中實現(xiàn)時,用戶進(jìn)入錄制主界面。主界面利用手機(jī)端多媒體框架采集視頻和音頻信息,并將信息顯示在界面上。除此之外,主界面還包括若干控制按鈕,分別觸發(fā)開始錄音、結(jié)束錄音、暫停錄音和拍照。當(dāng)用戶點擊“開始錄音”按鈕組件時,app開始向文件中寫入音頻流,與此同時,當(dāng)用戶點擊“拍照”按鈕組件時,app將拍攝圖像并記錄此時的錄音時間點。當(dāng)用戶點擊“結(jié)束錄音”按鈕組件時,app暫停向文件中寫入音頻、視頻流;同時,app將壓縮好的音頻流和視頻流按照記錄的錄音時間點按時間順序進(jìn)行封裝,例如封裝成mp4文件。為便于說明,以下步驟以生成mp4格式的“音頻+圖片”文件為例,其他格式視頻文件的生成步驟與之類似。

當(dāng)該功能在手機(jī)app中實現(xiàn)時,整個錄音框架可以采用mediarecorder,基本步驟為:

①首先調(diào)用mediarecorder.java中的方法比如start方法,會調(diào)用jni;

②mediarecoder.cpp和mediaplayerservice是通過binder機(jī)制來進(jìn)行進(jìn)程間的通信的,這時client端就是通過操作服務(wù)端返回的imediarecorder來對服務(wù)端進(jìn)行控制的;

③在java層調(diào)用start就是調(diào)用了stagefrightrecorder中的strat方法,在這里可以看到根據(jù)傳進(jìn)來的moutputformat值(輸出格式)會選擇不同的編碼類型的方法。

視頻流采用h264編碼格式,在主界面中,用戶拍攝的圖片作為視頻流中的一個i幀編碼,該圖片的圖像在視頻中保持靜止直到下一張照片出現(xiàn)。編碼時將畫面組(gop)的幀數(shù)上限提高,保證視頻中播放每張圖片時只有一個i幀。

2.用戶選擇定時拍照模式,并點擊開始錄制按鈕后,執(zhí)行以下過程。

①用戶設(shè)置定時時間t;

②按照用戶的設(shè)置為音視頻編碼器設(shè)置音頻碼率、視頻大小、視頻分辨率、視頻幀率,并初始化之后要用到的結(jié)構(gòu)。例如用ffmpeg編碼時,應(yīng)執(zhí)行av_register_all()、av_frame_alloc()等并對avformatcontext結(jié)構(gòu)相關(guān)參數(shù)進(jìn)行設(shè)置;

③設(shè)置此次視頻壓縮的圖像組大小和b幀數(shù)量,這是為了防止生成過多無用的i幀。例如在ffmpeg中,可以設(shè)置avformatcontext結(jié)構(gòu)中g(shù)op_size、max_b_frames參數(shù)的值均為1500;

④用戶點擊“開始錄音”按鈕后,啟動錄音和計時器,程序不斷從多媒體框架中獲取音頻流并寫入到aac音頻文件,壓縮過程中的音頻碼率與用戶的設(shè)定值相同;

⑤當(dāng)計時器計時到用戶定義的定時拍照時間時執(zhí)行下一步,同時將計時器清零;

⑥用多媒體框架從攝像頭獲取一幀圖像信息,其大小與分辨率與用戶之前使之的圖片拍攝參數(shù)相同,取得的圖像格式為yuv像素圖像;

⑦將yuv像素信息寫入一個視頻幀中,例如在ffmpeg中將yuv像素信息寫入一個avframe的data中。然后將這個視頻幀寫入到視頻流中進(jìn)行編碼,例如在ffmpeg中對應(yīng)執(zhí)行avcodec_encode_video2等函數(shù);

⑧計算出每個視頻幀重復(fù)的次數(shù),計算公式為:次數(shù)n=定時時間/幀率-1。將載有上一幀信息的視頻幀拷貝n次,并寫入到視頻流中進(jìn)行編碼。例如在ffmpeg中可以通過av_frame_copy(pframe2,pframe1)實現(xiàn)拷貝,然后執(zhí)行avcodec_encode_video2進(jìn)行視頻壓縮,將壓縮好的內(nèi)容用fwrite函數(shù)寫入h264視頻文件;

⑨如果用戶點擊“結(jié)束錄音”按鈕,則停止從多媒體框架獲取圖像和聲音,并將已經(jīng)編碼好的h264視頻文件和aac音頻文件封裝并保存成mp4格式的視頻文件。如果用戶沒有點擊“結(jié)束錄音”按鈕,則返回④。

3.用戶選擇點擊按鈕觸發(fā)拍照模式,并點擊開始錄制按鈕后,執(zhí)行以下過程。

①按照用戶的設(shè)置為音視頻編碼器設(shè)置音頻碼率、視頻大小、視頻分辨率、視頻幀率,并初始化之后要用到的結(jié)構(gòu)。例如用ffmpeg編碼時,應(yīng)執(zhí)行av_register_all()、av_frame_alloc()等并對avformatcontext結(jié)構(gòu)相關(guān)參數(shù)進(jìn)行設(shè)置;

②設(shè)置此次視頻壓縮的圖像組大小和b幀數(shù)量,這是為了防止生成過多無用的i幀。例如在ffmpeg中,可以設(shè)置avformatcontext結(jié)構(gòu)中g(shù)op_size、max_b_frames參數(shù)的值均為1500;

③用戶點擊“開始錄音”按鈕后,啟動錄音,程序不斷從多媒體框架中獲取音頻流并寫入到aac音頻文件,壓縮過程中的音頻碼率與用戶的設(shè)定值相同;

④當(dāng)用戶點擊“拍照”按鈕時,記錄當(dāng)前時間,并用多媒體框架從攝像頭獲取一幀圖像信息,其大小與分辨率與用戶之前使之的圖片拍攝參數(shù)相同,取得的圖像格式為yuv像素圖像;

⑤將yuv像素信息寫入一個視頻幀中,例如在ffmpeg中將yuv像素信息寫入一個avframe的data中。然后將這個視頻幀寫入到視頻流中進(jìn)行編碼,例如在ffmpeg中對應(yīng)執(zhí)行avcodec_encode_video2等函數(shù);

⑥讀取上一次拍攝照片時的時間,計算與當(dāng)前照片拍攝時間的時間差,然后計算出每個視頻幀重復(fù)的次數(shù),計算公式為:次數(shù)n=時間差/幀率-1。將載有上一幀信息的視頻幀拷貝n次,并寫入到視頻流中進(jìn)行編碼。例如在ffmpeg中可以通過av_frame_copy(pframe2,pframe1)實現(xiàn)拷貝,然后執(zhí)行avcodec_encode_video2進(jìn)行視頻壓縮,將壓縮好的內(nèi)容用fwrite函數(shù)寫入h264視頻文件;

⑦如果用戶點擊“結(jié)束錄音”按鈕,則停止從多媒體框架獲取圖像和聲音,并將已經(jīng)編碼好的h264視頻文件和aac音頻文件封裝并保存成mp4格式的視頻文件。如果用戶沒有點擊“結(jié)束錄音”按鈕,則返回③。

4.用戶選擇自動檢測場景轉(zhuǎn)換模式,并點擊開始錄制按鈕后,執(zhí)行以下過程。

①用戶設(shè)置感興趣的區(qū)域和觸發(fā)拍照的閾值th;

②按照用戶的設(shè)置為音視頻編碼器設(shè)置音頻碼率、視頻大小、視頻分辨率、視頻幀率,并初始化之后要用到的結(jié)構(gòu)。例如用ffmpeg編碼時,應(yīng)執(zhí)行av_register_all()、av_frame_alloc()等并對avformatcontext結(jié)構(gòu)相關(guān)參數(shù)進(jìn)行設(shè)置;

③設(shè)置此次視頻壓縮的圖像組大小和b幀數(shù)量,這是為了防止壓縮過程生成過多無用的i幀。例如在ffmpeg中,可以設(shè)置avformatcontext結(jié)構(gòu)中g(shù)op_size、max_b_frames參數(shù)的值均為1500;

④當(dāng)用戶設(shè)置的幀率為xfps時,每秒x次用多媒體框架從攝像頭獲取一幀圖像信息,其大小與分辨率與用戶之前使之的圖片拍攝參數(shù)相同,取得的圖像格式為yuv像素圖像;

⑤從上述圖像中提取出用戶設(shè)置的感興趣區(qū)域的圖像g;

⑥對當(dāng)前g進(jìn)行運動估計,這個估計是相對于前一次獲取的g而言的,運動估計采用三步搜索法等快速算法以節(jié)省時間,如果不能匹配到對應(yīng)的宏塊,則運動矢量的長度認(rèn)為是整個圖像的長;

⑦求得運動矢量后,對運動矢量的長度進(jìn)行加和,然后除以感興趣區(qū)域的圖像大小,得到運動速度的一個指標(biāo)e;

⑧當(dāng)e大于用戶設(shè)定的閾值th時,將當(dāng)前yuv像素信息寫入一個視頻幀中,例如在ffmpeg中將yuv像素信息寫入一個avframe的data中。然后將這個視頻幀寫入到視頻流中進(jìn)行編碼,例如在ffmpeg中對應(yīng)執(zhí)行avcodec_encode_video2等函數(shù)。否則,將載有上一幀信息的視頻幀拷貝并寫入到視頻流中進(jìn)行編碼。例如在ffmpeg中可以通過av_frame_copy(pframe2,pframe1)實現(xiàn)拷貝,然后執(zhí)行avcodec_encode_video2進(jìn)行視頻壓縮,將壓縮好的內(nèi)容用fwrite函數(shù)寫入h264視頻文件。

⑨如果用戶點擊“結(jié)束錄音”按鈕,則停止從多媒體框架獲取圖像和聲音,并將已經(jīng)編碼好的h264視頻文件和aac音頻文件封裝并保存成mp4格式的視頻文件。如果用戶沒有點擊“結(jié)束錄音”按鈕,則返回④。

5.在上述過程中如果用戶按下“暫停錄音”按鈕,則停止獲取錄音,并向音頻流中寫入靜音音頻,直至用戶按下“恢復(fù)錄音”按鈕,之后繼續(xù)利用多媒體框架獲取錄音并寫入音頻流。

6.用本發(fā)明的檢索播放裝置播放錄制好的視頻文件(如mp4格式)時,用戶可以選擇進(jìn)入一個錄音檢索界面,這個界面顯示了視頻中所有i幀的圖像,當(dāng)用戶點擊某個i幀圖像時,自動定位到那個幀所在的錄音時間點,即用戶拍攝該照片的錄音時間點播放音頻。

獲取所有i幀圖像的方法具體步驟如下:

①用戶從文件中選取待播放的視頻文件(如mp4格式);

②從視頻文件中獲取視頻流并逐幀解碼,在ffmpeg中,即解碼獲得一系列avframe;

③讀取幀的類型,如果是i幀,就把這一幀圖像的縮略圖及其是第幾幀、拍攝時間顯示給用戶看,在ffmpeg中,可以通過pict_type屬性查看該幀是否是i幀;

④當(dāng)用戶選中某個要播放的幀后,就直接跳到那一幀對應(yīng)的時間進(jìn)行播放。

通過該方法,用戶可以得到一個尺寸比純錄音文件和圖片文件尺寸總和略大的視頻,并可以很方便地根據(jù)圖像來檢索錄音的內(nèi)容。

7.錄制視頻文件的頁面布局方面存在三大部分:對于用戶拍照條件的選擇、對于用戶拍照的操作(包括但不限于開始拍照、停止拍照等操作)、對于用戶錄音的操作(包括但不限于開始錄音、停止錄音等操作),附圖2為安卓手機(jī)為例的界面布局;

其中,拍攝畫面為攝像頭捕捉的畫面,錄制操作包括:拍照,開始錄音,暫停錄音,結(jié)束,結(jié)束后將所有文件保存待后續(xù)操作;

播放畫面包括兩部分:幀捕捉畫面及播放操作,附圖3以安卓手機(jī)為例介紹播放界面布局。

其中,幀捕捉畫面為采集的圖片(i幀對應(yīng)照片),點擊將以畫面對應(yīng)的時間點播放音頻;播放操作包括:開始播放、暫停播放以及播放進(jìn)度條。

本發(fā)明不僅局限于上述具體實施方式,本領(lǐng)域一般技術(shù)人員根據(jù)本發(fā)明公開的內(nèi)容,可以采用其它多種具體實施方案實施本發(fā)明。因此,凡是采用本發(fā)明的設(shè)計結(jié)構(gòu)和思路,做一些簡單的變化或更改的設(shè)計,都落入本發(fā)明保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1