Re: [問題] H264 stream decode

作者: htaiwan (健康的台灣)   2014-10-30 15:57:00
我終於順利搞定了
已經可以利用videotoolbox decode h.264 stream到手機上
由於目前相關的資源很少,所以分享一下要注意的事項
length code的取得
1. 將NALUnit的lengh - 4byte(start code length)
2. 轉成16進制,取代原本NALUnit start code.
ex. 假設此unit 長度 1284,因此要轉換的長度 = 1284 - 4
將1280 轉成16進制 500
取代原本 unit start code的位置 00 00 00 01 -> 00 00 05 00
我也把目前完成的範例放在git上
希望可以幫助有需要的人
https://github.com/htaiwan/-VideoToolboxDemo
※ 引述《htaiwan (健康的台灣)》之銘言:
: 嗨,各位前輩好
: 小弟目前正在利用ios8 videoToolBox進行H.264 stream decode
: 由於網路上的相關資源實在真的太少了,不知道有沒有前輩也有作相關研究
: 小弟目前的狀況是要解析的是AnnexB的h.264 stream
: 根據在WWDC和stackoverflow所爬的文,進行下列動作
: 每一個動作都有確認OSStatus
: 1. 抓出h264的SPS,PPS產生CMFormatDescription(status == noErr)
: 2. 產生VTDecompressionSession(status == noErr)
: 3. 將每個NAL unit的statr code 轉成length code,
: 然後產生CMBlockBuffer(status == noErr)
: 4. 產生CMSampleBuffer(status == noErr)
: 5. 最後利用VTDecompressionSessionDecodeFrame的callback function取回
: 解碼後的結果。但這時回傳error code -8969(simulator), -12909(device)
: 我不太清楚是哪裡作錯了? 但我在猜有可能是在step 3出錯,因為我不太確定所謂
: 的length code是指什麼,我只是單純照WWDC 2014 seseeion video513中所提到
: 將每個NAL unit的statr code 00 00 00 01 轉成 00 00 80 00。
: 不知道版上有前輩可以指導或提供debug方向嗎,謝謝。
作者: kyushu (蘇打綠嚇倒我了)   2014-10-30 16:29:00
沒辦法按讚只好推了,thanks for sharing
作者: TsaoCCFGOGO (書唸累時,就算數學吧)   2014-10-30 19:22:00
推推!
作者: sghergee (=])   2014-10-30 19:28:00
作者: Piceman (派斯麵)   2014-10-30 21:53:00
推!
作者: czberlin (派大星)   2014-10-30 22:29:00
請問xcode要用哪個版本 是否target os 最低只到8.1
作者: jfang   2014-10-31 02:49:00
謝謝你的分享!
作者: HateDebris (Monster)   2014-10-31 09:31:00
推!
作者: htaiwan (健康的台灣)   2014-10-31 09:32:00
Xcode 6.1 target 8.1
作者: manlike ( )   2014-10-31 09:43:00
4 byte 才對
作者: nobody1 (無事家中坐)   2014-10-31 11:00:00
作者: rehcal (要獻便獻吻)   2014-11-04 13:29:00
推!已試用!
作者: pttppp (ppptt)   2014-11-05 21:05:00
作者: poormusic (唉唉)   2014-11-05 23:39:00
推!

Links booklink

Contact Us: admin [ a t ] ucptt.com