欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種使用FFMPEG接口錄制直播網站視頻的方法及裝置與流程

文檔序號:12498995閱讀:635來源:國知局
一種使用FFMPEG接口錄制直播網站視頻的方法及裝置與流程

本發(fā)明涉及通訊技術領域,尤其涉及一種使用FFMPEG接口錄制直播網站視頻的方法及裝置。



背景技術:

目前的直播網站都是使用的rtmp或http協(xié)議傳遞h264編碼視頻流,FFMPEG提供的exe是可以直接下載這些直播網站的音視頻文件的。

然而,發(fā)明人員通過研究發(fā)現,這種FFMPEG提供的exe是直接下載這些直播網站的音視頻文件至少存在如下問題:在視頻錄制的過程中,視頻開始的部分容易出現花屏。

可見,現有技術中的直播網站進行視頻錄制時,存在視頻開始的部分容易出現花屏的技術問題。



技術實現要素:

本發(fā)明實施例提供了一種使用FFMPEG接口錄制直播網站視頻的方法及裝置,用以解決現有技術中的直播網站進行視頻錄制時,存在的視頻開始的部分容易出現花屏的技術問題。

第一方面,本發(fā)明提供了一種使用FFMPEG接口錄制直播網站視頻的方法,所述方法包括:

獲得所述直播間的流地址;其中,所述流地址包括視頻流地址;

根據所述流地址獲得所述直播間直播過程中的流信息,其中所述流信息中包括N個幀,N為正整數;

根據所述流信息創(chuàng)建本地FLV文件;

根據所述N個幀,獲得第一幀;

判斷所述第一幀是否為視頻關鍵幀;

當所述第一視頻幀為視頻關鍵幀時,將所述第一視頻幀確定為錄制開始點;

將第一視頻幀之后的M個視頻幀進行數據處理,并寫入所述本地FLV文件中,其中M小于N,且M為正整數。

可選的,所述根據所述流信息創(chuàng)建本地FLV文件,還包括:創(chuàng)建FLV文件的文件頭;所述將第一視頻幀之后的M個視頻幀進行數據處理,并寫入所述本地FLV文件中,還包括:將所述第一視頻幀進行數據處理后,從所述文件頭處開始寫入所述經處理的所述第一視頻幀。

可選的,所述根據所述流地址獲得所述直播間直播過程中的流信息,還包括:通過av_read_frame函數獲得所述流信息,且所述流信息為AVPacket結構;其中,所述方法還包括:判斷所述av_read_frame的返回值是否等于AVERROR;當所述av_read_frame的返回值等于AVERROR時,才結束錄制。

可選的,所述判斷所述第一幀是否為視頻關鍵幀,還包括:判斷所述第一幀是否為IDR幀;如是,則判斷所述第一幀為視頻關鍵幀。

可選的,所述將所述第一視頻幀確定為錄制開始點時,所述方法還包括:獲得所述第一視頻幀的第一時間戳;所述將第一視頻幀之后的M個視頻幀進行數據處理,還包括:獲得所述M個視頻幀中的第二視頻幀的第二時間戳;根據所述第一時間戳和所述第二時間戳獲得第三時間戳;將所述第二視頻幀的第二時間戳更改為所述第三時間戳后,寫入所述本地FLV文件中。

可選的,在所述判斷所述第一幀是否為視頻關鍵幀之前,還包括:獲得所述第一幀的數據類型;當所述第一幀是視頻幀時,則判斷所述第一幀是否為視頻關鍵幀;當所述第一幀是音頻幀時,則忽略所述第一幀。

第二方面,本發(fā)明提供了一種使用FFMPEG接口錄制直播網站視頻的裝置,所述裝置包括:

第一獲得單元,所述第一獲得單元用于獲得所述直播間的流地址;其中,所述流地址包括視頻流地址;

第二獲得單元,所述第二獲得單元用于根據所述視頻流地址獲得所述直播間直播過程中的流信息,其中所述流信息中包括N個幀,N為正整數;

第一創(chuàng)建單元,所述第一創(chuàng)建單元用于根據所述流信息創(chuàng)建本地FLV文件;

第三獲得單元,所述第三獲得單元用于根據所述N個幀,獲得第一幀;

第一判斷單元,所述第一判斷單元用于判斷所述第一幀是否為視頻關鍵幀;

