On Mon, May 7, 2018 at 4:20 PM, Aman Gupta <ffm...@tmm1.net> wrote: > > > On Mon, May 7, 2018 at 4:07 PM, Marton Balint <c...@passwd.hu> wrote: > >> >> >> On Mon, 7 May 2018, Aman Gupta wrote: >> >> >>> >>> On Mon, May 7, 2018 at 12:50 PM, Aman Gupta <ffm...@tmm1.net> wrote: >>> >>> >>> On Sun, May 6, 2018 at 2:05 PM, Marton Balint <c...@passwd.hu> >>> wrote: >>> Inspired by the VideoLAN text decoder and its port to FFmpeg >>> made by Aman >>> Gupta. >>> >>> >>> Thanks for incorporating my changes. >>> >>> I ran some tests, and colors work as expected. Positioning also works >>> well, and is also pretty close to my version. >>> >>> >>> I found that some live streams are not chopping empty lines correctly. I >>> see extra newlines at the end: >>> >>> Dialogue: >>> 0,0:13:21.66,9:59:59.99,Default,,0,0,0,,{\an1}Simson,\hPeter\hHartcher,\hRobyn\hParker >>> \Nand\hBenjamin \N \N \N >>> >>> Here's a sample which shows extra newlines: https://s3.amazonaws >>> .com/tmm1/teletext/capture_live1.mpg >>> >> >> This is kind of intentional, in this case the new lines are kept to >> position the subtitles a bit higher, and not to the very bottom of the >> screen, to keep the rough position of the teletext subtitles. At first I >> used \pos as well, but it only worked once per line for me, so I had to use >> some kind of newline-positioning anyway, and using native vertical >> alignment instead of \pos seemed nicer. (E.g. it allows the user to change >> left/right alignment text margins more easily in the headers or by an >> override). > > > Okay I see. I'm rendering my subtitles with a background so the large > half-empty bounding box looked strange to me. > > >> >> >> >>> It also looks like the "erase page" command is not being processed, >>> which causes stale captions to stay on the screen in some cases. >>> This is especially confusing when part of an old caption remains on one >>> line, but then newer captions appear on another line. >>> >>> Here's a sample that shows lines not being cleared correctly: >>> https://s3.amazonaws.com/tmm1/teletext/simple.mpg >>> >>> >>> With this sample, for instance, my decoder produces: >>> >>> Dialogue: >>> 0,0:00:01.90,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}and >>> this, as you rightly say,\N >>> Dialogue: >>> 0,0:00:01.94,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}and >>> this, as you rightly say,\N{\an8}{\pos(192,231)} {\c&HFFFFFF&}is >>> American.\N >>> Dialogue: 0,0:00:04.86,9:59:59.99,Default,,0,0,0,, >>> Dialogue: >>> 0,0:00:04.94,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,231)}{\c&HFFFFFF&}It's >>> rather nicely made.\N >>> Dialogue: 0,0:00:06.62,9:59:59.99,Default,,0,0,0,, >>> Dialogue: >>> 0,0:00:06.70,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}It's >>> got this fabulous\N >>> Dialogue: >>> 0,0:00:06.74,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}It's >>> got this fabulous\N{\an8}{\pos(192,231)} {\c&HFFFFFF&}cast finial >>> here\N >>> Dialogue: 0,0:00:10.34,9:59:59.99,Default,,0,0,0,, >>> Dialogue: >>> 0,0:00:10.42,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}of >>> a very muscular figure\N >>> Dialogue: >>> 0,0:00:10.46,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}of >>> a very muscular figure\N{\an8}{\pos(192,231)} {\c&HFFFFFF&}pulling this >>> medallion.\N >>> Dialogue: 0,0:00:15.50,9:59:59.99,Default,,0,0,0,, >>> Dialogue: >>> 0,0:00:15.58,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}So >>> it's got strength to it. It's a\N >>> Dialogue: 0,0:00:15.62,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)} >>> {\c&HFFFFFF&}So it's got strength to it. It's >>> a\N{\an8}{\pos(192,231)}{\c&HFFFFFF&}really >>> characterful piece of silver.\N >>> Dialogue: 0,0:00:19.14,9:59:59.99,Default,,0,0,0,, >>> >>> And the decoder in this patch produces: >>> >>> Dialogue: >>> 0,0:00:02.02,9:59:59.99,Default,,0,0,0,,{\an2}and\hthis,\has\hyou\hrightly\hsay, >>> \Nis\hAmerican. \N >>> Dialogue: >>> 0,0:00:05.02,9:59:59.99,Default,,0,0,0,,{\an2}and\hthis,\has\hyou\hrightly\hsay, >>> \NIt's\hrather\hnicely\hmade. \N >>> Dialogue: >>> 0,0:00:06.82,9:59:59.99,Default,,0,0,0,,{\an2}It's\hgot\hthis\hfabulous >>> \Ncast\hfinial\hhere \N >>> Dialogue: >>> 0,0:00:10.54,9:59:59.99,Default,,0,0,0,,{\an2}of\ha\hvery\hmuscular\hfigure >>> \Npulling\hthis\hmedallion. \N >>> Dialogue: >>> 0,0:00:15.70,9:59:59.99,Default,,0,0,0,,{\an2}So\hit's\hgot\hstrength\hto\hit.\hIt's\ha >>> \Nreally\hcharacterful\hpiece\hof\hsilver. \N >>> Dialogue: >>> 0,0:00:19.30,9:59:59.99,Default,,0,0,0,,{\an2}So\hit's\hgot\hstrength\hto\hit.\hIt's\ha >>> \NBut\hmost\himportant\hof\hall, \N >>> >>> At the ~5s mark, the text on the screen should say "It's rather nicely >>> made", but this decoder still displays the line "and this as you rightly >>> say" from the previous sentence. >>> >> >> The mix of different subtitles showing up seems like a libzvbi bug :( ... >> I will try to send a patch to sourceforge hoping it will get picked up and >> integrated to a future release... >> > > I'm curious how much code there is in libzvbi that we're actually? i.e. > How practical would it be to import it into ffmpeg? >
For reference, the patch to fix the issue I described above was submitted by Marton here: https://sourceforge.net/p/zapping/patches/20/ To answer my own question, it would be impractical to import libzvbi as there is quite a lot of code. The file touched by that patch alone is several thousand lines long. Aman > > >> >> Also there is a slight difference in how empty subtitles are forwarded. >> For empty subtitles I always used AVSubtitleRect type AVSUBTITLE_NONE, you >> used AVSUBTITLE_ASS. I prefer AVSUBTITLE_NONE, because with it >> ffmpeg -fix_sub_duration creates a valid ass file without empty subtitles. > > > Ah. Do those show up at all when using `-f ass`? > > Aman > > >> >> >> I also have several other samples which use various features, available >>> at the same URL: >>> >>> capture_formatting1.mpg >>> capture_formatting2.mpg >>> capture_formatting3.mpg >>> capture_live1.mpg >>> capture_live2.mpg >>> capture_notCaptionedMessage.mpg >>> capture_threeLines1.mpg >>> capture_threeLines2.mpg >>> capture_threeLines3.mpg >>> capture_threeLines4.mpg >>> capture_yOffset1.mpg >>> three.ts >>> four.ts >>> >> >> I will have a look at those, thanks for your feedback. >> >> Regards, >> Marton >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> > > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel