Giter VIP home page Giter VIP logo

scte-35_hls_x9k3's People

Contributors

chreniuc avatar edward-rafalovsky avatar futzu avatar josepowera avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scte-35_hls_x9k3's Issues

Last x9k3 not working correctly with Mpeg2

Hello.
Uses latest x9k3 and threefive. H264 working ok, but Mpeg2 splits with different segments duration(not 2 default seconds). It happened on file or live UDP streams. Looks like it cannot found i-frames in stream.

H264 file https://www.dropbox.com/s/5qswgdnt22ykp6d/test1.ts?dl=0
C:\Python>python.exe x9k3.py -i test1.ts
./seg0.ts start: 45.693333 duration: 2.160000 stream diff: 2.1
28998
./seg1.ts start: 47.853333 duration: 2.160000 stream diff: 4.2
58997
./seg2.ts start: 50.013333 duration: 2.160000 stream diff: 6.3
91995
./seg3.ts start: 52.173333 duration: 2.160000 stream diff: 8.5
25993
./seg4.ts start: 54.333333 duration: 2.160000 stream diff: 10.
658992
./seg5.ts start: 56.493333 duration: 2.160000 stream diff: 12.
79299
./seg6.ts start: 58.653333 duration: 2.160000 stream diff: 14.
925989
./seg7.ts start: 60.813333 duration: 2.160000 stream diff: 17.
059987
./seg8.ts start: 62.973333 duration: 2.160000 stream diff: 19.
192986
./seg9.ts start: 65.133333 duration: 2.160000 stream diff: 21.
325984
./seg10.ts start: 67.293333 duration: 2.160000 stream diff: 23.
459983
./seg11.ts start: 69.453333 duration: 2.160000 stream diff: 25.
592981
./seg12.ts start: 71.613333 duration: 2.160000 stream diff: 27.
72698
./seg13.ts start: 73.773333 duration: 2.160000 stream diff: 29.
860978
./seg14.ts start: 75.933333 duration: 2.160000 stream diff: 31.
993977
./seg15.ts start: 78.093333 duration: 2.160000 stream diff: 34.
124975
./seg16.ts start: 80.253333 duration: 2.160000 stream diff: 36.
257974
./seg17.ts start: 82.413333 duration: 2.160000 stream diff: 38.
390972
./seg18.ts start: 84.573333 duration: 2.160000 stream diff: 40.
52197
./seg19.ts start: 86.733333 duration: 2.160000 stream diff: 42.
653969
./seg20.ts start: 88.893333 duration: 2.160000 stream diff: 44.
784967
./seg21.ts start: 91.053333 duration: 2.160000 stream diff: 46.
913965
./seg22.ts start: 93.213333 duration: 2.160000 stream diff: 49.
045963
./seg23.ts start: 95.373333 duration: 2.160000 stream diff: 51.
175962
./seg24.ts start: 97.533333 duration: 2.160000 stream diff: 53.
30796
./seg25.ts start: 99.693333 duration: 2.160000 stream diff: 55.
437959
./seg26.ts start: 101.853333 duration: 2.160000 stream diff: 57.
569957
./seg27.ts start: 104.013333 duration: 2.160000 stream diff: 59.
701955
./seg28.ts start: 106.173333 duration: 2.160000 stream diff: 61.
831954

MPEG2 file https://www.dropbox.com/s/v5vrnlbqpqsc7xn/test2_mp2.ts?dl=0
C:\Python>python.exe x9k3.py -i test2_mp2.ts
./seg0.ts start: 170.317311 duration: 24.480000 stream diff: 23.
890966

Allow media-sequence to continue from last saved index.m3u8

When x9k3 is restarted it could keep media-sequence going on - it would reread last index.m3u8. If developer want's to reset mediaseq it could just delete index.m3u8 before start.

Reason: if we run x9k3 on LIVE and sidecar.txt gets big, we can't delete sidecar.txt without breaking clients. (when sidecar.txt is deleted x9k3 crashes).

Alternative could be to allow to receive sidecar txt lines using TCP/UDP just to leave sidecar.txt out.

auto return not working?

I'm using tsduck to inject SCTE35 Markers with
...
<splice_insert splice_event_id="0x00000001" out_of_network="true" splice_immediate="true" unique_program_id="0x0001">
<break_duration auto_return="true" duration="2,150,000"/>
</splice_insert>
...
However, the ad breaks runs forever:

#EXT-X-CUE-OUT-CONT:825.560/23.888889
#EXTINF:3.840,
seg1796.ts
#EXT-X-CUE-OUT-CONT:829.400/23.888889
#EXTINF:3.840,
seg1797.ts
#EXT-X-CUE-OUT-CONT:833.240/23.888889
#EXTINF:3.840,

I'm a total python newbie, but looking at the code, the _auto_return is never called / tested. Where should I insert the auto-return test?

Great tool, btw! Adds the last missing piece to the ffmpeg / tsduck eco system.

paypal account

hi my brother.
you have PayPal account? or BTC/ETH ?
I need to sent some Christmas gift

Add ad breaks to existing videos so they work with google ad manager server-side ad injection

I am new to the field of video production, and I was attempting to use x9k3 to solve a problem, but I am not certain if it is the correct tool. I was hoping I might be able to contact you via email or even jump on a phone call.

I am working with a company that produces live streamed events. We save the video stream from those events, and then also make them available as VOD on different platforms. I would like to integrate with google ad manager, but google requires "preconditioning" the videos. In particular, I would like to do server-side ad injection (SSAI, also often called DAI) using a stitcher. I see that google ad manager can accept an MRSS feed (which has a google-specific namespace to identify cue-points) or they can accept files from BrightCove.

My goal is to allow my content editors to create a new piece of content (maybe an edited live stream or even a highlight reel pieced together from many streams). I would then like the editors to be able to place ad breaks (maybe cue-points, maybe SCTE 35 markers, I'm not sure) into the video at any points they choose. I attempted to do this with your x9k3 tool and adbreak tool, but it seemed as if the resultant m3u8 file was not re-encoded (but rather just split on the nearest I-Frame) - I say this because it appeared that the cue-out was not at the offset I had configured, but somewhat close.

I would like my users to be able to place ad breaks at specific locations and then have google ad manager respect those locations - possibly by having an MRSS feed that google ad manager can ingest. I am somewhat shaky on the details since it seems redundant to me that I should need cue-points in the MRSS feed but then also need the m3u8 file to reflect those same cue points.

In short, I would be very grateful for any assistance you might be able to provide to help me solve this problem. If you know how to add ad breaks to existing videos so they work with google ad manager server-side ad injection, I would love to learn how. I am also happy to compensate you for any assistance, or I would be grateful if you could refer me to another person if you are not familiar with this particular situation.

Thank you.

Replay mode , not looping the video

Hello

I'm testing x9k3 to obtain a live signal with multiple scte35 cues. I've installed using the instructions, and tried to run the replay mode with a ts file to generate a live content.

I run as follows and added a LOOP trace to validate:

python3 x9k3.py -i ../sample.ts -r -o ../out
phosy@DESKTOP-FHL6Q1U:~/DEVEL/x9k3/x9k3-main$ python3 x9k3.py -i ../sample.ts -r -o ../out
LOOP
../out/seg0.ts:   start: 1.480000   end: 4.520000   duration: 3.040000
../out/seg1.ts:   start: 4.520000   end: 7.560000   duration: 3.040000
../out/seg2.ts:   start: 7.560000   end: 10.600000   duration: 3.040000
../out/seg3.ts:   start: 10.600000   end: 13.640000   duration: 3.040000
../out/seg4.ts:   start: 13.640000   end: 16.680000   duration: 3.040000
deleting ../out/seg0.ts
...
...
../out/seg14.ts:   start: 44.040000   end: 47.080000   duration: 3.040000
deleting ../out/seg10.ts
../out/seg15.ts:   start: 47.080000   end: 50.120000   duration: 3.040000
deleting ../out/seg11.ts
../out/seg16.ts:   start: 50.120000   end: 53.160000   duration: 3.040000
deleting ../out/seg12.ts
LOOP
LOOP
LOOP
LOOP

The problem is that the segments end when the sample video ends and I don´t see that it starts again. I've observed in the code that the while true loop is working but it seems the threefive decode stops

The sample I used is the following: https://www.dwsamplefiles.com/?dl_id=396

Any ideas? Thank you

Play on native player breaks in replay mode after restarting the loop

As I mentioned on other issues, I open a new one clarifying the behavior I get when trying to use the tool to play on a native player (IOS 15) and the replay mode.

I have an input file that is an MPEG.TS generated with ffmpeg with the following characteristics:

Input #0, mpegts, from '../live.ts':
  Duration: 00:00:48.02, start: 1.458667, bitrate: 1790 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 4 kb/s

I execute x9k3 with the following arguments:

x9k3 -i live.ts -o out -t 6 --replay -c

In a first pass, the playlist is generated correctly, segmenting the file and adding them into the playlist. The number of segments for this input file is 8 (with t=6 seconds, from 0 to 7). The throttling is working correctly. The playlist for the last segment is this:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:7
#EXT-X-MEDIA-SEQUENCE:3
#EXT-X-DISCONTINUITY-SEQUENCE:4
#EXT-X-X9K3-VERSION:0.2.01
#EXTINF:6.000000,
seg3.ts
#EXTINF:6.000000,
seg4.ts
#EXTINF:7.000000,
seg5.ts
#EXTINF:6.000000,
seg6.ts
#EXTINF:4.960000,
seg7.ts

After the duration of the input file has passed, the tool re-decode the input file to start over again for the replay functionality. Now, current segment will be 8. The generated playlist file is the following:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:7
#EXT-X-MEDIA-SEQUENCE:8
#EXT-X-DISCONTINUITY-SEQUENCE:4
#EXT-X-X9K3-VERSION:0.2.01
#EXT-X-DISCONTINUITY
#EXTINF:6.000000,
seg8.ts

As you can see, all the previous segments are removed from the playlists, and only the new "first" segment is present in it. This breaks the play of this m3u8 in an HLS player (tested with hls.js and native player). This breaks the buffer status in the player. For this to work safely for players, the playlist for the segment #8 should be like this:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:7
#EXT-X-MEDIA-SEQUENCE:3
#EXT-X-DISCONTINUITY-SEQUENCE:4
#EXT-X-X9K3-VERSION:0.2.01
#EXTINF:6.000000,
seg4.ts
#EXTINF:7.000000,
seg5.ts
#EXTINF:6.000000,
seg6.ts
#EXTINF:4.960000,
seg7.ts
#EXT-X-DISCONTINUITY
#EXTINF:6.000000,
seg8.ts

It should remove remove seg3.ts from the playlist, and should add a Discontinuity tag (as the PTS in the input file restart to 0 and the player needs to be aware of) and continue the live flow with the segment. This change has been tested to play correctly in hls.js and native IOS 15 player.

Hope it helps.

Can't make sidecar pts and cue to working as expected

Hi futzu

FIrst i want to say is Merry christmas and happy new year! and scte35-threefive is amazing projects

i am working on splicing segments to insert cue points.
i use simple example from readme file
x9k3 -i segment11.ts -s sidecar.txt

the segment11.ts is a 6 seconds segment with 25fps and GOP of 25 and ffprobe output for the segment with iframe information
Input #0, mpegts, from segment11.ts:
Duration: 00:00:06.07, start: 66.116444, bitrate: 3159 kb/s
Program 1
Stream #0:0[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 99 kb/s
Stream #0:1[0x102]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn`

1:frame,I
26:frame,I
51:frame,I
76:frame,I
101:frame,I
126:frame,I

and inside my sidecar file i have this
68.191111, /DAWAAAAAAAAAP/wBQb+AF2lcAAAYGVbDg==

i want x9k3 to splice this segement into 2 segments with first one 2 seconds and second one 4 seconds
but it always give me 3 segements in 2 seconds duration. any ideas it is possible with x9k3 or am i using tool wrong.

here is the segments and sidecar file
https://github.com/cisiwen/x9k3_help_needed/tree/main

thanks

Winston

replay stops after last segment created

When running x9k3 with "replay" x9k3 stops on last segment and does not anymore update index file, or write new segment .ts files.

If I fully understand --replay it should keep "faking" continous live stream with updated index.m3u8 and (?maybe) new created .ts files. Everything seems OK until last segment.


x9k3 started with:
x9k3 -i longb.ts --replay
No sidecar / scte35 injection or anything similar was used.

Used version:

x9k3 --version
0.1.57

After some time (approxy 150 seconds) last index.m3u8 was created:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:3
#EXT-X-MEDIA-SEQUENCE:27
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXTINF:5.338,
seg27.ts
#EXTINF:5.339,
seg28.ts
#EXTINF:5.339,
seg29.ts
#EXTINF:5.338,
seg30.ts
#EXTINF:5.339,
seg31.ts

This fill remained static after that - no further changes occured to index.m3u8.

This are last moments of x9k3 (I waited until index.m3u8 stopped changing, then after a few seconds I pressed CTRL-C)

deleting ./seg22.ts
./seg28.ts	start: 140.238000	duration: 5.339000	stream diff: 3.712951
deleting ./seg23.ts
./seg29.ts	start: 145.577000	duration: 5.339000	stream diff: 3.65278
deleting ./seg24.ts
./seg30.ts	start: 150.916000	duration: 5.338000	stream diff: 3.595596
deleting ./seg25.ts
./seg31.ts	start: 156.254000	duration: 5.339000	stream diff: 3.549967
deleting ./seg26.ts
^CTraceback (most recent call last):
  File "/home/uporabnik/.local/bin/x9k3", line 5, in <module>
    cli()
  File "/home/uporabnik/.local/lib/python3.8/site-packages/x9k3.py", line 811, in cli
    stuff.run()
  File "/home/uporabnik/.local/lib/python3.8/site-packages/x9k3.py", line 795, in run
    self.loop()
  File "/home/uporabnik/.local/lib/python3.8/site-packages/x9k3.py", line 778, in loop
    if not self._find_start():
  File "/home/uporabnik/.local/lib/python3.8/site-packages/threefive/stream.py", line 154, in _find_start
    one = self._tsdata.read(1)
KeyboardInterrupt


input stream file used was taken from slo.me....

wget https://so.slo.me/longb.ts
ls -l longb.ts
-rw-rw-r-- 1 uporabnik uporabnik 59287492 Oct  4  2021 longb.ts

x9k3 not create .m3u

Hello. I try to use x9k3 segmenter but have no success.

First problem - its not create .m3u manifest file.
OS enviroment - Win7. I try to use Pypy3 or Python3, with admin rights - no success. Any suggestion?
Also its possible to select target directory for m3u and ts segments?

Second - it crash after some time with the same error.
image

Thank you.

Do You Like The Current Output of X9K3? Do You Have A Better Idea?

Say something.

I am open to suggestions.

./seg29.ts	start: 89731.181667	duration: 2.120000
./seg30.ts	start: 89733.301667	duration: 2.120000
./seg31.ts	start: 89735.421667	duration: 2.120000
./seg32.ts	start: 89737.541667	duration: 2.120000
#EXT-X-CUE-OUT:242.0
./seg33.ts	start: 89739.661667	duration: 2.520000
#EXT-X-CUE-OUT-CONT:2.520/242.0
./seg34.ts	start: 89742.181667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:4.640/242.0
./seg35.ts	start: 89744.301667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:6.760/242.0
./seg36.ts	start: 89746.421667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:8.880/242.0
./seg37.ts	start: 89748.541667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:11.000/242.0
./seg38.ts	start: 89750.661667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:13.120/242.0
./seg39.ts	start: 89752.781667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:15.240/242.0
./seg40.ts	start: 89754.901667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:17.360/242.0
./seg41.ts	start: 89757.021667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:19.480/242.0
./seg42.ts	start: 89759.141667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:21.600/242.0
./seg43.ts	start: 89761.261667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:23.720/242.0
./seg44.ts	start: 89763.381667	duration: 2.120000
#EXT-X-CUE-OUT-CONT:25.840/242.0
./seg45.ts	start: 89765.501667	duration: 2.120000
./seg27.ts	start: 89726.941667	duration: 2.120000
./seg28.ts	start: 89729.061667	duration: 2.120000
./seg29.ts	start: 89731.181667	duration: 2.120000
./seg30.ts	start: 89733.301667	duration: 2.120000
./seg31.ts	start: 89735.421667	duration: 2.120000
./seg32.ts	start: 89737.541667	duration: 2.120000
#EXT-X-DATERANGE:ID="1",START-DATE="2022-12-26T21:35:41.398909Z",PLANNED-DURATION=242.0,SCTE35-OUT=0xfc302f00000000000000fff01405000002967fefffe16a1ab87e014c562000010000000a00084355454900000000ebf5a2a7
./seg33.ts	start: 89739.661667	duration: 2.520000
./seg34.ts	start: 89742.181667	duration: 2.120000
./seg35.ts	start: 89744.301667	duration: 2.120000
./seg36.ts	start: 89746.421667	duration: 2.120000
./seg37.ts	start: 89748.541667	duration: 2.120000
./seg38.ts	start: 89750.661667	duration: 2.120000
./seg39.ts	start: 89752.781667	duration: 2.120000

How to pipe multi bitarte livestream content generated from ffmpeg?

I am not sure if the below command is correct or not. My requirement is to insert SCTE35 marker to multi-bitrate livestream content generated from ffmpeg.

ffmpeg -i source.mp4 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -c:v libx264 -crf 22 -c:a aac -ar 48000 -filter:v:0 scale=w=480:h=360 -maxrate:v:0 600k -b:a:0 64k -filter:v:1 scale=w=640:h=480 -maxrate:v:1 900k -b:a:1 128k -filter:v:2 scale=w=1280:h=720 -maxrate:v:2 900k -b:a:2 128k -var_stream_map "v:0,a:0,name:360p v:1,a:1,name:480p v:2,a:2,name:720p" -preset slow -hls_list_size 0 -threads 0 -f hls -hls_playlist_type event -hls_time 3 -hls_flags independent_segments -master_pl_name "master.m3u8" "stream-%v.m3u8" -f mpegts - | x9k3 -s sidecar.txt -l

When I tried with this x9k3 always generating a index.m3u8 file with single bitrate. I want a master file and that should linked to resolution specific child manifest. Example,

master.m3u8
media-1
segment-1.ts
segment-2.ts
segment-n.ts
stream.m3u8
media-2
segment-1.ts
segment-2.ts
segment-n.ts
stream.m3u8
media-3
segment-1.ts
segment-2.ts
segment-n.ts
stream.m3u8

Appreciate your quick response.

Thank you

negative EXTINF values and no X_CUE tags from scte35 mpegts stream

I tried generate m3u8 from test xaa.ts video with scte35 stream inside, but found no x_cue tags in result:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXT-X-X9K3-VERSION:0.1.89
#EXTINF:2.002000,
seg0.ts
#EXTINF:2.002011,
seg1.ts
#EXTINF:2.002000,
...
seg27.ts
#EXTINF:2.002011,
seg28.ts
#EXT-X-ENDLIST

I used bin from Dockerfile with cmd: x9k3 -i /src/xaa.ts --output_dir /results

Also it sometimes inserts wrong negative EXTINF values

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXT-X-X9K3-VERSION:0.1.89
#EXTINF:-0.000011,
seg0.ts
#EXTINF:1.001000,
seg1.ts
#EXTINF:1.001000,
seg2.ts
...

Transmission dropping

I'm using x9K3 to insert SCTE 35 data and I'm using index.m3u8 to transmit but it suddenly stops and doesn't continue transmission

OS: Debian 12
Comand: sudo x9k3 -i /usr/share/ffplayout/public/live/stream.m3u8 -s sidecar.txt -l

stdin input is not working

Hey @futzu I cant tell you how useful your tools are specially this one X9K3.
recently I tried to use standard input stream as input to x9k3 and It is not working,

here is my command :

TS file i downloaded from https://so.slo.me/longb.ts

cat longb.ts | x9k3 -l

output:

No Stream Found.

however with
x9k3 -i longb.ts --live
it is working fine.

I appreciate your response.
Thanks

New: Option to not to use EXT-X-DISCONTINUITY in SCTE35 marks

I've found that the current implementation is always inserting EXT-X-DISCONTINUITY tags in the m3u8 file with the segments when a CUE occurs. When you try to playout the generated playlist, this makes the play to freeze or halt at those points, as the player is trying to resync the play because it is expecting a change in the stream. (this is a guess). I've tested it with hls.js, VLC and native iPhone player with similar results

But if you remove the tags from the playlist, the playout works like a charm with the same segments.

I've not found any documentation that requires that EXT-X-DISCONTINUITY is needed when inserting the CUEs in the playlist. This is needed only when, in the Ad Insertion scenario, the original segments are replaced with a new content that requires to be signalled to the player with the EXT-X-DISCONTINUITY.

I wonder if the usage of EXT-X-DISCONTINUITY could require that the segments generated in those points by the segmenter includes some information that permits to play out that correctly, or just to remove te EXT-X-DISCONTINUITY tags by default.

Problematically its not working

I have tried below command

import x9k3
x9 = x9k3.X9K3('media-1/segment-0.ts')
x9.run()

Its stuck and I could not find any reason behind this.

Could you please suggest if I am doing this in correct way or not?

Thank You

How to create SCTE messages?

I am new to SCTE and need help on creating SCTE messages like below. I need to understand what does these string means and how I can create and use with this package.

  • /DAxAAAAAAAAAP/wFAUAAABdf+/+zHRtOn4Ae6DOAAAAAAAMAQpDVUVJsZ8xMjEqLYemJQ==
  • /DC+AAAAAAAAAP/wBQb+W+M4YgCoAiBDVUVJCW3YD3+fARFEcmF3aW5nRlJJMTE1V0FCQzUBAQIZQ1VFSQlONI9/nwEKVEtSUjE2MDY3QREBAQIxQ1VFSQlw1HB/nwEiUENSMV8xMjEwMjExNDU2V0FCQ0dFTkVSQUxIT1NQSVRBTBABAQI2Q1VFSQlw1HF/3wAAFJlwASJQQ1IxXzEyMTAyMTE0NTZXQUJDR0VORVJBTEhPU1BJVEFMIAEBhgjtJQ==

Note: I have copied these messages from your examples.

I am able to insert them my livestream output using this package piping with ffmpeg.

Any help is highly appriciated.

Thank You

How to merge multiple ts input into one output?

I have 5 ts file such as
test_1.ts
test_2.ts
test_3.ts
test_4.ts

I want to pragmatically parse each ts file but my output should be in one directory and one index.m3u8 should created. It like appending to one file.

Below is the sample code but its not working as currently I don't know how to do this.
import x9k3 for ts in multiple_ts: x9 = x9k3.X9K3(ts) x9.args.output_dir="output/" x9.run()

Thank you

Input with multiple resolutions

I'm trying to put an m3u8 input, with 4 resolutions but x9k3 won't work in this case I have 1080p, 720p, 540p and 360p and master.m3u8 that goes to 4 resolutions
saida 2
saidas

New: --replay should not include -c by default

After adding the -c option to being able to continue a previously generated m3u8, the replay option included this option by default.

IMHO replay is an option that implies the usage of one file to produce a live feed. Not necesarily that means the previous content in the output directory is meaningful.

I would suggest to decouple --replay and -c, so if someone needs it for replay, can add it explicitely

error while coverting udp to hls

est_scte/seg56.ts: start: 1572.740000 end: 1578.740000 duration: 6.000000
deleting test_scte/seg51.ts
test_scte/seg57.ts: start: 1578.740000 end: 1584.740000 duration: 6.000000
deleting test_scte/seg52.ts
test_scte/seg58.ts: start: 1584.740000 end: 1590.740000 duration: 6.000000
deleting test_scte/seg53.ts
test_scte/seg59.ts: start: 1590.740000 end: 1596.740000 duration: 6.000000
deleting test_scte/seg54.ts
test_scte/seg60.ts: start: 1596.740000 end: 1602.740000 duration: 6.000000
deleting test_scte/seg55.ts
test_scte/seg61.ts: start: 1602.740000 end: 1608.740000 duration: 6.000000
deleting test_scte/seg56.ts
test_scte/seg62.ts: start: 1608.740000 end: 1614.740000 duration: 6.000000
deleting test_scte/seg57.ts
Traceback (most recent call last):
File "/usr/local/bin/x9k3", line 5, in
cli()
File "/usr/local/lib/python3.6/site-packages/x9k3.py", line 821, in cli
stuff.run()
File "/usr/local/lib/python3.6/site-packages/x9k3.py", line 383, in run
self.decode()
File "/usr/local/lib/python3.6/site-packages/x9k3.py", line 358, in decode
super().decode()
File "/usr/local/lib/python3.6/site-packages/threefive/stream.py", line 225, in decode
cue = self._parse(pkt)
File "/usr/local/lib/python3.6/site-packages/x9k3.py", line 335, in _parse
super()._parse(pkt)
File "/usr/local/lib/python3.6/site-packages/threefive/stream.py", line 454, in _parse
self._parse_pts(pkt, pid)
File "/usr/local/lib/python3.6/site-packages/threefive/stream.py", line 402, in _parse_pts
if self._pts_flag(payload):
File "/usr/local/lib/python3.6/site-packages/threefive/stream.py", line 345, in _pts_flag
return pay[7] & 0x80
IndexError: index out of range
[root@localhost ~]#

x9k3 not show CUE-OUT=YES/CUE-IN=YES messages.

Hello.
x9k3 not show CUE-OUT=YES/CUE-IN=YES messages, only binary decoded SCTE messages.
In version 1.21 we get string like that -
#EXT-X-SCTE35:CUE="/DAgAAAAAAAAAP/wDwUAAAAAf/9+AAAAAAAAAAAAAD4xJP8=",CUE-OUT=YES
In version 1.23 and latest string always show as
#EXT-X-SCTE35:CUE="/DAgAAAAAAAAAP/wDwUAAAAAf/9+AAAAAAAAAAAAAD4xJP8="
I think its related to discontinuity control in your script.

Check if UDP used to convert to hls is vaild or not

Hi Adrain,
We are using udp feed from playout Engine. i would like to check the if that udp is vaild and can be used with x9k3 for hls creation.

We have tested x9k3 solution for stream coming via elemental and it works fine.whereas udp from playout creates problem while playing.

I am very sure there is problem in udp only. But i tried to meet same parameter tested by ffprobe but issue remains the same.

Any help is Great.

Gaurav

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.