Objective. I have an application that is using OpenGL to render realtime medical imaging ouput to an Android tablet. I then use Android's MediaCodec to encode the OpenGL surface to a H.264 byte stream that I save to an MP4 file for future review. However, I want to skip this step and send the output live up to Wowza. How do I do this?
Here is what I have experimented so far.
Step 1. I have created a free trial Wowza cloud account and able to view the MP4 test video. </p>
Step 2. I downloaded a library called libstreaming that has Android code to send camera ouput up to Wowza using RTSP. I made small modifications and the video is transmitted up to Wowza. That is all great news so far.
Step 3. Here is where I am stuck. I cannot figure out how to modify the libstreaming to take my encoded bytes. But I figured Wowza has recommended way to do this and I don't have to rely on the libstreaming library.
Wowza currently doesn't have any options for doing what you want so libstreaming is probably your best option at the current time. The documentation here,
https://github.com/fyhertz/libstreaming, suffests that it is actually fairly straight forward to do usign the Surface to buffer method.
It looks like this works by taking the bytes directly from the surface and then passing them into the encoder (probably the same as you're currently doing to record the file). I think the difference may be that libstreaming manages the buffer and encoder so you probably just need to configure the surface to feed it.
We are looking at releasing the Wowza GoCoder SDK which would probably allow you to do this type of thing easily. At the moment, we have no information about when this would be available.