Closed caption?

58 views
Skip to first unread message

ᏧᏐᎸᏛ Tsusolvd /Chris Griffith

unread,
Apr 24, 2026, 2:17:54 PM (3 days ago) Apr 24
to QLab
Hello!
Can QLab 5 play a video displaying the CC file as closed caption? I see no documentation about this!

micpool

unread,
Apr 24, 2026, 5:05:13 PM (3 days ago) Apr 24
to QLab
No,

One method is to extract the captions to an .srt file and then use the techniques discussed here


to import the .srt file into QLab as text cues

Mic

Andy Dolph

unread,
Apr 24, 2026, 5:14:44 PM (3 days ago) Apr 24
to ql...@googlegroups.com, QLab
Or use video editing software to make a version with the captions “burned in” to the video.  Ie part of the image.

On Apr 24, 2026, at 2:17 PM, ᏧᏐᎸᏛ Tsusolvd /Chris Griffith <ch...@zpuppets.org> wrote:


Hello!
Can QLab 5 play a video displaying the CC file as closed caption? I see no documentation about this!

--
Contact support anytime: sup...@figure53.com
User Group Code of Conduct: https://qlab.app/code-of-conduct/
 
Instagram: https://www.instagram.com/Figure53
TikTok: https://www.tiktok.com/@QLab.app
Bluesky: https://bsky.app/profile/qlab.app
---
You received this message because you are subscribed to the Google Groups "QLab" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qlab+uns...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/qlab/af824f78-607e-4870-ba07-0791eb4c3469n%40googlegroups.com.

Z puppets

unread,
Apr 24, 2026, 5:21:32 PM (3 days ago) Apr 24
to ql...@googlegroups.com
Yeah, that’s what I decided to do (burn them in). Seems like it wouldn’t be that hard to allow that feature, and would save a lot of time.

Thanks for confirming!

On Apr 24, 2026, at 4:14 PM, Andy Dolph <acd...@gmail.com> wrote:


You received this message because you are subscribed to a topic in the Google Groups "QLab" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/qlab/0is6q7HDBbk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to qlab+uns...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/qlab/A367B68A-1082-42E6-BADC-7DEBC48E09E7%40gmail.com.

Sam Kusnetz

unread,
Apr 25, 2026, 7:44:36 AM (2 days ago) Apr 25
to ql...@googlegroups.com
On Apr 24, 2026 at 5:21:09 PM, Z puppets <ch...@zpuppets.org> wrote:
Seems like it wouldn’t be that hard to allow that feature, and would save a lot of time.

We’ll take note of this request!

Some things which seem easy are in fact hard, although some things which seem hard are actually easy.

Ultimately, though, whether something is hard or easy is not really a big part of our development process. We have many, many hundreds of things on The List, and we can only focus on a fixed number of things at once.

Hearing about what’s important to folks who use QLab is valuable!

Best
Sam

Sam Kusnetz (he/him) | Figure 53


Alexander R. Taylor

unread,
Apr 25, 2026, 7:49:22 AM (2 days ago) Apr 25
to ql...@googlegroups.com, ql...@googlegroups.com
Great thought.  What if a text cue's target could be another video cue (for captions) or an external .txt file.  That could be updated dynamically from any source.

Alexander

Sent from my iPhone!

On Apr 25, 2026, at 7:44 AM, Sam Kusnetz <s...@figure53.com> wrote:


--
Contact support anytime: sup...@figure53.com
User Group Code of Conduct: https://qlab.app/code-of-conduct/
 
Instagram: https://www.instagram.com/Figure53
TikTok: https://www.tiktok.com/@QLab.app
Bluesky: https://bsky.app/profile/qlab.app
---
You received this message because you are subscribed to the Google Groups "QLab" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qlab+uns...@googlegroups.com.

Paul

unread,
2:54 PM (11 minutes ago) 2:54 PM
to QLab
You can use this script to make Text cues from a SRT file, putting the timing info as pre-wait and  duration in a Timeline group .

