[FFmpeg-trac] #10203(avformat:new): ASS encoder inserts null character into middle of output

FFmpeg trac at avcodec.org
Fri Feb 17 23:42:17 EET 2023


#10203: ASS encoder inserts null character into middle of output
-------------------------------------+-------------------------------------
             Reporter:  Tim Angus    |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:  avformat     |                  Version:
                                     |  unspecified
             Keywords:  ass assenc   |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 Some matroska files embed ASS format subtitles. The header for said
 subtitles include the header for the subtitle stream in the "codec private
 data" section. It's not clear whether the last byte of this data is
 supposed to be 0, i.e. a null terminator for the string data. Among other
 tools, older versions of Handbrake do include the null terminator and
 there are many files out in the wild created using Handbrake. Using ffmpeg
 to extract subtitles for such a file, this header is copied directly to
 the output file, including the null terminator, if it was present. This
 results in a file in which there is a null terminator after the header,
 but preceeding the actual content of the subtitle file. Obviously this is
 not correct.

 As a data point, of the ~600 mkvs I have locally, 22 of them have ASS
 subtitles, and of them 20 include the null terminator, so it doesn't
 appear to be a rare phenomenon.

 As another data point, the tool mkvextract from mkvtoolnix avoids the
 ambiguity by first assuming that the source buffer is *not* null
 terminated, and then manually adding a (possibly second) null terminator.
 The buffer is then interpreted as a null terminated string and processed
 that way.
 (https://gitlab.com/mbunkus/mkvtoolnix/-/blob/main/src/extract/xtr_textsubs.cpp#L117)

 A small test file that exhibits the problem may be found here:
 https://0x0.st/oFTT.mkv

 Patch available here, that essentially replicates how mkvtoolnix does
 things: http://ffmpeg.org/pipermail/ffmpeg-devel/2023-January/306017.html

 How to reproduce:
 {{{
 % ffmpeg -y -i oFTT.mkv -copyts -an -vn -c:s copy out.ass
 }}}

 Use xxd or a text viewer that shows special characters, and observe the
 '\0' between the end of the [V4+ Styles] section and the start of the
 [Events] section.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10203>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list