[FFmpeg-devel] [PATCH 2/2] avcodec/libzvbi-teletextdec: formatted ass output
Aman Gupta
ffmpeg at tmm1.net
Tue May 8 02:20:54 EEST 2018
On Mon, May 7, 2018 at 4:07 PM, Marton Balint <cus at passwd.hu> wrote:
>
>
> On Mon, 7 May 2018, Aman Gupta wrote:
>
>
>>
>> On Mon, May 7, 2018 at 12:50 PM, Aman Gupta <ffmpeg at tmm1.net> wrote:
>>
>>
>> On Sun, May 6, 2018 at 2:05 PM, Marton Balint <cus at 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?
>
> 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 at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
More information about the ffmpeg-devel
mailing list