At the moment my code just inserts the Unix time that the packetizer started in every frame.
Unfortunately the iOS metadata API functions aren't detecting the tags. This is strange, because I've tested the same code with a different HLS source also containing ID3s- a VOD m3u8 playlist containing chunks with ID3s created using Apple's own tools. The iOS code works fine with this video- all tags are detected. I've verified that the chunks from Wowza do contain ID3s- although seemingly only one at the beginning of each chunk.
I've examined the resulting chunks in a hex editor, and I've noticed that the Wowza-inserted chunk appends its ID3 to a TS
PMT packet - hex dump below. This packet is over the standard 188 bytes- the ID3 is just stuck on the end.
The highlighted numbers are the PMT table ID and the ID3 tag
I'm wondering if I'm doing something wrong at the Wowza end, causing the tag to be inserted in the wrong place, and thus not correctly read - I suspect I'm misunderstanding some part of the API
I should also mention, that for testing purposes I'm using VLC to create a fake live stream from a file, and that previously, while trying to use Apple's live stream segmenter together with their ID3 inserter, I've run into trouble- and discovered on a post on an Apple developer forum that there is a known issue with trying to insert ID3s into MPEG2TS feeds from VLC, due to the fact that VLC apparently pads the MPEG2TS PMT with the adaptation field.