第一確定單元,所述第一確定單元用于當所述第一視頻幀為視頻關鍵幀時,將所述第一視頻幀確定為錄制開始點;

第一寫入單元,所述第一寫入單元用于將第一視頻幀之后的M個視頻幀進行數據處理,并寫入所述本地FLV文件中,其中M小于N,且M為正整數。

可選的,所述裝置還包括:第二創(chuàng)建單元,所述第二創(chuàng)建單元用于創(chuàng)建FLV文件的文件頭;第二寫入單元,所述第二寫入單元用于所述將第一視頻幀之后的M個視頻幀進行數據處理,并寫入所述本地FLV文件中,還包括:第三寫入單元,所述第三寫入單元用于將所述第一視頻幀進行數據處理后,從所述文件頭處開始寫入所述經處理的所述第一視頻幀。

可選的,所述裝置還包括:第四獲得單元,所述第四獲得單元用于通過av_read_frame函數獲得所述流信息,且所述流信息為AVPacket結構;第二判斷單元,所述第二判斷單元用于判斷所述av_read_frame的返回值是否等于AVERROR;第一結束單元,所述第一結束單元用于當所述av_read_frame的返回值等于AVERROR時,才結束錄制。

可選的,所述裝置還包括:第三判斷單元,所述第三判斷單元用于判斷所述第一幀是否為IDR幀;第四判斷單元,所述第四判斷單元用于如是,則判斷所述第一幀為視頻關鍵幀。

可選的,所述裝置還包括::第五獲得單元,所述第五獲得單元用于獲得所述第一視頻幀的第一時間戳;第六獲得單元,所述第六獲得單元用于獲得所述M個視頻幀中的第二視頻幀的第二時間戳;第七獲得單元,所述第七獲得單元用于根據所述第一時間戳和所述第二時間戳獲得第三時間戳;第四寫入單元,所述第四寫入單元用于將所述第二視頻幀的第二時間戳更改為所述第三時間戳后,寫入所述本地FLV文件中。

本發(fā)明實施例中的上述一個或多個技術方案,至少具有如下一種或多種技術效果:

在本發(fā)明實施例提供的方法及裝置,在對直播網站的視頻進行錄制時,通過依據直播間直播過程中的流信息中N個幀,獲得第一幀,并判斷所述第一幀是否為視頻關鍵幀,如果所述第一視頻幀判斷為視頻關鍵幀時,則將所述第一視頻幀確定為錄制開始點,以此使得所錄制的視頻在播放的時候不會出現花屏的現象??梢?,本發(fā)明實施例解決了現有技術中的直播網站進行視頻錄制時,存在的視頻開始的部分容易出現花屏的技術問題。

上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。

附圖說明

為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。

圖1為本發(fā)明實施例的使用FFMPEG接口錄制直播網站視頻的方法流程圖;以及

圖2為本發(fā)明實施例中將第一視頻幀之后的M個視頻幀進行數據處理的方法示意圖;以及

圖3為本發(fā)明實施例中使用FFMPEG接口錄制直播網站視頻的裝置示意圖。

具體實施方式

本發(fā)明實施例提供了一種使用FFMPEG接口錄制直播網站視頻的方法及裝置,解決了現有技術中的直播網站進行視頻錄制時,存在的視頻開始的部分極易花屏的技術問題。

本發(fā)明實施例中的技術方案,總體思路如下:

在對直播網站進行視頻錄制時,首先獲得所述直播間的流地址;其中,所述流地址包括視頻流地址;根據所述流地址獲得所述直播間直播過程中的流信息,其中所述流信息中包括N個幀,N為正整數;根據所述流信息創(chuàng)建本地FLV文件;根據所述N個幀,獲得第一幀;判斷所述第一幀是否為視頻關鍵幀;當所述第一視頻幀為視頻關鍵幀時,將所述第一視頻幀確定為錄制開始點;將第一視頻幀之后的M個視頻幀進行數據處理,并寫入所述本地FLV文件中,其中M小于N,且M為正整數。

上述方法通過依據直播間直播過程中的流信息中N個幀,獲得第一幀,并判斷所述第一幀是否為視頻關鍵幀,如果所述第一視頻幀判斷為視頻關鍵幀時,則將所述第一視頻幀確定為錄制開始點,以此使得所錄制的視頻在播放的時候不會出現花屏的現象。

為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

實施例一

本實施例提供的一種使用FFMPEG接口錄制直播網站視頻的方法,請參閱圖1,所述方法包括:

步驟S110,獲得所述直播間的流地址;其中,所述流地址包括視頻流地址;

步驟S120,根據所述流地址獲得所述直播間直播過程中的流信息,其中所述流信息中包括N個幀,N為正整數;

步驟S130,根據所述流信息創(chuàng)建本地FLV文件;

步驟S140,根據所述N個幀,獲得第一幀;

步驟S150,判斷所述第一幀是否為視頻關鍵幀;

步驟S160,當所述第一視頻幀為視頻關鍵幀時,將所述第一視頻幀確定為錄制開始點;

步驟S170,將第一視頻幀之后的M個視頻幀進行數據處理,并寫入所述本地FLV文件中,其中M小于N,且M為正整數。

具體來講,現有技術中直播網站都是使用的rtmp或http協(xié)議傳遞h264編碼視頻流,FFMPEG提供的exe是可以直接下載這些直播網站的音視頻文件的。但是,經發(fā)明人研究發(fā)現,這種方式至少存在視頻開始的部分容易出現花屏?;诖?,本發(fā)明實施例提供的方法用于解決在視頻開始的部分容易出現花屏的技術問題。

在本申請實施例中,為了對本申請所公開的技術方案進行詳細的介紹,以達到清楚、明白的目的,特針對所涉及的名詞解釋如下:

FFMPEG,是一個開源免費跨平臺的視頻和音頻流方案,屬于自由軟件,采用LGPL或GPL許可證(依據用戶選擇的組件)。FFMPEG提供了錄制、轉換以及流化音視頻的完整解決方案。FFMPEG包含了非常先進的音頻/視頻編解碼庫libavcodec,為了保證高可移植性和編解碼質量,FFMPEG里面里很多代碼都是從頭開發(fā)的。在本發(fā)明實施例中即是基于FFMPEG進行視頻流的獲取,以及音視頻文件的寫入。

H.264,是國際標準化組織(ISO)和國際電信聯盟(ITU)共同提出的繼MPEG4之后的新一代數字視頻壓縮格式。H.264是ITU-T以H.26x系列為名稱命名的視頻編解碼技術標準之一。H.264是ITU-T的VCEG(視頻編碼專家組)和ISO/IEC的MPEG(活動圖像編碼專家組)的聯合視頻組(JVT:joint video team)開發(fā)的一個數字視頻編碼標準。H.264最大的優(yōu)勢是具有很高的數據壓縮比率,H.264在具有高壓縮比的同時還擁有高質量流暢的圖像,正因為如此,經過H.264壓縮的視頻數據,在網絡傳輸過程中所需要的帶寬更少,也更加經濟。在本發(fā)明實施例中即是基于到對h264的格式解析。

FLV,是Flash Video的首字母縮寫,Flash Video流媒體格式是隨著Flash MX的推出而發(fā)展而來的一種新興的視頻格式。FLV是被眾多新一代視頻分享網站所采用,是目前增長最快、最為廣泛的視頻傳播格式。

RTMP,是Real Time Messaging Protocol(實時消息傳輸協(xié)議)的首字母縮寫。該協(xié)議基于TCP,是一個協(xié)議族,包括RTMP基本協(xié)議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時數據通信的網絡協(xié)議,主要用來在Flash/AIR平臺和支持RTMP協(xié)議的流媒體/交互服務器之間進行音視頻和數據通信。RTMP協(xié)議(Real Time Messaging Protocol)是被Flash用于對象,視頻,音頻的傳輸。這個協(xié)議建立在TCP協(xié)議或者輪詢HTTP協(xié)議之上。RTMP協(xié)議可以理解為是一個用來裝數據包的容器,這些數據既可以是AMF格式的數據,也可以是FLV中的視/音頻數據。

下面,結合圖1對本申請?zhí)峁┑氖褂肍FMPEG接口錄制直播網站視頻的方法進行詳細介紹:

首先,執(zhí)行步驟S110,獲得所述直播間的流地址;其中,所述流地址包括視頻流地址;

具體而言,在對直播網站上正在開播的直播間視頻進行錄制時,首先需要獲取對應直播間的流地址,而對于流地址的獲取方式可以是多種多樣的,本發(fā)明實施例并不局限,比如可以是通過向網站服務器提供房間號查詢獲取,也可以是通過輸入直播間的直播名稱查詢獲取。

