I’ve read through the CC examples for live streaming, and I wondered if Wowza could reuse the RTMP “onTextData” data that are sent within the RTMP ingress stream (we are testing an RTMP live application scenario). That way, only one server-side module would be necessary, i.e. injecting onTextData events into the stream wouldn’t be necessary anymore.
In my tests, the onTextData events of the ingress stream seem to be ignored, but just to be safe, I would appreciate it if anyone could confirm that.
Thanks for your quick response, here’s how I tested this and how I reached my conclusion:
Setup a live application using an RTMP ingress stream as described here.
Setup the Live Closed Caption modules as described in the ZIP file’s README.html here.
Only activate the module ModuleClosedCaptionLive in the configuration of the live application (as only to listen for onTextData events, but not to inject them as they should be in the stream already).
Start the RTMP ingress stream which already has “onTextData” events (encapsulated in AMF messages).
Check if ModuleClosedCaptionLive.ClosedCaptionStreamHandler.onCallback(…) logs anything for the events that I have embedded into the RTMP ingress stream.
Nothing gets logged (like when ModulePublishOnTextData were activated to inject onTextData events separately).
Therefore I reached my conclusion that ingress onTextData events are ignored by Wowza and the only way of submitting subtitles via onTextData events would require to write a module similar to ModulePublishOnTextData that establishes a separate data connection to the source of the content provider that delivers subtitle data.
I have also confirmed that our test ingress streams actually contains onTextData events, captured by wireshark during streaming. Here’s a wireshark screenshot of the onTextData RTMP frame:
Of course I would really prefer sending the data along the stream (timing and muxing the subtitles together with A/V would be much easier).
Any ideas on how to further test this, or if we did something wrong in creating the onTextData event (maybe AMF0 vs. AMF3 format isues?)
just to be clear: do you mean I should capture Wowza’s output RTMP stream which originates from my original RTMP ingress stream (in which I think the onTextData are already contained)? I would be glad to send this to support, but please tell me if there is a way that I can use rtmpdump to capture the stream at its publish point (don’t know if that’s possible at all…).
I also have a few other related question that came up just recently:
] When adding the transcoder module to the setup, would it be sufficient to inject CEA-608 only to the master stream? In other words, does the transcoder keep the SEI NALU unit across the transcoded results?
] Is only CEA-608 support at the moment, or could I also inject CEA-708 into the SEI NALU units? I guess this question boils down to: Does QuicktimePlayer/iOS player (or any other player) also support and recognize CEA-708?
Again, I am looking forward to follow up with support regarding the lost “onTextData” issue. In the meantime we are simply opening our own socket within a server module to transfer CEA-608 directly to the stream, which seems to work well. Any objections on this?
On an unrelated note: Can you send me the contact of your coordinator for meetings at NAB (my email is hfink@toolsonair.com)? Would be nice to get together.
I have created a Flash application which streams to my Wowza Streaming Engine over RTMP. In this application, I load and parse an external txt file, and send the resulting strings as caption on the NetStream using the onTextData event:
In Wireshark, I see that my event is indeed sent over RTMP.
Despite the fact that I ModuleOnTextDataToCEA608 enabled and the following properties:
closedCaptionLiveMaxDisplayTime
10000
Integer
closedCaptionLiveCommandsPerFrame
30
Integer
closedCaptionLiveChannel
0
Integer
closedCaptionLiveColor
0
Integer
closedCaptionLiveCharacterSet
UTF-8
closedCaptionLiveLogOnTextDataEvents
true
Boolean
closedCaptionLiveEnableTranscoderResults
true
Boolean
In my Application.xml. I don’t see any response to my onTextData events in the Wowza access log, no matter which debug level I set in the log4j.properties file. Am I missing something?