Hi, I am using a specific device with specific gsreamer plugin, which enables live camera video stream with hardware accelerated h264 encoding, and I am restreaming that stream using Wowza. (It works the same way as IP camreras, only I am controlling all the software).
Everything works fine using RTMP, RTSP, but when viewing re-stream in iOS, then only audio can be heard, but video is empty/black screen. Debug from iOS developer showed these error lines:
......
-iPhone-4S-iOS7 mediaserverd[46] <Error>: vxdDec - Frame# 568, DecodeFrame failed with error: 6
...
, which gives me nothing, because information about this can’t be found online. The HLS by itself seems to be fine, because it can be played using VLC.
The video on the device is encoded with h264, profile: baseline, 640x480, variable bitrate, framrate:30, gopsize: 30. (Tried different resolutions, tried constant bitrate, tried different gopsizes - result is the same).
A strange solution:
Because I knew there is something iOS specific (resolution, keyframe, bitrate) in the h264 that breaks its playback I thought of using Transcoder plugin to re-encode the h264.
And here comes the intereseting part: re-streaming works if I use Transcoder addon without any stream modifications - I use Transrate template with video and audio settings as PASSTHROUGH. So as I understand it shouldn’t change anything in codecs, but why is the end result working in this situation? What’s the magic the Transcoder is doing, so that iOS now works?