Playing DVB-T subtitles (S_DVBSUB)
Added by Mikael Jepsen over 13 years ago
Hi all,
I'm using Dushmaniacs xbmc-pvr/tvheadend builds, but cannot get subtitles to show.
I've tried vlc, xbmc and mplayer with no luck.
Playing a live stream (h264) in vlc through tvheadend via http works fine - I can switch subs on and off as needed.
Does anyone have success playing tvh-recorded video with S_DVBSUB subtitles?
During my investigation I've come across http://lists.matroska.org/pipermail/matroska-devel/2011-February/003985.html in which Andreas mentions that he intend to change the implementation, but I could not find any traces of such a change in the repo.
Can anybody shed some light on this?
Thanks,
Mikael
Version: HTS Tvheadend 2.12.99~git20110313.1aa214~odk1
mkvmerge -i:
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AAC)
Track ID 3: audio (A_AAC)
Track ID 4: subtitles (S_DVBSUB)
Track ID 5: subtitles (S_DVBSUB)
Replies (15)
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Andreas Smas over 13 years ago
Does even VLC, XBMC or Mplayer support DVBSUB in their code?
I don't think so.
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Mikael Jepsen over 13 years ago
Possibly not - I haven't checked myself to be honest.
<edit 2011-05-12 @ 12:57>
A little research reveals that there is in fact a dvbsub module in vlc (which I guess is being used when playing a live http stream via tvheadend),
but the following post suggests that there is currently no support for a dvbsub stream in mkv: http://forum.videolan.org/viewtopic.php?f=7&t=87479.
I do not know enough about dvbsub to tell if/how this affects playing a S_DVBSUB stream from tvheadend
</edit>
I thought maybe mplayer/FFmpeg as I saw you mentioning a one-line patch to FFmpeg...
What other options do we have then for playing the subs? Showtime?
There is not much use in having them in the mkv if we cannot show them ;-)
Thanks,
Mikael
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Matti Virtala over 13 years ago
I've been struggling with same problem, i.e. lack of S_DVBSUB support on players. In past I have used VDR, then cutting recording with ProjectX and remuxing resulting M2V, MP2 and VobSub format subtitles to MKV which has worked well. ProjectX can read DVB subtitles and export them as VobSub.
Any suggestions how to convert S_DVBSUB subtitles to format ProjectX could open? I could then convert them to VobSub and remux mkv with VobSub bitmap subtitles. I have extracted subtitles using "mkvextract tracks recording.mkv --raw 3:recording.rawsub" command. File that mkvextract dumps looks very similar to DVB subpicture files ProjectX can process ("ES Subpicture 2-bit RLE"). Obvious difference is that file extracted using mkvextract is missing header.
I don't have same recording from TVheadend and VDR to compare, but these are from same channel.
TVheadend S_DVBSUB extracted using mkvmerge:
00000000 0f 10 00 01 00 08 03 d8 00 00 00 a0 01 d4 0f 11 |.......+... .+..| 00000010 00 01 00 10 00 58 01 90 00 2a 48 01 00 00 00 00 |.....X...*H.....| 00000020 00 00 00 00 0f 12 00 01 00 62 01 50 00 41 00 00 |.........b.P.A..| 00000030 00 00 01 41 1d 80 80 91 02 41 1d 80 80 00 03 41 |...A.....A.....A| 00000040 10 80 80 00 04 41 10 80 80 00 05 41 10 80 80 00 |.....A.....A....|
VDR recorded subpicture stream extracted using ProjectX:
00000000 53 50 fa 27 78 2c 00 00 00 00 11 2d 00 00 0f 10 |SPú'x,.....-....| 00000010 00 01 00 08 04 78 00 00 00 3b 01 d2 0f 11 00 01 |.....x...;.+....| 00000020 00 10 00 08 01 90 00 2c 48 01 00 00 00 00 00 00 |.......,H.......| 00000030 00 00 0f 12 00 01 00 62 01 20 00 41 00 00 00 00 |.......b. .A....| 00000040 01 41 1d 80 80 91 02 41 1d 80 80 00 03 41 10 80 |.A.....A.....A..|
Different language subs from same VDR recording:
00000000 53 50 80 ba 77 2c 00 00 00 00 29 cf 00 00 0f 10 |SP.|w,....)+....| 00000010 00 02 00 0e 07 88 00 00 00 3b 01 9a 01 00 00 3b |.........;.....;| 00000020 01 d2 0f 11 00 02 00 10 00 c8 02 08 00 32 48 01 |.+.......+...2H.| 00000030 00 00 00 01 00 00 00 00 0f 11 00 02 00 10 01 d8 |...............+| 00000040 02 0e 00 2c 48 01 00 00 00 00 00 00 00 00 0f 12 |...,H...........| 00000050 00 02 00 62 01 70 00 41 00 00 00 00 01 41 1d 80 |...b.p.A.....A..| 00000060 80 91 02 41 1d 80 80 00 03 41 10 80 80 00 04 41 |...A.....A.....A|
I've tried appending bits from beginning of working file to beginning of demuxed S_DVBSUB, but resulting file is treated as unknown by ProjectX. Didn't really expect it to work either as there's obviously more than just signature ("SP") on those first few bytes.
-MV
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Juha Ruotsalainen over 13 years ago
Same problem here.
Andreas, could you shed some light on the subtitle format in a DVR Matroska file?
I'm planning on writing an app that would convert S_DVBSUB into S_IMAGE/BMP or S_VOBSUB. I would imagine those format would enable subtitles being shown in VLC/XBMC/whatnot. Then again, I may be imagining things...
--
jussi
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Mikko Autio over 13 years ago
This patch works with XBMC: http://pastebin.com/QnvgRqfp
- Mikko
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Juha Ruotsalainen over 13 years ago
Good call, Mikko!
This got me into looking at VLC's codebase: its Matroska demuxer code has a similar place where it checks for various streams and sets an interval VLC codec id based on that. Now, if I only had the time to try out tweaking VLC's code to add S_DVBSUB there...
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Andreas Smas over 13 years ago
Juha Ruotsalainen wrote:
Same problem here.
Andreas, could you shed some light on the subtitle format in a DVR Matroska file?
I'm planning on writing an app that would convert S_DVBSUB into S_IMAGE/BMP or S_VOBSUB. I would imagine those format would enable subtitles being shown in VLC/XBMC/whatnot. Then again, I may be imagining things...
Yes, perhaps it would be even better to have Tvheadend do convertion to VOBSUB itself internally.
Or we could convince the developers of ffmpeg, vlc, etc to add support for DVBSUB in the code.
On all ffmpeg derivates (mplayer, xbmc, etc) it's just a one line patch as seen in this thread
--
jussi
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Dennis Kurten about 13 years ago
I recently started using ppa-pvr and tvheadend and ran into this same problem.
Subtitles (DVBSUB) work when watching live tv (which I suspect is on account of
the special HTSP code in "xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxHTSP.cpp")
but not from recorded matroska files.
Is it possible to manually convert the matroska back to a .ts and then extract the
subtitles with something like ProjectX? Nothing I've tried can make any sense of
the raw data extracted with mkvextract.
Also, I'd like to have a look at the patch Mikko supplied, but the link is down.
- Dennis
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Mikael Jepsen about 13 years ago
For reference, this is the one line patch Mikko supplied:
diff --git a/lib/ffmpeg/libavformat/matroska.c b/lib/ffmpeg/libavformat/matroska index c7e9663..dd22ccd 100644 --- a/lib/ffmpeg/libavformat/matroska.c +++ b/lib/ffmpeg/libavformat/matroska.c @@ -59,6 +59,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"S_ASS" , CODEC_ID_SSA}, {"S_SSA" , CODEC_ID_SSA}, {"S_VOBSUB" , CODEC_ID_DVD_SUBTITLE}, + {"S_DVBSUB" , CODEC_ID_DVB_SUBTITLE}, {"S_HDMV/PGS" , CODEC_ID_HDMV_PGS_SUBTITLE}, {"V_DIRAC" , CODEC_ID_DIRAC},
I considered requesting Dushmaniac to include the patch in xbmc-pvr, but if Andreas could make tvheadend convert it to VOBSUB, I guess that would be better (i.e. less need to convince a lot of other projects to the tvheadend way of putting subs in mkv). I'm not sure from Andreas' response if this is easy to do and/or could be done soon... If not, I guess a xbmc-pvr fix would be nice for the time being.
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Dennis Kurten about 13 years ago
Works like a charm, thank You!
Since it was this easy, I suppose that if ffmpeg only were to patch their code it would
propagate in a clean way to all projects that rely on that library.
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Juha Ruotsalainen about 13 years ago
Hi guys!
Just to make sure: are you using Lars Op dem Kamp's PPA as the source for the XBMC source code, or have you cloned the source code from github?
A side note: I reverted back to using VDR, since my time is limited, and in VDR subtitles work. But before that I recorded a whole bunch of Italian language course programs with tvheadend. I can say, that it's pretty tough trying to watch those without a hint of a subtitle
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Mikael Jepsen about 13 years ago
Dennis Kurten: Yes indeed, however VLC for one does not use ffmpegs libavformat (they use their own demuxer), so they would not be fixed with this.
@Juha: Yes, I'm using Lars Op dem Kamp (aka. Dushmaniac)'s xbmc-pvr repo, but I guess either would be fine just for playing the files.
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Dennis Kurten about 13 years ago
Hello Juha,
I'm using the pvr-ppa branch from Lars' repo on github.
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Hein Rigolo about 13 years ago
tvheadend is one of the first programs to generate S_DVBSUB streams in a mkv, so that is why there is no widespread support for it yet.
Conversion of DVB subtitles to an other format is hard to do because DVB subtitles are not text but bitmaps. So any conversion would require OCR to convert the bitmaps back to text (ASCII). There are programs out there that can do this, but doing it "real-time" while writing the mkv could be difficult. An other drawback is that you loose information. One of the reasons that mkv was chosen as the file format for tvheadend was to contain as much as possible all the details of the program that was recorded, while also being able to add additional meta-data to the file. mkv is the only container format that allows for that at the moment.
Initially it was not possible to store the DVB subtitles into a mkv container. After some discussions with mkv developers on IRC it was decided that the S_DVBSUB stream would be added to the mkv as a separate track. At that time the tvheadend mkv muxer was the only program around that could do this.
Andreas was involved in a discussion with the MKV developers to get a S_DVBSUB correctly implemented in an mkv container (see this mailing list archive: http://lists.matroska.org/pipermail/matroska-devel/2011-February/thread.html#3948 ). Once this has been done, then others programs can use this format also. The VLC developers have also said that they would like to support the S_DVBSUB format.
I know of one other program that can use S_DVBSUB and that is a commercial program called VideoReDo.
Hein
RE: Playing DVB-T subtitles (S_DVBSUB) - Added by Jaime Vazquez over 12 years ago
Can someone help me understand how to apply the above patch to my xbmcbuntu installation? I've never done that before but would like to lean how. Thanks!