To extract subtitles in SRT format from a video file with subtitle stream use
ffmpeg -v error -i movie_with_subtitles.mp4 -map 0:s:0 subtitles.srt
Here is the script

-- make Text cues from subtitle SRT file

-- before running this configure the Stage and set up the Template for Text cues to format as you need (Settings-Templates-Text)


-- a SRT file contains 4 lines per subtitle: the sub title number; the start and end time; the text of the subtitle and a blank line

-- a typical entry might look like this

-- 2

-- 00:00:03,000 --> 00:00:09,000

-- Once Upon a Time

-- This would display 'Once Upon a Time' from 3 seconds to 9 seconds


-- note to extract subtitle file from video file use

-- ffmpeg -v error -i movie_with_subtitles.mp4 -map 0:s:0 subtitles.srt



-- prompt the user to choose a SRT subtitle file

set myfile to POSIX path of (choose file with prompt "Select subtitle file" of type "srt" default location (path to documents folder))


-- reformat the srt file to make it easier to parse in Applescript, using sed 

--  this edit adds # to beginning of number only lines; changes separater in the time fields from : and , to - hyphen and

--  removes the extra > chacter in the time field

--  note on MacOS need -E flag to sed to use subsitute/modern regex

set myArray to every paragraph of (do shell script "cat " & myfile & " | sed -E \"/^[0-9]+$/s/([0-9]+)/# \\1/; /-->/s/[:,]/-/g;s/-->/--/\" ")



set textCueNumprefix to "st"

set nl to linefeed


set results to {}

set errors to {}

tell application id "com.figure53.QLab.5" to tell front workspace

-- create a Timeline group to put the text cues in

make type "Group"

set groupCue to last item of (selected as list)

set mode of groupCue to timeline

set q name of groupCue to "Subtitles "

set notes of groupCue to "imported from " & myfile & " on " & ((current date) as string)

-- want the scope of the error message to be the whole repeat loop

global errMesg

set errMesg to ""

-- now process each line of the re-formatted file

repeat with myline in myArray

if myline begins with "#" then

-- this is the subtitle number (we use for the text cue number

set subNum to first word of myline

-- in the reformatted srt file the -- in indicates the timing line

else if myline contains "--" then

-- this is the start and end times of the subtitle, which we use as pre wait in the timeline group

set AppleScript's text item delimiters to "-"

set timeItems to every text item of myline

try

-- calculate the start and end time for the subtitle based on the hrs, mins, secs time fields (milliseconds are ignored)

set startTime to (item 1 of timeItems) * 60 * 60 + (item 2 of timeItems) * 60 + (item 3 of timeItems)

set endTime to (item 6 of timeItems) * 60 * 60 + (item 7 of timeItems) * 60 + (item 8 of timeItems)

on error

set errMesg to "error with time formatting " & myline & " check srt file " & subNum

display notification errMesg with title "Subtitle timing format error"

end try

else if length of myline is 0 then

-- blank line is the record delimeter in srt file, now we have the info to make the text cue

make type "Text"

set textCue to last item of (selected as list)

set text of textCue to subText

-- if you don't want cue numbers, comment out this line

set q number of textCue to textCueNumprefix & subNum

-- put the text cue in the Timeline group and set the pre wait and duration

move textCue to end of groupCue

set pre wait of textCue to startTime

set duration of textCue to (endTime - startTime)

-- check for error and set error message to Notes of cue and colour the cue appropiately

if length of errMesg > 0 then

set notes of textCue to errMesg

set q color of textCue to "Red"

set end of errors to errMesg

else

set end of results to "#" & subNum & space & subText as string

end if

set errMesg to ""

else

-- otherwise the line is the subtitle text itself

-- TODO need to check if long subtitles might be on more than 1 line in the srt file ?

set subText to myline

end if

end repeat

-- tell the user the results

set AppleScript's text item delimiters to linefeed

display dialog (results as text) & nl & (length of errors) & " Errors" & nl & (errors as text) with title "Finished. added " & (length of results) & " subtitles"

end tell




Reply all
Reply to author
Forward
0 new messages