Opened 4 years ago

Closed 3 years ago

#4783 closed defect (fixed)

Converting vtt-subtitles to srt results in overlap.

Reported by: CoRoNe Owned by:
Priority: normal Component: undetermined
Version: git-master Keywords: webvtt srt sub
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Summary of the bug:
Upon converting vtt-subtitles to srt, I noticed the timecodes to have been slightly changed with overlap as a result. I can't believe this is intended. I do notice the ',' instead of the '.', but why are the timecodes recalculated?

vtt-input excerpt:

6
00:00:15.011 --> 00:00:19.017
en de Belgische publicist Johan Op de Beeck over Napoleon en de slag bij Waterloo.

7
00:00:19.017 --> 00:00:22.006
Dit is Buitenhof op zondag 14 juni.

srt-output excerpt:

6
00:00:15,011 --> 00:00:19,021
en de Belgische publicist Johan Op de Beeck over Napoleon en de slag bij Waterloo.

7
00:00:19,017 --> 00:00:22,007
Dit is Buitenhof op zondag 14 juni.

How to reproduce:

ffmpeg.exe -v 9 -loglevel 99 -sub_charenc CP1252 -i "http://e.omroep.nl/tt888/VPWON
_1232772" "Buitenhof (14062015).srt"
ffmpeg version N-74462-g737aa90 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.3 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisy
nth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-ico
nv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-li
bdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --ena
ble-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-
amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroeding
er --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enab
le-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --en
able-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 
--enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
  libavutil      54. 30.100 / 54. 30.100
  libavcodec     56. 57.100 / 56. 57.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 34.100 /  5. 34.100
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'
.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) wit
h argument '99'.
Reading option '-sub_charenc' ... matched as AVOption 'sub_charenc' with argument '
CP1252'.
Reading option '-i' ... matched as input file with argument 'http://e.omroep.nl/tt8
88/VPWON_1232772'.
Reading option '..\Buitenhof (14062015)2.srt' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Successfully parsed a group of options.
Parsing a group of options: input file http://e.omroep.nl/tt888/VPWON_1232772.
Successfully parsed a group of options.
Opening an input file: http://e.omroep.nl/tt888/VPWON_1232772.
[http @ 0322a6a0] request: GET /tt888/VPWON_1232772 HTTP/1.1
User-Agent: Lavf/56.40.101
Accept: */*
Range: bytes=0-
Connection: close
Host: e.omroep.nl
Icy-MetaData: 1


[http @ 0322a6a0] header='HTTP/1.1 200 OK'
[http @ 0322a6a0] http_code=200
[http @ 0322a6a0] header='Date: Tue, 18 Aug 2015 14:10:51 GMT'
[http @ 0322a6a0] header='Server: Apache'
[http @ 0322a6a0] header='Cache-Control: private, max-age=300, must-revalidate'
[http @ 0322a6a0] header='Expires: Tue, 18 Aug 2015 14:15:51 GMT'
[http @ 0322a6a0] header='Last-Modified: Tue, 18 Aug 2015 14:10:51 GMT'
[http @ 0322a6a0] header='Access-Control-Allow-Origin: *'
[http @ 0322a6a0] header='Connection: close'
[http @ 0322a6a0] header='Transfer-Encoding: chunked'
[http @ 0322a6a0] header='Content-Type: text/vtt'
[http @ 0322a6a0] header=''
Chunked encoding data size: 61989'
Probing webvtt score:100 size:2048
[webvtt @ 03229e00] Format webvtt probed with size=2048 and score=100
Chunked encoding data size: 0'
[webvtt @ 03229e00] Before avformat_find_stream_info() pos: 61989 bytes read:61989 
seeks:0
[webvtt @ 03229e00] All info found
[webvtt @ 03229e00] 0: start_time: -9223372036854.775 duration: -9223372036854.775
[webvtt @ 03229e00] stream: start_time: -9223372036854.775 duration: -9223372036854
.775 bitrate=0 kb/s
[webvtt @ 03229e00] After avformat_find_stream_info() pos: 61989 bytes read:61989 s
eeks:0 frames:0
Input #0, webvtt, from 'http://e.omroep.nl/tt888/VPWON_1232772':
  Duration: N/A, bitrate: N/A
    Stream #0:0, 0, 1/1000: Subtitle: webvtt
Successfully opened the file.
Parsing a group of options: output file Buitenhof (14062015).srt.
Successfully parsed a group of options.
Opening an output file: Buitenhof (14062015).srt.
Successfully opened the file.
Output #0, srt, to 'Buitenhof (14062015).srt':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0, 0, 1/1000: Subtitle: subrip (srt)
    Metadata:
      encoder         : Lavc56.57.100 srt
Stream mapping:
  Stream #0:0 -> #0:0 (webvtt (native) -> subrip (srt))
Press [q] to stop, [?] for help
No more output streams to write to, finishing.
size=      61kB time=00:53:41.00 bitrate=   0.2kbits/s
video:0kB audio:0kB subtitle:34kB other streams:0kB global headers:0kB muxing overh
ead: 79.587402%
Input file #0 (http://e.omroep.nl/tt888/VPWON_1232772):
  Input stream #0:0 (subtitle): 766 packets read (46661 bytes); 766 frames decoded;
  Total: 766 packets (46661 bytes) demuxed
Output file #0 (Buitenhof (14062015).srt):
  Output stream #0:0 (subtitle): 766 frames encoded; 766 packets muxed (34513 bytes
);
  Total: 766 packets (34513 bytes) muxed
766 frames successfully decoded, 0 decoding errors
[AVIOContext @ 03257720] Statistics: 0 seeks, 766 writeouts
[AVIOContext @ 03234500] Statistics: 61989 bytes read, 0 seeks

Or you can use "Buitenhof (14062015).vtt" in the attachment as input.

Attachments (1)

Buitenhof (14062015).vtt (60.5 KB) - added by CoRoNe 4 years ago.

Download all attachments as: .zip

Change History (6)

Changed 4 years ago by CoRoNe

comment:1 Changed 4 years ago by cehoyos

  • Keywords webvtt added; vtt overlap removed
  • Reproduced by developer set
  • Status changed from new to open
  • Version changed from unspecified to git-master

Works fine with ass afaict.

comment:2 Changed 4 years ago by cehoyos

  • Keywords sub added

comment:3 Changed 3 years ago by eelco

This is a rounding bug that happens because all subtitles are passed through the ASS code, which has lower precision. I fixed this a while ago for SRT in our FFmpeg fork (see https://github.com/tupil/FFmpeg/commit/f0e98dd3b1e21abe1a83f8ac0d85f8fbf3ae47e7). I will supply a patch to ffmpeg-devel soon.

Last edited 3 years ago by eelco (previous) (diff)

comment:4 Changed 3 years ago by ubitux

This is a long standing design issue. A patchset was sent a few minutes ago on the ml to address the issue. The patch fixing that exact issue can be find here: http://ffmpeg.org/pipermail/ffmpeg-devel/2016-February/189830.html

comment:5 Changed 3 years ago by ubitux

  • Resolution set to fixed
  • Status changed from open to closed
Note: See TracTickets for help on using tickets.