-
Notifications
You must be signed in to change notification settings - Fork 510
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Live stream with subtitles (WebVTT) #685
Comments
There are a few changes @jakubvojacek did to make it work. @jakubvojacek are you interested in sending a pull request to merge your changes to master? It can be put under a configurable flag. |
Hello, we didn't do anything on the packager side apart from what is listed and described by you in #380. The main issues we're still fighting with, are in packager - like that it needs the secondish heartbeats, single timing issue in input can break the whole packaging process (one timestamp that is much more in future for whatever reason - it should disregard subs (or put to queue of some kinds) that are far in the future compared to the video etc). Thank you |
So essentially at the moment there is no way to make live subtitles work in any reliable way (DASH or HLS)? |
Hi everyone. I did successfully modified shaka packager in order to be able to read webvtt input from an UDP stream.
With ""webvtt" as explicit input format (no auto-detection), and changing the header check from error to warning (no process ending), shaka packager works fine with an UDP live webvtt text as input. I plan to prepare a PR tomorrow bringing those changes. In the meantime, I let this comment here to wake up the issue and give some context for the future PR. |
An updated version of PR #1027 That previous PR was done using 2021 code, and there were many changes in the codebase from there, so a rebase was needed and also some minor tweak here and there. But it's the same code, just reimplemented on a newer codebase. If you want to take a look at this in action, after building shaka packager with this PR's code included, try this commands in 3 different simultaneous bash sessions: 1. Video UDP input: `ffmpeg -f lavfi -re -i "testsrc=s=320x240:r=30,format=yuv420p" -c:v h264 -sc_threshold 0 -g 30 -keyint_min 30 -r 30 -a53cc 1 -b:v 150k -preset ultrafast -r 30 -f mpegts "udp://127.0.0.1:10000?pkt_size=1316"` 2. WebVTT UDP input: `for sec in $(seq 0 9999) ; do printf "%02d:%02d.000 --> %02d:%02d.000\ntest second ${sec}\n\n" "$(( ${sec} / 60 ))" "$(( ${sec} % 60 ))" "$(( (${sec} + 1) / 60 ))" "$(( (${sec} + 1) % 60 ))" ; sleep 1 ; done > /dev/udp/127.0.0.1/12345` 3. shaka packager command line: `timeout 60 path/to/build/packager/packager 'in=udp://127.0.0.1:10000?timeout=8000000,stream_selector=0,init_segment=240_init.m4s,segment_template=240_$Number%09d$.m4s,bandwidth=150000' 'in=udp://127.0.0.1:12345?timeout=8000000,stream_selector=0,input_format=webvtt,format=webvtt+mp4,init_segment=text_init.m4s,segment_template=text_$Number%09d$.m4s,language=eng,dash_roles=subtitle' --mpd_output ./manifest.mpd --segment_duration 3.2 --suggested_presentation_delay 3.2 --min_buffer_time 3.2 --minimum_update_period 3.2 --time_shift_buffer_depth 60 --preserved_segments_outside_live_window 1 --default_language=eng --dump_stream_info 2>&1` Note the added `input_format=webvtt` to the shaka packager command's second selector. That's new from this PR. If you don't use that, shaka's format autodetection will not detect the webvtt format from the input, as explained in #685 (comment). Try the command without it if you want to. Fixes #685 Fixes #1017 --------- Co-authored-by: Daniel Cantarín <canta@canta.com.ar>
System info
Operating System: macOS Mojave 10.14.6
Shaka Packager Version: 2.3.0
Issue and steps to reproduce the problem
Source is UDP live stream, I intend to inject live subtitles. All subtitles present in the source vtt (timed into the future) show up correctly in the player. If I want to add a new subtitle I add it to the source vtt file and save it. Even if the cue is in the future, it will be ignored by packager and not show up in the stream. So far nothing new, so I read through #380 and produced a python script that adds empty cues with 100ms duration (continuously), then once in a while a real cue with text is added. Again nothing shows up.
Packager Command:
packager-osx 'in=udp://192.168.0.239:40000,skip_encryption=1,stream=video,segment_template=z_video_$Number$.ts,playlist_name=z_h264.m3u8' 'in=input_text.vtt,stream=text,segment_template=z_text_$Number$.vtt,playlist_name=z_text.m3u8,hls_group_id=text,hls_name=de' --hls_master_playlist_output z_h264_master.m3u --hls_playlist_type LIVE
What is the expected result?
Subtitles should be visible in the output.
What happens instead?
Subtitles are not visible in the output.
Has there been any progress on this, is there any alternative way to get 'dynamically' growing vtt files as source to work? Or other way to get live subtitles injected?
The text was updated successfully, but these errors were encountered: