女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當前位置:首頁 > > 充電吧
[導讀]使用RTP傳輸H264的時候,需要用到sdp協(xié)議描述,其中有兩項:Sequence Parameter?Sets?(SPS) 和Picture Parameter?Set?(PPS)需要用到,那么這


使用RTP傳輸H264的時候,需要用到sdp協(xié)議描述,其中有兩項:Sequence Parameter?Sets?(SPS) 和Picture Parameter?Set?(PPS)需要用到,那么這兩項從哪里獲取呢?答案是從H264碼流中獲取.在H264碼流中,都是以"0x00 0x00 0x01"或者"0x00 0x00 0x00 0x01"為開始碼的,找到開始碼之后,使用開始碼之后的第一個字節(jié)的低5位判斷是否為7(sps)或者8(pps), 及data[4] & 0x1f == 7 || data[4] & 0x1f == 8.然后對獲取的nal去掉開始碼之后進行base64編碼,得到的信息就可以用于sdp.sps和pps需要用逗號分隔開來.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


如何解析SDP中包含的H.264的SPS和PPS串

SDP中的H.264的SPS和PPS串,包含了初始化H.264解碼器所需要的信息參數(shù),包括編碼所用的profile,level,圖像的寬和高,deblock濾波器等。
由于SDP中的SPS和PPS都是BASE64編碼形式的,不容易理解,附件有一個工具軟件可以對SDP中的SPS和PPS進行解析。
用法是在命令行中輸入:
spsparser sps.txt pps.txt output.txt

例如sps.txt中的內(nèi)容為:
Z0LgFNoFglE=
pps.txt中的內(nèi)容為:
aM4wpIA=

最終解析的到的結果為:

Start dumping SPS:
??profile_idc = 66
??constrained_set0_flag = 1
??constrained_set1_flag = 1
??constrained_set2_flag = 1
??constrained_set3_flag = 0
??level_idc = 20
??seq_parameter_set_id = 0
??chroma_format_idc = 1
??bit_depth_luma_minus8 = 0
??bit_depth_chroma_minus8 = 0
??seq_scaling_matrix_present_flag = 0
??log2_max_frame_num_minus4 = 0
??pic_order_cnt_type = 2
??log2_max_pic_order_cnt_lsb_minus4 = 0
??delta_pic_order_always_zero_flag = 0
??offset_for_non_ref_pic = 0
??offset_for_top_to_bottom_field = 0
??num_ref_frames_in_pic_order_cnt_cycle = 0
??num_ref_frames = 1
??gaps_in_frame_num_value_allowed_flag = 0
??pic_width_in_mbs_minus1 = 21
??pic_height_in_mbs_minus1 = 17
??frame_mbs_only_flag = 1
??mb_adaptive_frame_field_flag = 0
??direct_8x8_interence_flag = 0
??frame_cropping_flag = 0
??frame_cropping_rect_left_offset = 0
??frame_cropping_rect_right_offset = 0
??frame_cropping_rect_top_offset = 0
??frame_cropping_rect_bottom_offset = 0
??vui_parameters_present_flag = 0

Start dumping PPS:
??pic_parameter_set_id = 0
??seq_parameter_set_id = 0
??entropy_coding_mode_flag = 0
??pic_order_present_flag = 0
??num_slice_groups_minus1 = 0
??slice_group_map_type = 0
??num_ref_idx_l0_active_minus1 = 0
??num_ref_idx_l1_active_minus1 = 0
??weighted_pref_flag = 0
??weighted_bipred_idc = 0
??pic_init_qp_minus26 = 0
??pic_init_qs_minus26 = 0
??chroma_qp_index_offset = 10
??deblocking_filter_control_present_flag = 1
??constrained_intra_pred_flag = 0
??redundant_pic_cnt_present_flag = 0
??transform_8x8_mode_flag = 0
??pic_scaling_matrix_present_flag = 0
??second_chroma_qp_index_offset = 10

