1 MPEG4的網路接收filter 是完成了 但是在VMR9播放時不顯示 畫面
大夥如果想看VMR9是否接收到資料可以在這裡看
看以播放幀數 等參量(在這裡感謝教我這一招的前輩)
這是怎麼回事呢
在查看了
state=((recv->pfilter)->m_output)->Deliver(pmediasample);
返回0後 我認定是解碼的問題
而後我跟蹤了 用JRTPlib 接收包含MPEG4流的RTP包 發現
我獲得的第一包資料 最開始竟然不是 00 00 01 B0 (只有懂MPEG4碼流結構的才理解這是什麼意思)我左思右想 不理解 這是為什嗎?
1 難道是因為我的機器是 四核 的 靠想到了jrtplib 難道不支援多核?
2 我代碼裡的問題 但是我看不出來
好 ,我拿出 JRTPLIB 3.7.1帶的example 在一通改動後 我接收 MPEG4發送端的資料
一接收 竟然 和My Code一樣 呵呵 看來不是我的錯,但是當我自以為把自己的代碼排除嫌疑時
我突然有了一個驚人的發現:
在發送端發送 29個位元組 最開始是 00 00 01 b0 在發送端我下斷點看了 發送時是對的
在接收端接收到的是 80 E0
這是為什麼
原因找到了
int len=pack->GetPacketLength();
byte * test=pack->GetPacketData();
我是想獲得 RTP包負載中的資料 但是我確調用上述兩個函數
用錯了 獲得RTP包中負載的資料以及 獲得負載的長度是調用下邊兩個資料:
int len2=pack->GetPayloadLength();
byte * test2=pack->GetPayloadData();
我的天!
2
我還發現一點
在向Divx 推資料時
如果(在代碼中我把 VOS VO VOL放在同一個sample中) VOS VO VOL 向下推失敗 其餘的sample 發送的再對 Divx 也不會解碼
1. 視頻對象序列VOS
2. 視頻對象VO
3. 視頻對象層VOL