接下來,執(zhí)行步驟S120,根據所述流地址獲得所述直播間直播過程中的流信息,其中所述流信息中包括N個幀,N為正整數;

具體而言,對于直播間直播過程中的流信息的獲得,可以是使用av_read_frame函數,從avformat_open_input函數打開的AVFormatContext結構上下文中獲取的音視頻流,且該音視頻數據為AVPacket結構。

在這里,avformat_open_input函數是用來打開一個輸入文件或者音視頻流,返回AVFormatContext結構的上下文,在本申請中是用來打開直播網站的實時音視頻流。AVFormatContext結構是用來表示一個輸入或者輸出文件的上下文,AVFormatContext是FFMPEG格式轉換過程中實現輸入和輸出功能、保存相關數據的主要結構。AVPacket是存儲壓縮編碼數據相關信息的結構體,AVPacket一般是一幀完整的音視頻編解碼數據,對于H.264來說,1個AVPacket的data通常對應一個NAL。av_read_frame函數是用來從輸入文件即AVFormatContext結構的上下文中獲取音視頻流數據,獲取的音視頻數據,一般是編碼過的,因為h264高壓縮比少帶寬以及廣泛性,目前直播網站一般都是使用的h264的視頻編碼,從數據流讀出的數據是保存在AVPacket結構里的。

需要說明的是,在根據所述流地址獲得所述直播間直播過程中的流信息的過程中,為了避免視頻文件被輕易打斷,造成斷流比較頻繁以至于常常遺失掉精彩的瞬間畫面的技術問題,優(yōu)選的,本發(fā)明實施例還包括:判斷所述av_read_frame的返回值是否等于AVERROR;當所述av_read_frame的返回值等于AVERROR時,才結束錄制。也即,對av_read_frame的返回值只有在等于AVERROR(EAGAIN)的時候,才結束錄制。這種容錯處理不會導致本發(fā)明實施例所提供的方法在視頻錄制的過程中被頻繁打斷,而錯過一些重要的時刻,實現所錄制的視頻具有連續(xù)順暢的特點。

當然,在執(zhí)行步驟S120之前,或者之后,或者同時,可以執(zhí)行步驟S130,根據所述流信息創(chuàng)建本地FLV文件;

其中,在該步驟S130中具體可以通過avformat_open_input函數根據步驟S110獲得的直播間流地址打開直播間流,并通過AVFormatContext結構的對象保存直播間的流信息,利用輸入文件的流信息使用avformat_alloc_output_context2函數創(chuàng)建本地flv文件,并使用avformat_write_header函數寫入flv文件的文件頭。

在這里,avformat_alloc_output_context2函數是用來創(chuàng)建一個輸出文件,得到該輸出文件的AVFormatContext結構的上下文,在本發(fā)明實施例中輸出文件為本地flv錄制文件。avformat_write_header函數是用來往輸出文件寫入該音視頻流的頭信息,包含音視頻編解碼信息,以及文件大小等。

然后,執(zhí)行步驟S140,根據所述N個幀,獲得第一幀;

以及,執(zhí)行步驟S150,判斷所述第一幀是否為視頻關鍵幀;

具體而言,本申請實施例是針對直播網站的視頻信息進行錄制,所要解決的技術問題也是解決在視頻錄制過程中,視頻開始的部分極易花屏的技術問題。因此,在流信息中所包括的N個幀中,首先要確認基于所述N個幀,所獲得第一幀是否是視頻幀,如果是視頻幀,則繼續(xù)下一步驟。如果不是(如是音頻幀),則直接忽略(這里的忽略也即pass掉的意思),并重新繼續(xù)獲取上述的流信息。

這里,對于判斷基于所述N個幀,所獲得第一幀是否是視頻幀,可以是通過如下方法判斷。即,在解析流信息的時候,先獲取視頻音頻的stream的id,然后在讀幀的時候,使用幀的stream id進行比較進行判斷。

緊接著,在判斷完第一幀是視頻幀之后,在繼續(xù)執(zhí)行步驟S150,也即判斷所述第一幀是否為視頻關鍵幀??梢园ㄈ缦虏襟E:判斷所述第一幀是否為IDR幀;如是,則判斷所述第一幀為視頻關鍵幀。