/////////////////////////////////////////////////////////////////////////////////////////////////
這里需要特別提一下這兩個參數(shù)
pic_width_in_mbs_minus1 = 21
??pic_height_in_mbs_minus1 = 17
分別表示圖像的寬和高,以宏塊(16x16)為單位的值減1
因此,實際的寬為 (21+1)*16 = 352


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

http://krdai.info.sixxs.org/blog/mp4-sps-pps-data.html

最近在做跟 h264 encode/decode 相關的研究,目標是希望可以從?Android?的 MediaRecorder 當中取出 h264 的資訊。目前問題是在於 SPS 以及 PPS 到底要怎樣得到。由於 MediaRecorder 是寫入 mp4 檔案中,所以不得已只好來去分析一下 mp4 的檔案格式,發(fā)現(xiàn)沒有想像中的困難. 主要是參照 ISO/IEC 14496-15 這部份. 在 mp4 的檔案之中, 找到 avcC 這個字串, 之後就是接上 AVCDecoderConfigurationRecord. AVCDecoderConfigurationRecord 的 format 如下:


[cpp]?view plaincopy aligned(8)?class?AVCDecoderConfigurationRecord?{?? ???unsigned?int(8)?configurationVersion?=?1;?? ???unsigned?int(8)?AVCProfileIndication;?? ???unsigned?int(8)?profile_compatibility;?? ???unsigned?int(8)?AVCLevelIndication;?? ?? bit(6)?reserved?=?'111111'b;?? ???unsigned?int(2)?lengthSizeMinusOne;?? ?? bit(3)?reserved?=?'111'b;?? ???unsigned?int(5)?numOfSequenceParameterSets;?? ?? for?(i=0;?i<?numOfSequenceParameterSets;?i++)?{?? ??????unsigned?int(16)?sequenceParameterSetLength?;?? ??????bit(8*sequenceParameterSetLength)?sequenceParameterSetNALUnit;?? ???}?? ???unsigned?int(8)?numOfPictureParameterSets;?? ???for?(i=0;?i<?numOfPictureParameterSets;?i++)?{?? ??????unsigned?int(16)?pictureParameterSetLength;?? ??????bit(8*pictureParameterSetLength)?pictureParameterSetNALUnit;?? ???}?? }??


對照一下這樣就可以找到 SPS 和 PPS


+++++++++++++++++++++++++++++++++++++++++++++
vlc沒有收到pps和sps 2010-10-08 16:16 問題 packetizer_h264 packetizer warning: waiting for SPS/PPS

是因為解碼器只是在第一次執(zhí)行編碼的時候,才編碼出 SPS、PPS、和I_Frame;?

