Wowza Community

Can I send "onTextData" events with the RTMP ingress stream for live CC?

Hi,

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.

many thanks,

Heinrich

If the onTextData is in the stream already, it can be used for live cc, where do you see it being ignored?

Daren

Hi,

Please do a capture of the rtmp stream (say about 5 minutes) using rtmpdump or a similar tool.

Doing a quick rtmpdump -V should tell you if that tool can see the onTextData events in the stream.

Send the output file (as a download link) to support@wowza.com along with zipped [install-dir]/conf and logs from your last Wowza server test,

and reference the URL of this forum post.

This will be a great help in tracking down the issue.

Thanks

Daren

Hi Heinrich

We need the capture to be from your original RTMP ingress stream (in which you believe the onTextData is already contained).

It is only is only CEA-608 support at the moment.

Apple’s developer site only mentions CEA-608:

https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html

The Transcoder Addon doesn’t support passing through the Closed captions at the moment, however we are planning to add this in a near future release.

I can provide more details when you write-in to the support email address above with the files/info we requested.

Let me know when you have sent in the email and I’ll keep an eye out for it.

Daren

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?)

    thanks,

    Heinrich

Daren,

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?

thanks,

Heinrich

hi daren,

I have sent an email to support@wowza.com with the requested data.

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.

cheers,

Heinrich

Hello,

I am now experiencing a similar problem.

  1. 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:

myNetStream.send("@setDataFrame", “onTextData”, obj);

  1. In Wireshark, I see that my event is indeed sent over RTMP.

  2. 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?