shaka-project / shaka-packager

A media packaging and development framework for VOD and Live DASH and HLS applications, supporting Common Encryption for Widevine and other DRM Systems.

Home Page:https://shaka-project.github.io/shaka-packager/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ttml from teletext and scte35

kuznetcoff777 opened this issue · comments

System info

Operating System: <e.g. macOS Sierra, Ubuntu 14.04 trusty etc>centos7
Shaka Packager Version: <e.g. v1.6.1, commit SHA etc>9c861d0-release

Issue and steps to reproduce the problem

Packager Command:
packager 'input=udp://233.1.1.1:20001?interface=172.17.0.2,stream=audio,init_segment=live-audio-init.mp4,segment_template=live-audio-$Number$.mp4,bandwidth=96000' 'input=udp://233.1.1.1:20001?interface=172.17.0.2,stream=video,init_segment=live-video-ld-init.mp4,segment_template=live-video-ld-$Number$.mp4,bandwidth=350000' 'input=udp://233.1.1.1:20002?interface=172.17.0.2,stream=video,init_segment=live-video-sd-init.mp4,segment_template=live-video-sd-$Number$.mp4,bandwidth=650000' 'input=udp://233.1.1.1:20003?interface=172.17.0.2,stream=video,init_segment=live-video-hd-init.mp4,segment_template=live-video-hd-$Number$.mp4,bandwidth=950000' --min_buffer_time 10 --minimum_update_period 10 --time_shift_buffer_depth 1200 --suggested_presentation_delay 20 --mpd_output live.mpd

Extra steps to reproduce the problem?
(1)
(2)

What is the expected result?

What happens instead?

<Please attach the input files or email to shaka-packager-issues@google.com.>

Just want to know if there is teletext and scte35 in udp mcast, if it is possible to get ttml/stpp (subtitle) on output and scte35 markers in mpd file? I found this issue #23, so i suppose there is must be ttml support, but did not find how to do it from udp signal.

Found in 1.3.0 version:
"Added Subtitle support for On-Demand: allowing subtitle inputs in webvtt or ttml. Support for subtitle inputs in media files will be added later."

So i suppose there is no support for live udp teteltext -> dash ttml. And also i found nothing about scte35 markers. So i suppose all i listed is not supported, am i right? If so, are you going to make support for this and if yes, then when?

That is not on our road map right now. We don't have much knowledge on how text/subtitle is carried in a udp mcast stream. We will probably need some help here. If you have any documentations on teletext/subtitle or sample contents, we'll be happy to look into it some time.

I suppose i can provide sample ts file soon.
What about scte35?

We are looking into scte35. I hope it can be supported in Q4 or Q1 2018, but no guarantees right now.

How this guys do scte35, some script inserts scte in mpd? (in mpd there is noticed v1.5.1-c540e5a-release)

https://ctc-live.webcaster.pro/dash/live.mpd

Here is example of scte35:

