[QUESTION] How do you save DVD closed captions with position data? #503

Closed
opened 2026-01-29 16:45:30 +00:00 by claunia · 9 comments
Owner

Originally created by @cgarz on GitHub (Sep 18, 2019).

OS: Linux (Archlinux)
Version: 0.88 (git bc3d729e30a751feb9b854a54c085f0e81a99134)

When extracting closed captions (EIA-608) from a DVD everything works fine but they do not display in the correct positions like they do when played from the DVD.

I have tried with ASS and SSA which should have the ability to position the subtitles but they are just placed at the bottom like SRT.

Does anyone know how to accomplish this?

Originally created by @cgarz on GitHub (Sep 18, 2019). OS: Linux (Archlinux) Version: 0.88 (git bc3d729e30a751feb9b854a54c085f0e81a99134) When extracting closed captions (EIA-608) from a DVD everything works fine but they do not display in the correct positions like they do when played from the DVD. I have tried with ASS and SSA which should have the ability to position the subtitles but they are just placed at the bottom like SRT. Does anyone know how to accomplish this?
claunia added the difficulty: medium label 2026-01-29 16:45:30 +00:00
Author
Owner

@cfsmp3 commented on GitHub (Sep 18, 2019):

The format g608 accurately shows the screen positioning. May or may not be useful to you though.

@cfsmp3 commented on GitHub (Sep 18, 2019): The format g608 accurately shows the screen positioning. May or may not be useful to you though.
Author
Owner

@cgarz commented on GitHub (Sep 18, 2019):

Thanks I've tried that now and looking at it in a text editor it definitely works to preserve the position data.
However I am unable to use it as a subtitle in mpv.
I am also unable to find any information about it via Google. Let alone a player or tool that can read or convert it.

Is there any way to convert this to SSA or some other position capable format?

@cgarz commented on GitHub (Sep 18, 2019): Thanks I've tried that now and looking at it in a text editor it definitely works to preserve the position data. However I am unable to use it as a subtitle in mpv. I am also unable to find any information about it via Google. Let alone a player or tool that can read or convert it. Is there any way to convert this to SSA or some other position capable format?
Author
Owner

@cfsmp3 commented on GitHub (Sep 21, 2019):

You could create a quick converter - text file to text file is quite
easy. This is a format we invented for a specific user that needed to
have access to the 608 grid, which is what g608 gives you, but
definitely unsupported by any other tool or player, so if it contains
what you need it's up to you to take it to the next step I'm afraid.

On Wed, Sep 18, 2019 at 12:43 PM cgarz notifications@github.com wrote:

Thanks I've tried that now and looking at it in a text editor it definietly works to preserve the position data.
However I am unable to use it as a subtitle in mpv.
I am also unable to find any information about it via Google. Let alone a player or tool that can read or convert it.

Is there any way to convert this to SSA or some other position capable format?


You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

@cfsmp3 commented on GitHub (Sep 21, 2019): You could create a quick converter - text file to text file is quite easy. This is a format we invented for a specific user that needed to have access to the 608 grid, which is what g608 gives you, but definitely unsupported by any other tool or player, so if it contains what you need it's up to you to take it to the next step I'm afraid. On Wed, Sep 18, 2019 at 12:43 PM cgarz <notifications@github.com> wrote: > > Thanks I've tried that now and looking at it in a text editor it definietly works to preserve the position data. > However I am unable to use it as a subtitle in mpv. > I am also unable to find any information about it via Google. Let alone a player or tool that can read or convert it. > > Is there any way to convert this to SSA or some other position capable format? > > — > You are receiving this because you commented. > Reply to this email directly, view it on GitHub, or mute the thread.
Author
Owner

@cgarz commented on GitHub (Sep 21, 2019):

I was considering writing a quick python script but after a lot of searching I was able to find a solution with ffmpeg.
Looking at the ASS file it spits out It would have taken me quite a while to get it working nicely.

If anyone is interested the command was as follows:
[...] | ffmpeg -f lavfi -i 'movie=pipe\\:0[out0+subcc]' -map s subs.ass
stdin is from dvd_copy.
For a file instead of a pipe you can change pipe\\:0 to the filename.

My only problem then was I couldn't work out how to change the style of ffmpegs output and didn't want to use a GUI editor so I found pysubs2 and used it like so:
python -c "import pysubs2; s=pysubs2.load('input.ass'); s.styles['Default'].borderstyle=1; s.styles['Default'].outline=2; s.save('output.ass')"

This solves my issue but it would still be great to have ccextractor support something playable with position data.

