shaka-packager icon indicating copy to clipboard operation
shaka-packager copied to clipboard

ttml from teletext and scte35

Open kuznetcoff777 opened this issue 6 years ago • 17 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 [email protected].> <Please provide any additional information below.>

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 https://github.com/google/shaka-packager/issues/23, so i suppose there is must be ttml support, but did not find how to do it from udp signal.

kuznetcoff777 avatar Sep 20 '17 10:09 kuznetcoff777

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?

kuznetcoff777 avatar Sep 20 '17 11:09 kuznetcoff777

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.

kqyang avatar Sep 20 '17 17:09 kqyang

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

kuznetcoff777 avatar Sep 21 '17 06:09 kuznetcoff777

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

kqyang avatar Sep 21 '17 23:09 kqyang

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>



kuznetcoff777 avatar Sep 22 '17 06:09 kuznetcoff777

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!

kqyang avatar Sep 22 '17 17:09 kqyang

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

kuznetcoff777 avatar Sep 25 '17 11:09 kuznetcoff777

Cool. Thanks!

kqyang avatar Sep 25 '17 17:09 kqyang

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

vaage avatar Mar 02 '18 22:03 vaage

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

kqyang avatar Mar 02 '18 22:03 kqyang

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

ghost avatar Mar 23 '18 08:03 ghost

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

kqyang avatar Mar 23 '18 16:03 kqyang

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.

TheModMaker avatar Jan 22 '21 23:01 TheModMaker

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 avatar Jan 27 '21 20:01 Canta

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

aleek avatar Feb 18 '21 16:02 aleek

Hi

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

BR

Nixon197 avatar Dec 15 '21 07:12 Nixon197

Hi,

I am not sure what you mean. Can you give me some more information, because I didn't do it recently, if not explained below. What I made recently, 5G and higher( don't abuse it, because I am BramG.,) is not a result of implementation of Teletext subtitels. What I 've made is a shared folder shared with everyone at \GHYSBRAMPC\fr frtl It seems empty but contains a copy of the 3G driver made by me in the past.

Sincerely,

Bram Ghys

Outlook voor Androidhttps://aka.ms/AAb9ysg downloaden


From: Nixon197 @.> Sent: Wednesday, December 15, 2021 8:54:19 AM To: google/shaka-packager @.> Cc: Subscribed @.***> Subject: Re: [google/shaka-packager] ttml from teletext and scte35 (#272)

Hi

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

BR

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/google/shaka-packager/issues/272#issuecomment-994463440, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAQK66FBGFNYPXYYOV5GU4DURBCSXANCNFSM4D3WXPSA. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

ghyzo avatar Dec 16 '21 11:12 ghyzo

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?

tobbee avatar Jan 24 '23 16:01 tobbee