System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于跨平臺系統下視頻解碼,在系統為不確定的應用場景下,針對ffmpeg解碼特點,并結合qt模塊設計顯示圖像方案,設計實現了一種兼容多系統類型的視頻解碼方案設計方法。本專利技術為系統為多類型不確定,并且應用環境在海陸之間的跨網絡通訊下,首先使用視頻分發服務對遠端網絡碼流進行傳輸,有效獲取視頻流,針對碼流的編碼特點進行解碼,并對解碼后的圖像進行顯示,從而完成解碼播放顯示過程。
技術介紹
1、qt是一個跨平臺的圖形用戶界面應用程序開發框架,可構建高性能的桌面、移動及web應用框架。也可以用于開發非gui程序,比如控制臺工具和服務器。qt是面向對象的框架,使用特殊的代碼生成擴展以及一些宏,qt很容易擴展,并且允許真正的組件編程。
2、ffmpeg是一套可以用來記錄、轉換數字音頻、視頻、并能將其轉換成流的開源計算機程序。它提供了錄制、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫。
3、在需求不明確的項目工程中,選擇一種跨平臺工具進行開發可以節省開發成本。qt和ffmpeg結合可以解決多平臺兼容問題,更好的方便移植模塊內容。在海陸通信環境下,需要解決跨網絡進行視頻傳輸,建立視頻服務可以有效解決解決視頻流有效傳輸問題。
技術實現思路
1、(一)專利技術目的
2、本專利技術的目的是:為了解決多系統下視頻解碼實時播放問題,采用基于qt與ffmpeg結合解碼方法,提供一種基于視頻分發服務的解碼方法。
3、(二)技術方案
4、為了解決上述技術問題,本專利技術提供一種基于視頻分發服務的解碼方法,其包括以下步驟:
5、s1:制定視頻分發服務規則;
6、s2:創建編譯環境;
7、s3:初始化解碼資源;
8、s4:獲取視頻分發服務的視頻數據;
9、s5:對視頻數據進行解碼;
10、s6:將解碼后的圖像幀進行格式轉換;
11、s7:獲取轉換格式后的圖像幀并實時顯示;
12、s8:將解碼通道資源釋放。
13、步驟s1中制定視頻分發服務規則包括:
14、s11:應用注冊
15、海上設備或者陸上設備向通信系統服務中心發送注冊請求,注冊成功后,進行文件報文業務傳輸優化;
16、s12:注冊報文格式
17、分為三個字段:應用系統標識、應用系統實體號、發送方ip;
18、s13:注冊反饋
19、傳輸服務軟件收到應用注冊報文時向應用系統發送;
20、s14:注冊反饋的報文格式
21、分為三個字段:應用系統標識、應用系統實體號、反饋結果;
22、s15:應用注銷
23、s16:注銷報文格式
24、分為三個字段:應用系統標識、應用系統實體號、發送方ip;
25、s17:報文傳輸
26、報文類應用提供業務傳輸請求,同時攜帶報文業務數據;
27、s18:發送報文格式
28、分為以下字段:業務統一標識、報文傳輸類型、發送方的應用系統標識、發送方的應用實體標識、接收方個數、接收方信息、業務信息類型、可靠性、優先級、超時時間、數據大小、數據內容;
29、s19:接收報文格式,同發送報文格式。
30、步驟s2中,創建編譯環境的過程為:
31、s21:獲取ffmpeg里面的動態庫文件libacodec.lib、libavformat.lib、libavutil.lib、libswscale.lib并拷貝到工作目錄lib下;
32、s22:將ffmpeg的包含頭文件拷貝到工程目錄的include下;
33、s23:為系統添加環境變量ffmpeglibpath,設置該環境變量到工程目錄下的lib;
34、s24:在qt的工程文件添加外部庫,添加步驟s21的庫文件,路徑選用步驟s23所指示的路徑。
35、步驟s3中,在qt工程目錄下新建立一個線程類decode,在線程類decode中實現解碼初始化資源的步驟如下:
36、s31:使用庫函數av_packet_alloc創建數據包對象pkt,如果創建成功則進行下一步,否則退出該過程;
37、s32:使用庫函數avcodec_find_decoder創建解碼器codec,如果創建成功則進行下一步,否則退出該過程;
38、s33:使用庫函數av_parser_init創建數據包分析對象parser,如果創建成功則進行下一步,否則退出該過程;
39、s34:使用庫函數avcodec_alloc_context3創建解碼環境上下文對象,如果創建成功則進行下一步,否則退出該過程;
40、s35:使用庫函數avcodec_oepn2打開解碼器,如果失敗則退出該過程,否則進行下一步;
41、s36:使用庫函數av_frame_alloc創建圖像幀對象frame,如果失敗則退出該過程,否則進行下一步。
42、步驟s4中,獲取視頻分發服務的視頻數據的過程為:
43、s41:新建一個網絡接收線程netrecv;
44、s42:按照協議報文標識提取視頻傳輸的報文內容;
45、s43:將信號量上鎖;
46、s44:將視頻數據存放在數據隊列;
47、s45:將信號量解鎖;
48、s46:創建一個獲取視頻數據線程;
49、s47:進入循環讀取數據隊列過程;
50、s48:判斷數據隊列是否為空,如果是則延時10us,否則進行下一步;
51、s49:將信號量上鎖;
52、s410:查看隊列的長度是否小于最大數據長度,如果是則將本次要取的長度len設置成隊列長度,否則將長度len設置成最大長度;
53、s411:從隊列依次取出長度為len的數據,并存放在數組inbuf中;
54、s412:將信號量解鎖;
55、s413:將數據包的長度data_size設置成len;
56、s414:將數組inbuf的指針賦值給data;
57、s415:進行對數據包進行分析的過程;
58、s416:判斷data_size是否大于0,如果是則進行下一步,否則退出分析過程;
59、s417:使用庫函數av_parser_parser2對數據data進行分析轉換成數據包packet,轉成數據包的長度存放在ret中,如果轉換成功則進行下一步,否則打印錯誤信息退出該過程;
60、s418:將數組data指針移動ret長度,數組長度data_size減去ret長度;
61、s419:判斷轉換后的數據包packet的大小是否大于零,如果是則進入到下本文檔來自技高網...
【技術保護點】
1.一種基于視頻分發服務的解碼方法,其特征在于,包括以下步驟:
2.如權利要求1所述的基于視頻分發服務的解碼方法,其特征在于,步驟S1中制定視頻分發服務規則包括:
3.如權利要求2所述的基于視頻分發服務的解碼方法,其特征在于,步驟S2中,創建編譯環境的過程為:
4.如權利要求3所述的基于視頻分發服務的解碼方法,其特征在于,步驟S3中,在qt工程目錄下新建立一個線程類decode,在線程類decode中實現解碼初始化資源的步驟如下:
5.如權利要求4所述的基于視頻分發服務的解碼方法,其特征在于,步驟S4中,獲取視頻分發服務的視頻數據的過程為:
6.如權利要求5所述的基于視頻分發服務的解碼方法,其特征在于,步驟S5中,對視頻數據進行解碼的過程為:
7.如權利要求6所述的基于視頻分發服務的解碼方法,其特征在于,步驟S6中,解碼后的圖像幀進行格式轉換的過程為:
8.如權利要求7所述的基于視頻分發服務的解碼方法,其特征在于,步驟S7的實現步驟如下:
9.如權利要求8所述的基于視頻分發服務的解碼方
10.一種基于權利要求1-9中任一項所述的基于視頻分發服務的解碼方法在跨平臺系統下視頻解碼技術領域中的應用。
...【技術特征摘要】
1.一種基于視頻分發服務的解碼方法,其特征在于,包括以下步驟:
2.如權利要求1所述的基于視頻分發服務的解碼方法,其特征在于,步驟s1中制定視頻分發服務規則包括:
3.如權利要求2所述的基于視頻分發服務的解碼方法,其特征在于,步驟s2中,創建編譯環境的過程為:
4.如權利要求3所述的基于視頻分發服務的解碼方法,其特征在于,步驟s3中,在qt工程目錄下新建立一個線程類decode,在線程類decode中實現解碼初始化資源的步驟如下:
5.如權利要求4所述的基于視頻分發服務的解碼方法,其特征在于,步驟s4中,獲取視頻分發服務的視...
【專利技術屬性】
技術研發人員:高娟,
申請(專利權)人:天津津航計算技術研究所,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。