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