<?xml version="1.0" encoding="UTF-8"?>
<!--Generated with https://github.com/google/shaka-packager version v1.5.1-c540e5a-release-->
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" xmlns:scte35="urn:scte:scte35:2014:xml" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" publishTime="2017-09-22T06:42:43Z" availabilityStartTime="2017-09-20T20:19:56Z" minimumUpdatePeriod="PT2S" timeShiftBufferDepth="PT36S">
  <BaseURL>https://ctc.megacdn.ru/ctc/</BaseURL>
  <Period id="0" start="PT0S">
    <EventStream schemeIdUri="urn:scte:scte35:2014:xml" timescale="90000">
      <Event id="225" presentationTime="11137346943" duration="5400000">
        <scte35:SpliceInfoSection scte35:ptsAdjustment="0" scte35:protocolVersion="0" scte35:tier="4095">
          <scte35:SpliceInsert scte35:spliceEventId="1073742793" scte35:spliceEventCancelIndicator="false" scte35:outOfNetworkIndicator="true" scte35:uniqueProgramId="1" scte35:availNum="8" scte35:availsExpected="255">
            <scte35:Program>
              <scte35:SpliceTime scte35:ptsTime="2547412351"/>
            </scte35:Program>
            <BreakDuration scte35:autoReturn="false" scte35:duration="5400000"/>
          </scte35:SpliceInsert>
          <scte35:AcatilDescriptor scte35:ProviderAvailId="8"/>
        </scte35:SpliceInfoSection>
      </Event>
    </EventStream>
    <AdaptationSet id="0" contentType="audio" segmentAlignment="true">
      <Representation id="0" bandwidth="133664" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
        <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
        <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="1ac5d70b-b9d8-5d4b-86e2-d6f248a63301"/>
        <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
          <cenc:pssh>AAAAfHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFwSEJZFCOgj9ly4lYkfEtXnMXISECOwW3Ovb1RVu7OAYZpwoe8SEBrF1wu52F1LhuLW8kimMwEaEWludmVudG9zd2ViY2FzdGVyIgtjaGFubmVsX2N0Y0jj3JWbBg==</cenc:pssh>
        </ContentProtection>
        <SegmentTemplate timescale="90000" initialization="audio/a_b128000/1505961935_live-audio.mp4?cachetype=live" media="audio/a_b128000/1505961935_live-audio-$Number$.mp4?cachetype=live" startNumber="25038">
          <SegmentTimeline>
            <S t="11136749877" d="361523"/>
            <S t="11137111412" d="361522"/>
            <S t="11137472946" d="361521"/>
            <S t="11137834481" d="361522"/>
            <S t="11138196016" d="361521"/>
            <S t="11138557550" d="361523"/>
            <S t="11138919085" d="361522"/>
            <S t="11139280620" d="361522"/>
            <S t="11139642155" d="361521"/>
            <S t="11140003689" d="361523"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
    <AdaptationSet id="1" contentType="video" maxWidth="1024" maxHeight="740" frameRate="90000/3600">
      <Representation id="1" bandwidth="751191" codecs="avc1.4d001e" mimeType="video/mp4" sar="1:1" width="640" height="462">
        <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="964508e8-23f6-5cb8-9589-1f12d5e73172"/>
        <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
          <cenc:pssh>AAAAfHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFwSEJZFCOgj9ly4lYkfEtXnMXISECOwW3Ovb1RVu7OAYZpwoe8SEBrF1wu52F1LhuLW8kimMwEaEWludmVudG9zd2ViY2FzdGVyIgtjaGFubmVsX2N0Y0jj3JWbBg==</cenc:pssh>
        </ContentProtection>
        <SegmentTemplate timescale="90000" initialization="video/v_360p/1505961935_live-video.mp4?cachetype=live" media="video/v_360p/1505961935_live-video-$Number$.mp4?cachetype=live" startNumber="25147">
          <SegmentTimeline>
            <S t="11136853743" d="360000" r="9"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
      <Representation id="2" bandwidth="401953" codecs="avc1.42001e" mimeType="video/mp4" sar="1:1" width="416" height="308">
        <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="964508e8-23f6-5cb8-9589-1f12d5e73172"/>
        <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
          <cenc:pssh>AAAAfHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFwSEJZFCOgj9ly4lYkfEtXnMXISECOwW3Ovb1RVu7OAYZpwoe8SEBrF1wu52F1LhuLW8kimMwEaEWludmVudG9zd2ViY2FzdGVyIgtjaGFubmVsX2N0Y0jj3JWbBg==</cenc:pssh>
        </ContentProtection>
        <SegmentTemplate timescale="90000" initialization="video/v_240p/1505961935_live-video.mp4?cachetype=live" media="video/v_240p/1505961935_live-video-$Number$.mp4?cachetype=live" startNumber="25146">
          <SegmentTimeline>
            <S t="11136853743" d="360000" r="9"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
      <Representation id="3" bandwidth="1499506" codecs="avc1.4d001f" mimeType="video/mp4" sar="1:1" width="1024" height="740">
        <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="23b05b73-af6f-5455-bbb3-80619a70a1ef"/>
        <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
          <cenc:pssh>AAAAfHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFwSEJZFCOgj9ly4lYkfEtXnMXISECOwW3Ovb1RVu7OAYZpwoe8SEBrF1wu52F1LhuLW8kimMwEaEWludmVudG9zd2ViY2FzdGVyIgtjaGFubmVsX2N0Y0jj3JWbBg==</cenc:pssh>
        </ContentProtection>
        <SegmentTemplate timescale="90000" initialization="video/v_576p/1505961935_live-video.mp4?cachetype=live" media="video/v_576p/1505961935_live-video-$Number$.mp4?cachetype=live" startNumber="25145">
          <SegmentTimeline>
            <S t="11136853743" d="360000" r="9"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>



I have no idea. Looks like it is inserted by an external script. I hope they can tell us how they did it. We welcome contributions!

Sent to gmail links for files with scte35 markers and subtitles.

Cool. Thanks!

@kuznetcoff777 @kqyang , is this still an active issue?

Yes, we should look into it next quarter. Added it to backlog for now.

just curious about this. When it's ready ? Thanks,
Tam

@delgemoon I hope we'll have some time next quarter to work on it if not later.

A quick update, we haven't made much/any progress on working on this, but #832 is nearly done and much of the content using DVB is using DVB-SUB and will be supported in #832. We also already support TTML output (not input), which will help with this issue. Also, the SCTE-35 part will be tracked in #352 instead, this will track just handling teletext subtitles.

To whoever implements this, I think the teletext spec is ETS 300 706 and will be wrapped in MP2TS by ETSI EN 301 775. There is a small sample asset at https://trac.ffmpeg.org/ticket/5067.

Careful, as there seems to be different "teletext" specs.

One of them is the one linked before, ETS 300 706.
The other one, which seems to be the one implemented in ffmpeg, is ETS 300 472, known as "dvb teletext".

@Canta ETS 300 472 specyfies carriage of ETS 300 706 packets in dvb PES packets.

Hi

did you make any progress in the implementation of Teletext subtitles?

BR

commented

Hi all and an extra ping to @joeyparrish,

Eyevinn Technology, together with CIRES21, is working on an implementation of EBU teletext in MPEG-2 input for Shaka-packager, following the ETSI specifications (ETSI 300 706, 300 468 and 300 472).

The main specification 300 706 has different levels and complexities, so as a first step we intend to implement Level 1 with

  • text extraction with timing, new-lines and character set for standard latin and Portuguese/Spanish national symbols
  • specification of what teletext page to extract using the cc_index configuration

Further things that could be implemented are

  • distinction between captions and subtitles
  • row numbers (1-24)
  • alignment heuristics
  • more character sets
  • colors and other styling
  • more configuration parameters if needed

Extraction from MPEG-2 TS input is similar to what is done for DVB subtitles, and we aim to reuse the current text output options. We think that we are on a good track, but if there are special aspects to take into considerations, it would be good to learn about them?