@cgarz commented on GitHub (Sep 21, 2019): I was considering writing a quick python script but after a lot of searching I was able to find a solution with ffmpeg. Looking at the ASS file it spits out It would have taken me quite a while to get it working nicely. If anyone is interested the command was as follows: `[...] | ffmpeg -f lavfi -i 'movie=pipe\\:0[out0+subcc]' -map s subs.ass` stdin is from [dvd_copy](https://github.com/beandog/dvd_info). For a file instead of a pipe you can change `pipe\\:0` to the filename. My only problem then was I couldn't work out how to change the style of ffmpegs output and didn't want to use a GUI editor so I found [pysubs2](https://github.com/tkarabela/pysubs2) and used it like so: `python -c "import pysubs2; s=pysubs2.load('input.ass'); s.styles['Default'].borderstyle=1; s.styles['Default'].outline=2; s.save('output.ass')"` This solves my issue but it would still be great to have ccextractor support something playable with position data.
Author
Owner

@cgarz commented on GitHub (May 19, 2021):

I've had a chance to try that now. Playback of scc in mpv works and matches the embedded CC's style exactly which is fantastic! Many thanks!
Also thanks for linking up all these related issues, they were an interesting read.

@cgarz commented on GitHub (May 19, 2021): I've had a chance to try that now. Playback of scc in mpv works and matches the embedded CC's style exactly which is fantastic! Many thanks! Also thanks for linking up all these related issues, they were an interesting read.
Author
Owner

@cgarz commented on GitHub (May 28, 2025):

Alec from Technology Connections reminded me of this today in his video.

Does anyone know what was linked up in that now deleted comment? Why was it even deleted?
@vikramcs You still about?

@cgarz commented on GitHub (May 28, 2025): Alec from Technology Connections reminded me of this today in [his video](https://www.youtube.com/watch?v=OSCOQ6vnLwU). Does anyone know what was linked up in that now deleted comment? Why was it even deleted? @vikramcs You still about?
Author
Owner

@yukichigai commented on GitHub (Aug 1, 2025):

I too was reminded of this issue by that same video. I'm curious if the missing info would simplify this process.

As it is the SCC format definitely works as an initial extraction format for conversion to more commonly supported formats while preserving the positioning information. Unfortunately the current GUI doesn't offer that as a selection in the output format dropdown, so it has to be done via the CLI. A little cumbersome but doable.

@yukichigai commented on GitHub (Aug 1, 2025): I too was reminded of this issue by that same video. I'm curious if the missing info would simplify this process. As it is the SCC format definitely works as an initial extraction format for conversion to more commonly supported formats while preserving the positioning information. Unfortunately the current GUI doesn't offer that as a selection in the output format dropdown, so it has to be done via the CLI. A little cumbersome but doable.
Author
Owner

@yukichigai commented on GitHub (Dec 6, 2025):

In case anyone else is still looking into this, I have created a Perl script which converts SCC and G608 to SSA, ASS, and a few other formats that preserve positioning. It's here on GitHub under the name yyC2Swp. Ideally I would like to get this functionality added to CCExtractor's SSA/ASS output directly, but in the meantime there's another option for people who are using players that don't have SCC support.

@yukichigai commented on GitHub (Dec 6, 2025): In case anyone else is still looking into this, I have created a Perl script which converts SCC and G608 to SSA, ASS, and a few other formats that preserve positioning. It's here on GitHub under the name yyC2Swp. Ideally I would like to get this functionality added to CCExtractor's SSA/ASS output directly, but in the meantime there's another option for people who are using players that don't have SCC support.
Author
Owner

@cfsmp3 commented on GitHub (Dec 26, 2025):

This question has been answered through the discussion above:

  • Use --out=scc for SCC output which preserves positioning and is playable in mpv and other players
  • Use --out=g608 for the raw 608 grid format (requires conversion)
  • @yukichigai's yyC2Swp script can convert SCC/G608 to SSA/ASS with positioning

Native positioned ASS/SSA output is tracked as a feature request in #1726, and we're planning to implement this soon.

Closing as answered - please reopen if you have follow-up questions.

@cfsmp3 commented on GitHub (Dec 26, 2025): This question has been answered through the discussion above: - Use `--out=scc` for SCC output which preserves positioning and is playable in mpv and other players - Use `--out=g608` for the raw 608 grid format (requires conversion) - @yukichigai's [yyC2Swp](https://github.com/yukichigai/yyC2Swp) script can convert SCC/G608 to SSA/ASS with positioning Native positioned ASS/SSA output is tracked as a feature request in #1726, and we're planning to implement this soon. Closing as answered - please reopen if you have follow-up questions.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/ccextractor#503