具體而言,可以基于當前的流信息的視頻壓縮格式是h264,從h264視頻幀獲取nalu類型值,nalu&0x1f為5則表示該幀即為IDR幀,也即視頻關鍵幀。而當判斷所述第一幀不是視頻關鍵幀時,則放棄該第一視頻幀,并重新繼續(xù)獲取上述的流信息。

如果判斷所述第一幀是視頻關鍵幀時,則繼續(xù)執(zhí)行步驟S160,當所述第一視頻幀為視頻關鍵幀時,將所述第一視頻幀確定為錄制開始點;也正因如此,使得通過本發(fā)明實施例在直播網上中進行視頻錄制時,能夠確定錄制文件的第一幀視頻幀是關鍵幀,這就使得本地錄制的視頻文件在開始播放的時候不會出現花屏的現象。

再然后,執(zhí)行步驟S170,將第一視頻幀之后的M個視頻幀進行數據處理,并寫入所述本地FLV文件中,其中M小于N,且M為正整數。

需要強調的是,在將所述第一視頻幀確定為錄制開始點時,還包括獲得所述第一視頻幀的第一時間戳;而所述步驟S170,請參閱圖2,也還包括如下子步驟:步驟S170a,獲得所述M個視頻幀中的第二視頻幀的第二時間戳;步驟S170b,根據所述第一時間戳和所述第二時間戳獲得第三時間戳;步驟S170c,將所述第二視頻幀的第二時間戳更改為所述第三時間戳后,寫入所述本地FLV文件中。

具體而言,在將所述第一視頻幀確定為錄制開始點時,為了能讓錄制文件的開始時間從0開始,此時可獲得該第一視頻幀的第一時間戳并保存,如記錄該第一時間戳為begin_record_pts,該第一時間戳作為錄制文件的開始時刻。進一步地,將M個視頻幀中的第二視頻幀AVPacket結構對象的第二時間戳減去第一時間戳begin_record_pts值,并將所述第二視頻幀的第二時間戳更改為所述第三時間戳。然后通過av_interleaved_write_frame函數,把處理過的第二視頻幀寫入所述本地FLV文件中。

值得注意的是,由于在步驟S170中由于通過av_interleaved_write_frame函數,把處理過的第二視頻幀直接寫入預先創(chuàng)建的AVFormatContext結構上下文,這就使得在本發(fā)明實施例中不需要對視頻進行重新編解碼,繼而對cpu、內存消耗極低,具有性能高的特點。

最后,通過av_write_trailer函數,寫入文件結尾例如文件長度等信息,關閉文件,銷毀相關資源。

在這里,av_interleaved_write_frame函數是用來往輸出文件寫音視頻流數據,且av_interleaved_write_frame函數寫入的數據的結構為AVPacket。av_write_trailer函數是用來往輸出文件寫音視頻流的結尾信息,文件的大小等信息一般是在結尾的時候才能決定的。

基于同一發(fā)明構思,本發(fā)明實施例還提供了實施例一中方法對應的裝置,見實施例二。

實施例二

本實施例提供了一種使用FFMPEG接口錄制直播網站視頻的裝置,請參考圖3,所述裝置備包括:

第一獲得單元110,被配置為獲得所述直播間的流地址;

第二獲得單元120,被配置為根據所述流地址獲得所述直播間直播過程中的流信息,其中所述流信息中包括N個幀,N為正整數;

第一創(chuàng)建單元130,被配置為根據所述流信息創(chuàng)建本地FLV文件;

第三獲得單元140,被配置為根據所述N個幀,獲得第一幀;

第一判斷單元150,被配置為判斷所述第一幀是否為視頻關鍵幀;

第一確定單元160,被配置為當所述第一視頻幀為視頻關鍵幀時,將所述第一視頻幀確定為錄制開始點;

第一寫入單元170,被配置為將第一視頻幀之后的M個視頻幀進行數據處理,并寫入所述本地FLV文件中,其中M小于N,且M為正整數。

在本申請實施例中,所述裝置還包括:

第二創(chuàng)建單元,所述第二創(chuàng)建單元用于創(chuàng)建FLV文件的文件頭;

第二寫入單元,所述第二寫入單元用于所述將第一視頻幀之后的M個視頻幀進行數據處理,并寫入所述本地FLV文件中,還包括:

