var streamSettings:H264VideoStreamSettings = new H264VideoStreamSettings();
streamSettings.setProfileLevel(H264Profile.BASELINE, H264Level.LEVEL_3_1);
_recvStream.videoStreamSettings=streamSettings;
Settings in config.xml:
<module name="VideoconfModule"
…
enableH264="true"
h264Level="3.1"
h264Profile="baseline"
…
</module>
Attempted baseline/3.1, baseline/3.0, main/2.1 (default for BBB), but, nothing seems to work to display the video. I've attempted using both flash.media.Video, and StageVideo in the client. The Apple guidelines "seem" to state these H264 settings are valid for the device I'm testing on (iPhone 5), but, nothing seems to work. I'm using the Flex 4.12 SDK.
Again, turning off H.264 in BBB thru the config.xl, "enableH264=false", then the client(s) I'm testing with work fine. Just to make sure the client is delivering the right video settings, I've traced into the client using the FB debugger (in VideoProxy.as) and it is definitely seeing the configuration correctly and setting the appropriate H264 settings.
Has anyone gotten a video stream to work using H.264 to iOS?
Also, just curious, and, as I beat my head against the wall with this, it seems that, in the mobile use case of using BBB, only one stream will be able to be subscribed to by the mobile client. And, assuming only one stream is viable (i.e. presenter) in the mobile use case, seems feasible that 1) the stream doesn't need to be H.264 (rtmpt works to iOS/Android), and 2) separate streams could easily be published, one in H.264 (for web-only clients, i.e. non-Flash based clients), and one rtmpt could be used for real application clients (i.e. Flash-based PC clients and mobile app clients). Also, I believe that you could combine all the streams on the red5 side into one stream to allow video conf scenario viewable to all on mobile (I believe someone is working on this). Anyway, just curious about what the thoughts are here.
For H.264 video, the iOS APIs for video playback accept only a URL to a file or
stream. You cannot pass in a buffer of H264 video data to be decoded. Depending
on your video source, pass the appropriate argument to NetStream.play() as
follows:
- For progressive playback: Pass the URL of the file (local or remote).
- For streaming video: Pass the URL of a playlist in Apple's HTTP Live Streaming
(HLS) format. This file can be hosted by any server; Flash Media Server 4.5 and
higher has the advantage of being able to encode streams in HLS format.
The issue is that you don't provide a "stream" to the Apple APIs; you
only provide a remote URL or local filename. The Apple API is then
responsible for connecting to the server and streaming the video; the
details are all hidden from the application. The Apple API only supports
basic HTTP and HLS protocols.