h264?packetizer?has?set?so,?that?it?sends?sps/pps?only?first?keyframe,
?I'm?trying?to?figure?what?breaks?if?that?is?changed?so?sps/pps?is?written?in?every?keyframe.?
[出自|?http://trac.videolan.org/vlc/ticket/1384]

解決辦法:

1、編碼器編碼出每個關鍵幀都加上SPS、PPS ,據(jù)說通常情況編碼器編出的 SPS、PPS是一樣的,所以這種方法耗費資源。

2、在服務器接收到客戶端請求時,發(fā)送第一個package 加上 SPS、PPS。

具體如下:

1、在?VideoOpenFileSource?添加一個變量 isFirstFrame;

2、構造時初始化 isFirstFrame = true;

3、在int?VideoOpenFileSource::readFromBufferChain() 修改如下:

???1?????????if(isFirstFrame?==?true)
???2?????????{
???3?????????????????memcpy(fTo,?h264_header,?sizeof(h264_header));?/*?h264_header?=?pps?+sps*/
???4?????????????????offset?=?sizeof(h264_header);
???5?????????????????framesize?=?BufferChain_get(fInput.video_bufs,?fTo?+?offset);
???6?????????????????offset?+=?framesize;
???7?????????????????isFirstFrame?=?false;
???8?????????????????printf("this?is?the?first?fimen");
???9?????????????????sleep(1);
??10?????????}
??11?????????else
??12?????????{
??13?????????????????framesize?=?BufferChain_get(fInput.video_bufs,?fTo?+?offset);
??14?????????????????offset?+=?framesize;
??15?????????}
??1
[http://topic.csdn.net/u/20100801/17/ef35e664-92ff-4144-a35f-3984dcf11da3.html|?參考]?


========================================================================
sdp?關于pps和sps的疑問:
packetization-mode?主要是定義包的模式,單一?NALU單元模式(0);非交錯(non-interleaved)封包模式(1);交錯(interleaved)封包模式(2)
sprop-parameter-sets?等于H.264?的序列參數(shù)集和圖像參數(shù)?NAL單元,base64轉換;(即=?sps+pps)
profile-level-id?這個參數(shù)用于指示?H.264?流的?profile?類型和級別。這知道這個是啥東東

參考?黑暗長老?www.cppblog.com/czanyou/
ffmpeg?decode?關于pps?sps問題:
stackoverflow.com/questions/3493742/problem-to-decode-h264-video-over-rtp-with-ffmpeg-libavcodec/3500432#3500432




如何用C語言取出H.264ES文件里的nal(sps,pps)信息。比如width, height, profile等等

請高手指點指點。。。?http://www.oschina.net/question/225813_35707

解析sps,pps的代碼在ffmpeg里面就有, 抄出來就行了, 我以前也自己寫過...
ffmpeg的libavcodec/h264_parser.c,
h264_ps.c
函數(shù)
ff_h264_decode_seq_parameter_set
ff_h264_decode_picture_parameter_set
自己可以看代碼.


H264參數(shù)語法文檔: SPS、PPS、IDR?http://blog.csdn.net/heanyu/article/details/6205390

H.264碼流第一個 NALU 是 SPS(序列參數(shù)集Sequence Parameter Set)
對應H264標準文檔 7.3.2.1 序列參數(shù)集的語法進行解析



關于H264通過RTP傳輸?shù)拇虬绞??


|字號?訂閱

Q:現(xiàn)在小弟初次嘗試H264的編碼通過RTP方式傳輸,具體實驗環(huán)境的問題如下:
環(huán)境:
服務器端,H264的幀數(shù)據(jù)(可能超過64k),分成N個1460字節(jié)的包,然后加上RTP頭發(fā)送。
客戶端,VLC播放器,通過RTSP協(xié)議建立連接,然后接收數(shù)據(jù)解碼播放。
結果:
VLC不能解碼接收到的數(shù)據(jù),解碼出錯,VLC的信息中顯示不能解碼幀數(shù)據(jù)。
我已經(jīng)閱讀了一遍rfc3984的文檔,對里面的如何進行打包和用rtp傳輸不是非常理解,希望各位大蝦能夠幫小弟一把,告訴小弟這些和H264的幀該如何發(fā)送,該如何分包,該如何加頭信息等等。
(其中看到FUs的方式好像適合分包發(fā)送,因為小弟的數(shù)據(jù)幀可能超過64k,所以忘大蝦們能夠仔細解釋一下對于小弟這種情況下的RTP傳輸)

A:我覺得所有的問題在 RFC3984 里面都已經(jīng)說得很清楚了。不知道你有哪點不懂,請具體提出來。


Q:斑竹好,我這邊是用VLC和服務器端進行通訊的,他們是用RTSP協(xié)議建立 開始時的連接的,服務器返回DISCRIBERS請求的SDP和下面描述的相同,我使用的packetization-mode=1,即FU-As方式打 包,因為我這邊上來的數(shù)據(jù)幀可能超過64k數(shù)據(jù)。能否麻煩斑竹看看我這邊的SDP寫的是否正確。
SDP:
v=0
o=- 1 1 IN IP4 127.0.0.1
s=VStream Live
a=type:broadcast
t=0 0
c=IN?? IP4 0.0.0.0
m=video 49170 RTP/AVP 99
a=rtpmap:99 H264/90000
a=fmtp:99 profile-level-id=42A01E; packetization-mode=1; sprop-parameter-ets=Z0IACpZTBYmI, aMljiA==
a=control:trackID=0

還有就是在RTP發(fā)送時,我打好包的數(shù)據(jù)方式如下面所示:
上來的幀數(shù)據(jù)為:NALU頭+EBSP數(shù)據(jù)
因為幀數(shù)據(jù)大于1460字節(jié),所以我把數(shù)據(jù)分為N個不大于1460字節(jié)的包,每個包前面加上RTP頭發(fā)出去。
其 中NALU頭的數(shù)值I幀為0x65,參數(shù)集為0x67和0x68,這個值是不是有點錯誤,我看RFC3984上面說的好像和我現(xiàn)在的有點不 同,RFC3984上面說FU-As方式打包類型值為28,我不知道這個是否十進制的,如果按照RFC3984上說的NALU頭應該是多少?還是用FU- As方式的FU indicator代替原來的NALU頭。
還有這個FU-As方式的頭好像是有兩個值,一個是FU indicator,另外一個是FU header,這兩個值我應該填寫什么?

按照我現(xiàn)在填寫的內(nèi)容,VLC會出現(xiàn)解不出碼的情況,希望斑竹可以幫我回答的細致一點。謝謝了。

A:我覺得 RFC3984 上面說得非常清楚啊。
首先你把一個 NALU 的 EBSP 根據(jù)需求拆分為多個包,例如 3 個,則:

第一個 FU-A 包的 FU indicator 應該是:F = NALU 頭中的 F;NRI = NALU 頭中的 NRI;Type = 28。FU header 應該是:S = 1;E = 0;R = 0;Type = NALU 頭中的 Type。

第二個 FU-A 包的 FU indicator 應該是:F = NALU 頭中的 F;NRI = NALU 頭中的 NRI;Type = 28。FU header 應該是:S = 0;E = 0;R = 0;Type = NALU 頭中的 Type。

第三個 FU-A 包的 FU indicator 應該是:F = NALU 頭中的 F;NRI = NALU 頭中的 NRI;Type = 28。FU header 應該是:S = 0;E = 1;R = 0;Type = NALU 頭中的 Type。

Q:版主,我按照你的方式分好包發(fā)送了,發(fā)現(xiàn)VLC不會出現(xiàn)不能解幀的情況了, 但是,還是出不來圖像。我想可能是因為發(fā)送序列參數(shù)集和圖像參數(shù)集的方法不對,他們兩個的長度都很小,只要一個包就可以了,我現(xiàn)在將他們按照singal NALU的方式發(fā)送,就是直接在NALU包前加一個RTP的頭,然后發(fā)出去。
是不是我這樣發(fā)參數(shù)集存在著問題,反正我這邊VLC是解不了這個參數(shù)集,因為參數(shù)集解不了,所以下面的幀肯定解不了,所以出不了圖像。
麻煩版主再解釋一下如何發(fā)參數(shù)集。

A:今天剛接受了流媒體的相關培訓。懂得看你的?? SDP 了。

對 于你的問題,不知道 SPS、PPS 打包是否有問題。按照 RFC3984,而且感覺你打單一包的方式也是錯的。我希望你能通過自己學習的方式去把這個問題弄清楚,因為 RFC3984 里面說得很清楚,請你自己學習學習 RFC3984 吧。既然你在做這個工作,還是應該仔細學習一下 RFC3984。

另外, SDP 中的 sprop-parameter-ets=Z0IACpZTBYmI 實際就是 SPS 和 PPS 的 BASE64 轉碼,你不用在碼流中再傳輸 SPS/PPS,直接從 SDP 就可以得到。

A2:1.SDP中已經(jīng)包括SPS&PPS,碼流中完全可以不用傳輸SPS&PPS
2.?profile-level-id=42A01E,這是SPS的開頭幾個字節(jié),剩下的在sprop-parameter- ets=Z0IACpZTBYmI, aMljiA==中,BASE64編碼,把“Z0IACpZTBYmI, aMljiA==”反BASE64轉換回去,應該剛好是SPS&PPS的內(nèi)容
3. 打包注意,要求H.264碼流不是byte stream格式的,即沒有0x000001分隔,也沒有插入0x03,具體如何生成,檢查你的編碼器選項。
4. packetization-mode=1模式下,要求每個RTP中只有一個NAL單元,或者一個FU,不分段的NAL不做任何修改,直接作為RTP負 載;分段的NAL注意,NAL頭不傳輸,有效負載從NAL頭之后開始,根據(jù)NAL頭的信息生成FU的頭兩個字節(jié)(相當于NAL頭拆為兩部分),具體生成方 式版主已經(jīng)講得很清楚。
5. RTP的payload type要與SDP中一致,不然解的出才怪

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

視頻編碼技術在過去幾年最重要的發(fā)展之一是由ITU和ISO/IEC的聯(lián)合視頻小組 (JVT)開發(fā)了H.264/MPEG-4 AVC標準。在發(fā)展過程中,業(yè)界為這種新標準取了許多不同的名稱。ITU在1997

關鍵字: h.264 avs技術 avs 視頻標準

  0引言   DirectsHow應用框架完成了流媒體處理的底層工作,使得編程者無需關心數(shù)據(jù)如何輸入,以及處理完后如何輸出,而只需關心如何對輸入數(shù)據(jù)進行處理。H.264視頻編解碼標準具有高壓縮比和

關鍵字: 播放器 流媒體 h.264 directshow

 4月5日消息,據(jù)報道,消息人士透露,中國電信設備制造商華為技術已進入美國第六大無線運營商Cellular的4G網(wǎng)絡建設合同的最后競標階段。此外,華為還表示正在與美國聯(lián)邦、州和地方政府

關鍵字: 存儲器 濾波 h.264 視頻解碼

    隨著無線通信技術的不斷發(fā)展,一種新型的無線網(wǎng)絡即移動Ad Hoc網(wǎng)絡(Mobile Ad Hoc Network,MANET)成為了研究熱點。移動Ad Hoc網(wǎng)絡是由一

關鍵字: 編碼器 dm642 h.264 x.264

    云計算和存儲將物理資源轉換成 Internet 上可伸縮、可共享的資源.云計算使用戶可以訪問大規(guī)模計算和存儲資源,而且他們不必知道那些資源的位置及其是如何配置的。正如您

關鍵字: h.264 視頻編碼 avc

  H.264和以前的標準一樣,還是采用的混合編碼的框架,AVS視頻標準采用了與H.264類似的技術框架,包括變換、量化、熵編碼、幀內(nèi)預測、幀間預測、環(huán)路濾波等模塊。他們核心技術的不同包括以下幾

關鍵字: h.264 avs

  H.264/AVC是什么?   H.264/AVC標準是由ITU-T和ISO/IEC聯(lián)合開發(fā)的,定位于覆蓋整個視頻應用領域,包括:低碼率的無線應用、標準清晰度和高清晰度的電視廣播應用

關鍵字: h.264 avc

  H.264/AVC是兩大組織集合H.263+和Mpeg4的優(yōu)點聯(lián)合推出的最新標準,最具價值的部分無疑是更高的數(shù)據(jù)壓縮比。在同等的圖像質量條件下,H.264的數(shù)據(jù)壓縮比能比H.263高2倍,比

關鍵字: h.264 avc

  7月12日消息,在中國移動(微博)提出明年建設20萬個TD-LTE基站之后,中國移動對此越來越有信心,知情人士透露,根據(jù)目前多個城市的TD-LTE規(guī)模試驗的測試顯示,TD-SCDMA站點升級

關鍵字: 編碼器 h.264 avs avs-m

  1.前言   長久以來,傳統(tǒng)光源----高壓鈉燈及部分金屬鹵化物燈一直在道路照明中起著主導作用。近年來,國內(nèi)LED照明應用發(fā)展迅速,很多廠家相繼推出了大功率LED路燈,并作為節(jié)能產(chǎn)品

關鍵字: 視頻會議系統(tǒng) rtp h.323
關閉