第三寫入單元,所述第三寫入單元用于將所述第一視頻幀進行數據處理后,從所述文件頭處開始寫入所述經處理的所述第一視頻幀。

在本申請實施例中,所述裝置還包括:

第四獲得單元,所述第四獲得單元用于通過av_read_frame函數獲得所述流信息,且所述流信息為AVPacket結構;

第二判斷單元,所述第二判斷單元用于判斷所述av_read_frame的返回值是否等于AVERROR;

第一結束單元,所述第一結束單元用于當所述av_read_frame的返回值等于AVERROR時,才結束錄制。

在本申請實施例中,所述裝置還包括:

第三判斷單元,所述第三判斷單元用于判斷所述第一幀是否為IDR幀;

第四判斷單元,所述第四判斷單元用于如是,則判斷所述第一幀為視頻關鍵幀。

在本申請實施例中,所述裝置還包括:

第五獲得單元,所述第五獲得單元用于獲得所述第一視頻幀的第一時間戳;

第六獲得單元,所述第六獲得單元用于獲得所述M個視頻幀中的第二視頻幀的第二時間戳;

第七獲得單元,所述第七獲得單元用于根據所述第一時間戳和所述第二時間戳獲得第三時間戳;

第四寫入單元,所述第四寫入單元用于將所述第二視頻幀的第二時間戳更改為所述第三時間戳后,寫入所述本地FLV文件中。

由于本發(fā)明實施例二所介紹的使用FFMPEG接口錄制直播網站視頻的裝置,為實施本發(fā)明實施例一的使用FFMPEG接口錄制直播網站視頻的方法所采用的裝置,故而基于本發(fā)明實施例一所介紹的方法,本領域所屬人員能夠了解該裝置的具體結構及變形,故而在此不再贅述。凡是本發(fā)明實施例一的方法所采用的裝置都屬于本發(fā)明所欲保護的范圍。

本申請實施例中提供的技術方案,至少具有如下技術效果或優(yōu)點:

一方面,通過依據直播間直播過程中的流信息中N個幀,獲得第一幀,并判斷所述第一幀是否為視頻關鍵幀,如果所述第一視頻幀判斷為視頻關鍵幀時,則將所述第一視頻幀確定為錄制開始點,以此使得所錄制的視頻在播放的時候不會出現花屏的現象。

又一方面,在根據所述流地址獲得所述直播間直播過程中的流信息的過程中,為了避免視頻文件被輕易打斷,造成斷流比較頻繁以至于常常遺失掉精彩的瞬間畫面的技術問題,本發(fā)明實施例還包括:判斷所述av_read_frame的返回值是否等于AVERROR;當所述av_read_frame的返回值等于AVERROR時,才結束錄制。也即,對av_read_frame的返回值只有在等于AVERROR(EAGAIN)的時候,才結束錄制。這種容錯處理不會導致本發(fā)明實施例所提供的方法在視頻錄制的過程中被頻繁打斷,而錯過一些重要的時刻,實現所錄制的視頻具有連續(xù)順暢的特點。

再一方面,由于通過av_interleaved_write_frame函數,把處理過的第二視頻幀直接寫入預先創(chuàng)建的AVFormatContext結構上下文,這就使得在本發(fā)明實施例中不需要對視頻進行重新編解碼,繼而對cpu、內存消耗極低,具有性能高的特點。

本領域內的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。

本發(fā)明是參照根據本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執(zhí)行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

盡管已描述了本發(fā)明的優(yōu)選實施例,但本領域內的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。

顯然,本領域的技術人員可以對本發(fā)明實施例進行各種改動和變型而不脫離本發(fā)明實施例的精神和范圍。這樣,倘若本發(fā)明實施例的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內,則本發(fā)明也意圖包含這些改動和變型在內。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宜兰县| 科技| 昌邑市| 淮安市| 石景山区| 平阳县| 营口市| 青龙| 来宾市| 长垣县| 民县| 宾川县| 玉门市| 洮南市| 平遥县| 新晃| 福建省| 五原县| 漾濞| 鸡东县| 宁德市| 江阴市| 封丘县| 香港| 沂水县| 南康市| 蒙自县| 洮南市| 城市| 东阿县| 郸城县| 贵港市| 措勤县| 怀集县| 都江堰市| 大邑县| 筠连县| 长阳| 乡宁县| 奉新县| 化州市|