看板 MacDev 關於我們 聯絡資訊
我終於順利搞定了 已經可以利用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方向嗎,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.118.175 ※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1414655823.A.51B.html
kyushu: 沒辦法按讚只好推了,thanks for sharing 10/30 16:29
TsaoCCFGOGO: 推推! 10/30 19:22
sghergee: 推 10/30 19:28
Piceman: 推! 10/30 21:53
czberlin: 請問xcode要用哪個版本 是否target os 最低只到8.1 10/30 22:29
jfang: 謝謝你的分享! 10/31 02:49
HateDebris: 推! 10/31 09:31
htaiwan: Xcode 6.1 target 8.1 10/31 09:32
manlike: 4 byte 才對 10/31 09:43
nobody1: 推 10/31 11:00
※ 編輯: htaiwan (118.163.118.175), 10/31/2014 16:07:43
rehcal: 推!已試用! 11/04 13:29
Siu: 11/04 22:04
pttppp: 推 11/05 21:05
poormusic: 推! 11/05 23:39