一種多媒體文件的錄制方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多媒體的技術(shù)領(lǐng)域,特別是涉及一種多媒體文件的錄制方法和一種多媒體文件的錄制裝置。
【背景技術(shù)】
[0002]在行車記錄儀、場地監(jiān)控等視頻監(jiān)控領(lǐng)域,一般需要長時間錄制視頻。
[0003]在目前的視頻錄制工具中,由于文件系統(tǒng)及計(jì)算平臺的限制,需要在錄制時設(shè)定錄制視頻文件的尺寸上限,用多個視頻文件連續(xù)存放錄制的視頻。
[0004]但是,在結(jié)束視頻文件的錄制時,需要關(guān)閉視頻錄制工具,在重新進(jìn)行視頻文件的錄制時,再重新啟動視頻錄制工具,而啟動時需要進(jìn)行初始化等操作。
[0005]由此可見,在視頻文件切換過程中需要耗費(fèi)較長時間,切換過程中無法進(jìn)行錄制,造成監(jiān)控時間上的空白,對于要求嚴(yán)格的監(jiān)控領(lǐng)域,這種視頻數(shù)據(jù)的丟失可能存在嚴(yán)重問題。
【發(fā)明內(nèi)容】
[0006]鑒于上述問題,提出了本發(fā)明實(shí)施例以便提供一種克服上述問題的一種多媒體文件的錄制方法和相應(yīng)的一種多媒體文件的錄制裝置。
[0007]為了解決上述問題,本發(fā)明實(shí)施例公開了一種多媒體文件的錄制方法,包括:
[0008]當(dāng)接收到多媒體文件的錄制請求時,創(chuàng)建數(shù)據(jù)源、編碼器、打包器、第一多媒體寫入器、第二多媒體寫入器;
[0009]通過數(shù)據(jù)源持續(xù)采集多媒體數(shù)據(jù);
[0010]編碼器持續(xù)對所述多媒體數(shù)據(jù)進(jìn)行編碼,并將編碼之后的多媒體數(shù)據(jù)寫入預(yù)置的緩存隊(duì)列;
[0011]第一多媒體寫入器從所述緩存隊(duì)列讀取編碼后的多媒體數(shù)據(jù),并寫入第一多媒體文件;
[0012]判斷所述第一多媒體文件是否超過預(yù)設(shè)的文件大小閾值;若是,則切換至第二多媒體寫入器從所述緩存隊(duì)列讀取編碼后的多媒體數(shù)據(jù),并寫入第二多媒體文件。
[0013]優(yōu)選地,所述第一多媒體寫入器包括第一寫入器和第一打包器,所述第二多媒體寫入器包括第二寫入器和第二打包器。
[0014]優(yōu)選地,所述第一多媒體寫入器從所述緩存隊(duì)列讀取編碼后的多媒體數(shù)據(jù),并寫入第一多媒體文件的步驟包括:
[0015]第一打包器從所述緩存隊(duì)列讀取編碼之后的多媒體數(shù)據(jù);
[0016]第一打包器將編碼之后的多媒體數(shù)據(jù)打包成多媒體數(shù)據(jù)包;
[0017]第一寫入器將所述多媒體數(shù)據(jù)包寫入第一多媒體文件。
[0018]優(yōu)選地,所述第一多媒體寫入器從所述緩存隊(duì)列讀取多媒體數(shù)據(jù)包,并寫入第一多媒體文件的步驟包括:
[0019]當(dāng)所述第一多媒體文件超過預(yù)設(shè)的文件大小閾值時,第一多媒體寫入器生成封裝完成事件;
[0020]第一多媒體寫入器廣播所述封裝完成事件。
[0021]優(yōu)選地,所述判斷所述第一多媒體文件是否超過預(yù)設(shè)的文件大小閾值的步驟包括:
[0022]判斷是否接收到由第一多媒體寫入器廣播的封裝完成事件;若是,則判斷所述第一多媒體文件超過預(yù)設(shè)的文件大小閾值。
[0023]優(yōu)選地,所述切換至第二多媒體寫入器從所述緩存隊(duì)列讀取編碼后的多媒體數(shù)據(jù),并寫入第二多媒體文件的步驟包括:
[0024]停止第一打包器和第一寫入器,同時,第一寫入器對所述第一多媒體進(jìn)行保存處理;
[0025]啟動第二打包器和第二寫入器;
[0026]第二打包器從所述緩存隊(duì)列讀取編碼之后的多媒體數(shù)據(jù);
[0027]第二打包器將編碼之后的多媒體數(shù)據(jù)打包成多媒體數(shù)據(jù)包;
[0028]第二寫入器將所述多媒體數(shù)據(jù)包寫入第二多媒體文件。
[0029]優(yōu)選地,所述緩存隊(duì)列配置有互斥鎖,所述切換至第二多媒體寫入器從所述緩存隊(duì)列讀取編碼后的多媒體數(shù)據(jù)的步驟包括:
[0030]第一打包器釋放所述緩存隊(duì)列;
[0031]第二打包器鎖定所述緩存隊(duì)列;
[0032]第二打包器通過所述緩存隊(duì)列提供的讀接口從所述緩存隊(duì)列讀取編碼后的多媒體數(shù)據(jù)。
[0033]優(yōu)選地,所述數(shù)據(jù)源包括攝像頭和/或麥克風(fēng),所述多媒體數(shù)據(jù)包括視頻數(shù)據(jù)和/或音頻數(shù)據(jù);
[0034]所述通過數(shù)據(jù)源持續(xù)采集多媒體數(shù)據(jù)的步驟包括:
[0035]通過預(yù)置的攝像頭源類CameraSource從攝像頭采集視頻數(shù)據(jù);
[0036]和/ 或,
[0037]通過預(yù)置的音頻源類Aud1Source從麥克風(fēng)采集音頻數(shù)據(jù)。
[0038]本發(fā)明實(shí)施例還公開了一種多媒體文件的錄制方法,包括:
[0039]當(dāng)接收到多媒體文件的錄制請求時,創(chuàng)建數(shù)據(jù)源、編碼器、打包器、第一寫入器、第二寫入器;
[0040]通過數(shù)據(jù)源持續(xù)采集多媒體數(shù)據(jù);
[0041 ] 編碼器持續(xù)對所述多媒體數(shù)據(jù)進(jìn)行編碼;
[0042]打包器持續(xù)將編碼之后的多媒體數(shù)據(jù)打包成多媒體數(shù)據(jù)包,并將所述多媒體數(shù)據(jù)包寫入預(yù)置的緩存隊(duì)列;
[0043]第一寫入器從所述緩存隊(duì)列讀取多媒體數(shù)據(jù)包,并寫入第一多媒體文件;
[0044]判斷所述第一多媒體文件是否超過預(yù)設(shè)的文件大小閾值;若是,則切換至第二寫入器從所述緩存隊(duì)列讀取多媒體數(shù)據(jù)包,并寫入第二多媒體文件。
[0045]優(yōu)選地,所述寫入第一多媒體文件的步驟包括:
[0046]當(dāng)所述第一多媒體文件超過預(yù)設(shè)的文件大小閾值時,第一寫入器生成封裝完成事件;
[0047]第一寫入器廣播所述封裝完成事件。
[0048]優(yōu)選地,所述判斷所述第一多媒體文件是否超過預(yù)設(shè)的文件大小閾值的步驟包括:
[0049]判斷是否接收到由第一寫入器廣播的封裝完成事件;若是,則判斷所述第一多媒體文件超過預(yù)設(shè)的文件大小閾值。
[0050]優(yōu)選地,所述切換至第二寫入器從所述緩存隊(duì)列讀取多媒體數(shù)據(jù)包的步驟包括:
[0051]停止第一寫入器,同時,第一寫入器對所述第一多媒體進(jìn)行保存處理;
[0052]啟動第二寫入器;
[0053]第二寫入器從所述緩存隊(duì)列讀取所述多媒體數(shù)據(jù)包。
[0054]優(yōu)選地,所述緩存隊(duì)列配置有互斥鎖,所述切換至第二寫入器從所述緩存隊(duì)列讀取多媒體數(shù)據(jù)包的步驟包括:
[0055]第一寫入器釋放所述緩存隊(duì)列;
[0056]第二寫入器鎖定所述緩存隊(duì)列;
[0057]第二寫入器通過所述緩存隊(duì)列提供的讀接口從所述緩存隊(duì)列讀取所述多媒體數(shù)據(jù)包。
[0058]優(yōu)選地,所述數(shù)據(jù)源包括攝像頭和/或麥克風(fēng),所述多媒體數(shù)據(jù)包括視頻數(shù)據(jù)和/或音頻數(shù)據(jù);
[0059]所述通過數(shù)據(jù)源持續(xù)采集多媒體數(shù)據(jù)的步驟包括:
[0060]通過預(yù)置的攝像頭源類CameraSource從攝像頭采集視頻數(shù)據(jù);
[0061]和/ 或,
[0062]通過預(yù)置的音頻源類Aud1Source從麥克風(fēng)采集音頻數(shù)據(jù)。
[0063]本發(fā)明實(shí)施例還公開了一種多媒體文件的錄制裝置,包括:
[0064]錄制工具創(chuàng)建模塊,用于在接收到多媒體文件的錄制請求時,創(chuàng)建數(shù)據(jù)源、編碼器、打包器、第一多媒體寫入器、第二多媒體寫入器;
[0065]多媒體數(shù)據(jù)采集模塊,用于通過數(shù)據(jù)源持續(xù)采集多媒體數(shù)據(jù);
[0066]編碼模塊,用于由編碼器持續(xù)對所述多媒體數(shù)據(jù)進(jìn)行編碼,并將編碼之后的多媒體數(shù)據(jù)寫入預(yù)置的緩存隊(duì)列;
[0067]第一封裝模塊,用于由第一多媒體寫入器從所述緩存隊(duì)列讀取編碼后的多媒體數(shù)據(jù),并寫入第一多媒體文件;
[0068]文件大小判斷模塊,用于判斷所述第一多媒體文件是否超過預(yù)設(shè)的文件大小閾值;若是,則調(diào)用第二封裝模塊;
[0069]第二封裝模塊,用于切換至第二多媒體寫入器從所述緩存隊(duì)列讀取編碼后的多媒體數(shù)據(jù),并寫入第二多媒體文件。
[0070]優(yōu)選地,所述第一多媒體寫入器包括第一寫入器和第一打包器,所述第二多媒體寫入器包括第二寫入器和第二打包器。
[0071 ] 優(yōu)選地,所述第一封裝模塊包括:
[0072]第一讀取子模塊,用于由第一打包器從所述緩存隊(duì)列讀取編碼之后的多媒體數(shù)據(jù);
[0073]第一打包子模塊,用于由第一打包器將編碼之后的多媒體數(shù)據(jù)打包成多媒體數(shù)據(jù)包;
[0074]第一寫入子模塊,用于由第一寫入器將所述多媒體數(shù)據(jù)包寫入第一多媒體文件。
[0075]優(yōu)選地,所述第一封裝模塊包括:
[0076]封裝完成事件生成子模塊,用于在所述第一多媒體文件超過預(yù)設(shè)的文件大小閾值時,第一多媒體寫入器生成封裝完成事件;
[0077]封裝完成事件廣播子模塊,用于由第一多媒體寫入器廣播所述封裝完成事件。
[0078]優(yōu)選地,所述文件大小判斷模塊包括:
[0079]封裝完成事件判斷子模塊,用于判斷是否接收到由第一多媒體寫入器廣播的封裝完成事件;若是,則調(diào)用封裝完成判斷子模塊;
[0080]封裝完成判斷子模塊,用于判斷所述第一多媒體文件超過預(yù)設(shè)的文件大小閾值。[0081 ] 優(yōu)選地,所述第二封裝模塊包括:
[0082]停止子模塊,用于停止第一打包器和第一寫入器,同時,第一寫入器對所述第一多媒體進(jìn)行保存處理;
[0083]啟動子模塊,用于啟動第二打包器和第二寫入器;
[0084]第二讀取子模塊,用于由第二打包器從所述緩存隊(duì)列讀取編碼之后的多媒體數(shù)據(jù);
[0085]第二打包子模塊,用于由第二打包器將編碼之后的多媒體數(shù)據(jù)打包成多媒體數(shù)據(jù)包;
[0086]第二寫入子模塊,用于由第二寫入器將所述多媒體數(shù)據(jù)包寫入第二多媒體文件。
[0087]優(yōu)選地,所述緩存隊(duì)列配置有互斥鎖,所述第二封裝模塊包括:
[0088]釋放子模塊,用于由第一打包器釋放所述緩存隊(duì)列;
[0089]鎖定子模塊,用于由第二打包器鎖定所述緩存隊(duì)列;
[0090]接口讀取子模塊,用于由第二打包器通過所述緩存隊(duì)列提供的讀接口從所述緩存隊(duì)列讀取編碼后的多媒體數(shù)據(jù)。
[0091]優(yōu)選地,所述數(shù)據(jù)源可以包括攝像頭和/或麥克風(fēng),所述多媒體數(shù)據(jù)可以包括視頻數(shù)據(jù)和/或音頻數(shù)據(jù);
[0092]所述多媒體數(shù)據(jù)采集模塊包括:
[0093]視頻數(shù)據(jù)采集子模塊,用于通過預(yù)置的攝像頭源類CameraSource從攝像頭采集視頻數(shù)據(jù);
[0094]和/ 或,
[0095]音頻數(shù)據(jù)采集子模塊,用于通過預(yù)置的音頻源類Aud1Source從麥克風(fēng)采集音頻數(shù)據(jù)。
[0096]本發(fā)明實(shí)施例還公開了一種多媒體文件的錄制裝置,包括:
[0097]錄制工具創(chuàng)建模塊,用于在接收到多媒體文件的錄制請求時,創(chuàng)建數(shù)據(jù)源、編碼器、打包器、第一寫入器、第二寫入器;
[0098]多媒體數(shù)據(jù)采集模塊,用于通過數(shù)據(jù)源持續(xù)采集多媒體數(shù)據(jù);
[0099]編碼模塊,用于由編碼器持續(xù)對所述多媒體數(shù)據(jù)進(jìn)行編碼;
[0100]打包模塊,用于由打包器持續(xù)將編碼之后的多媒體數(shù)據(jù)打包成多媒體數(shù)據(jù)包,并將所述多媒體數(shù)據(jù)包寫入預(yù)置的緩存隊(duì)列;
[0101]第一封裝模塊,用于由第一寫入器從所述緩存隊(duì)列讀取多媒體數(shù)據(jù)包,并寫入第一多媒體文件;
[0102]文件大小判斷模塊,用于判斷所述第一多媒體文件是否超過預(yù)設(shè)的文件大小閾值;若是,則調(diào)用第二封裝模塊;
[0103]第二封裝模塊,用于切換至第二寫入器從所述緩存隊(duì)列讀取多媒體數(shù)據(jù)包,并寫入第二多媒體文件。
[0104]優(yōu)選地,所述第一封裝模塊包括:
[0105]封裝完成事件生成子模塊,用于在所述第一多媒體文件超過預(yù)設(shè)的文件大小閾值時,第一寫入器生成封裝完成事件;
[0106]封裝完成事件廣播子模塊,用于由第一寫入器廣播所述封裝完成事件。
[0107]優(yōu)選地,所述文件大小判斷模塊包括:
[0108]封裝完成事件判斷子模塊,用于判斷是否接收到由第一寫入器廣播的封裝完成事件;若是,則調(diào)用封裝完成判斷子模塊;
[0109]封裝完成判斷子模塊,用于判斷所述第一多媒體文件超過預(yù)設(shè)的文件大小閾值。
[0110]優(yōu)選地,所述第二封裝模塊包括:
[0111]停止子模塊,用于停止第一寫入器,同時,第一寫入器對所述第一多媒體進(jìn)行保存處理;
[0112]啟動子模塊,用于啟動第二寫入器;
[0113]第二讀取子模塊,用于由第二寫入器從所述緩存隊(duì)列讀取所述多媒體數(shù)據(jù)包。
[0114]優(yōu)選地,所述緩存隊(duì)列配置有互斥鎖,所述第二封裝模塊包括:
[0115]釋放子模塊,用于由第一寫入器釋放所述緩存隊(duì)列;
[0116]鎖