[FFmpeg-trac] #6304(undetermined:new): Unable to parse some subtitles with a system ffmpeg compiled HandBrake
FFmpeg
trac at avcodec.org
Tue Apr 11 12:09:10 EEST 2017
#6304: Unable to parse some subtitles with a system ffmpeg compiled HandBrake
-------------------------------------+-------------------------------------
Reporter: slaanesh | Type: defect
Status: new | Priority: minor
Component: | Version:
undetermined | unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug: Different behaviours with subtitles in HandBrake
compiled with libav vs ffmpeg.
As part of my daily usage, I've seen that HandBrake compiled with a system
ffmpeg (unsupported by HandBrake) gives complete feature parity except for
the parsing of UTF-8 subtitles in movie streams. Since Fedora defaults to
ffmpeg, I'm trying to make it work with that.
How to reproduce: Build HandBrake with the following patch applied:
https://github.com/negativo17/HandBrake/blob/master/cf1571f3bf314638a608784f19f80edb736e8144.patch
To allow building HandBrake with a system installed ffmpeg and not its own
bundled copy of libav. Behaviour is then different. I'm sure that there is
something in the way that HandBrake uses libav for parsing the subtitles.
Unfortunately the HandBrake developers are not interested in making the
program work with anything but their libav bundle; so maybe someone here
can shed some light.
Importing a movie which has UTF-8 subtitles in a system ffmpeg compiled
HandBrake, result in the subtitle stream not being available (like if it
wasn't there):
{{{
[10:51:05] dvd: not a dvd - trying as a stream/file instead
Input #0, matroska,webm, from '/home/slaanesh/Downloads/convert/Macross -
Full/1.1 Macross II/Macross II Lovers Again/Macross II Lovers Again.mkv':
Metadata:
title : Macross II: Lovers Again - Part 1
encoder : libebml-0.7.5 & libmatroska-0.7.7
creation_time : 2010-09-01T18:03:39.000000Z
Duration: 02:17:03.90, start: 0.000000, bitrate: 1393 kb/s
Stream #0:0(Macross II: Lovers Again - Part 1): Video: mpeg4 (DX50 /
0x30355844), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 23.98 fps, 23.98 tbr, 1k
tbn, 30k tbc (default)
Metadata:
SUBJECT : www.anime-legion.net
COMPOSER : Nicholi
COPYRIGHT : #Anime-Legion at mIRCX.com
LANGUAGE : Macross II: Lovers Again - Part 1
Stream #0:1(eng): Audio: vorbis, 48000 Hz, stereo, fltp (default)
Stream #0:2(jpn): Audio: vorbis, 48000 Hz, stereo, fltp
Stream #0:3(eng): Subtitle: subrip (default)
[10:51:05] add_ffmpeg_subtitle: unknown subtitle stream type: 0x17808
}}}
Doing the same with a bundled libav compiled HandBrake allows the subtitle
stream to be parsed correctly:
{{{
[10:29:12] dvd: not a dvd - trying as a stream/file instead
Input #0, matroska,webm, from '/home/slaanesh/Downloads/convert/Macross -
Full/1.1 Macross II/Macross II Lovers Again/Macross II Lovers Again.mkv':
Metadata:
title : Macross II: Lovers Again - Part 1
Duration: 02:17:03.89, start: 0.000000, bitrate: N/A
Stream #0:0(Macross II: Lovers Again - Part 1): Video: mpeg4 (Simple
Profile) [DX50 / 0x30355844]
yuv420p, 640x480 [PAR 1:1 DAR 4:3], PAR 1:1 DAR 4:3
23.98 fps, 1k tbn (default)
Metadata:
SUBJECT : www.anime-legion.net
COMPOSER : Nicholi
COPYRIGHT : #Anime-Legion at mIRCX.com
LANGUAGE : Macross II: Lovers Again - Part 1
Stream #0:1(eng): Audio: vorbis
48000 Hz, stereo, fltp (default)
Stream #0:2(jpn): Audio: vorbis
48000 Hz, stereo, fltp
Stream #0:3(eng): Subtitle: srt (default)
}}}
If I convert the video with the system ffmpeg skipping HandBrake the
subtitle stream is manipulated correctly:
{{{
$ ffmpeg -v verbose -i Macross\ II\ Lovers\ Again.mkv -strict experimental
-ac 2 -c:a aac -c:v hevc_nvenc -preset medium output.mkvffmpeg version
3.2.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 6.3.1 (GCC) 20161221 (Red Hat 6.3.1-1)
configuration: --arch=x86_64 --bindir=/usr/bin
--datadir=/usr/share/ffmpeg --disable-debug --disable-static --disable-
stripping --enable-avfilter --enable-avresample --enable-bzlib --enable-
cuda --enable-cuvid --enable-libnpp --enable-doc --enable-fontconfig
--enable-frei0r --enable-gnutls --enable-gpl --enable-iconv --enable-
libass --enable-libbluray --enable-libcdio --enable-libdc1394 --enable-
libebur128 --enable-libfdk-aac --enable-libfreetype --enable-libfribidi
--enable-libgsm --enable-libkvazaar --enable-libmfx --enable-libmp3lame
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264
--enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp
--enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-
libssh --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-
libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp
--enable-libx264 --enable-libx265 --enable-libxcb --enable-libxcb-shm
--enable-libxcb-xfixes --enable-libxcb-shape --enable-libxvid --enable-
libzvbi --enable-lzma --enable-nonfree --enable-openal --enable-opencl
--enable-nvenc --enable-opengl --enable-postproc --enable-pthreads
--enable-sdl2 --enable-shared --enable-version3 --enable-x11grab --enable-
xlib --enable-zlib --extra-cflags='-I/usr/include/nvenc
-I/usr/include/cuda' --incdir=/usr/include/ffmpeg --libdir=/usr/lib64
--mandir=/usr/share/man --optflags='-O2 -g -pipe -Wall -Werror=format-
security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong
--param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat
/redhat-hardened-cc1 -m64 -mtune=generic' --prefix=/usr
--shlibdir=/usr/lib64 --enable-runtime-cpudetect
libavutil 55. 34.101 / 55. 34.101
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.101 / 57. 56.101
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libavresample 3. 1. 0 / 3. 1. 0
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
libpostproc 54. 1.100 / 54. 1.100
Routing option strict to both codec and muxer layer
Input #0, matroska,webm, from 'Macross II Lovers Again.mkv':
Metadata:
title : Macross II: Lovers Again - Part 1
encoder : libebml-0.7.5 & libmatroska-0.7.7
creation_time : 2010-09-01T18:03:39.000000Z
Duration: 02:17:03.90, start: 0.000000, bitrate: 1393 kb/s
Stream #0:0(Macross II: Lovers Again - Part 1): Video: mpeg4, 1
reference frame (DX50 / 0x30355844), yuv420p(left), 640x480 [SAR 1:1 DAR
4:3], 23.98 fps, 23.98 tbr, 1k tbn, 30k tbc (default)
Metadata:
SUBJECT : www.anime-legion.net
COMPOSER : Nicholi
COPYRIGHT : #Anime-Legion at mIRCX.com
LANGUAGE : Macross II: Lovers Again - Part 1
Stream #0:1(eng): Audio: vorbis, 48000 Hz, stereo, fltp (default)
Stream #0:2(jpn): Audio: vorbis, 48000 Hz, stereo, fltp
Stream #0:3(eng): Subtitle: subrip (default)
[graph 0 input from stream 0:0 @ 0x87a740] w:640 h:480 pixfmt:yuv420p
tb:1/1000 fr:13978/583 sar:1/1 sws_param:flags=2
[graph 1 input from stream 0:1 @ 0x8a4520] tb:1/48000 samplefmt:fltp
samplerate:48000 chlayout:0x3
[hevc_nvenc @ 0x8b80e0] Loaded Nvenc version 8.0
[hevc_nvenc @ 0x8b80e0] Nvenc initialized successfully
[hevc_nvenc @ 0x8b80e0] 1 CUDA capable devices found
[hevc_nvenc @ 0x8b80e0] [ GPU #0 - < GeForce GTX 1060 6GB > has Compute SM
6.1 ]
[hevc_nvenc @ 0x8b80e0] supports NVENC
[hevc_nvenc @ 0x8b80e0] Lookahead enabled: depth 0, scenecut enabled,
B-adapt disabled.
Output #0, matroska, to 'output.mkv':
Metadata:
title : Macross II: Lovers Again - Part 1
encoder : Lavf57.56.101
Stream #0:0(Macross II: Lovers Again - Part 1): Video: hevc
(hevc_nvenc) (Main), 1 reference frame, yuv420p(left), 640x480 [SAR 1:1
DAR 4:3], q=-1--1, 2000 kb/s, 23.98 fps, 1k tbn, 23.98 tbc (default)
Metadata:
SUBJECT : www.anime-legion.net
COMPOSER : Nicholi
COPYRIGHT : #Anime-Legion at mIRCX.com
LANGUAGE : Macross II: Lovers Again - Part 1
encoder : Lavc57.64.101 hevc_nvenc
Side data:
cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 4000000
vbv_delay: -1
Stream #0:1(eng): Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz,
stereo, fltp, delay 1024, 128 kb/s (default)
Metadata:
LANGUAGE : eng
encoder : Lavc57.64.101 aac
Stream #0:2(eng): Subtitle: ass (ssa) (default)
Metadata:
LANGUAGE : eng
encoder : Lavc57.64.101 ssa
Stream mapping:
Stream #0:0 -> #0:0 (mpeg4 (native) -> hevc (hevc_nvenc))
Stream #0:1 -> #0:1 (vorbis (native) -> aac (native))
Stream #0:3 -> #0:2 (subrip (srt) -> ass (ssa))
Press [q] to stop, [?] for help
[mpeg4 @ 0x8a8760] Video uses a non-standard and wasteful way to store
B-frames ('packed B-frames'). Consider using the mpeg4_unpack_bframes
bitstream filter without encoding but stream copy to fix it.
No more output streams to write to, finishing.e=02:17:03.15
bitrate=2128.7kbits/s speed=21.7x
frame=197176 fps=519 q=9.0 Lsize= 2140250kB time=02:17:03.90
bitrate=2131.9kbits/s speed=21.7x
video:2006247kB audio:129778kB subtitle:70kB other streams:0kB global
headers:1kB muxing overhead: 0.194519%
Input file #0 (Macross II Lovers Again.mkv):
Input stream #0:0 (video): 197176 packets read (1213717124 bytes);
197176 frames decoded;
Input stream #0:1 (audio): 504330 packets read (107663547 bytes); 504329
frames decoded (394747584 samples);
Input stream #0:2 (audio): 1 packets read (1 bytes);
Input stream #0:3 (subtitle): 1174 packets read (46193 bytes); 1174
frames decoded;
Total: 702681 packets (1321426865 bytes) demuxed
Output file #0 (output.mkv):
Output stream #0:0 (video): 197176 frames encoded; 197176 packets muxed
(2054397078 bytes);
Output stream #0:1 (audio): 385496 frames encoded (394747584 samples);
385497 packets muxed (132892434 bytes);
Output stream #0:2 (subtitle): 1174 frames encoded; 1174 packets muxed
(71835 bytes);
Total: 583847 packets (2187361347 bytes) muxed
[hevc_nvenc @ 0x8b80e0] Nvenc unloaded
[aac @ 0x8b8cc0] Qavg: 593.729
}}}
Again, putting it into the HandBrake with bundled libav:
{{{
[10:53:23] dvd: not a dvd - trying as a stream/file instead
Input #0, matroska,webm, from '/home/slaanesh/Downloads/convert/Macross -
Full/1.1 Macross II/Macross II Lovers Again/output.mkv':
Metadata:
title : Macross II: Lovers Again - Part 1
ENCODER : Lavf57.56.101
Duration: 02:17:03.95, start: 0.000000, bitrate: N/A
Stream #0:0(Macross II: Lovers Again - Part 1): Video: hevc (Main)
yuv420p, tv, 640x480 [PAR 1:1 DAR 4:3], PAR 1:1 DAR 4:3
23.98 fps, 1k tbn (default)
Metadata:
SUBJECT : www.anime-legion.net
COMPOSER : Nicholi
COPYRIGHT : #Anime-Legion at mIRCX.com
ENCODER : Lavc57.64.101 hevc_nvenc
DURATION : 02:17:03.956000000
Stream #0:1(eng): Audio: aac (LC)
48000 Hz, stereo, fltp (default)
Metadata:
ENCODER : Lavc57.64.101 aac
DURATION : 02:17:03.917000000
Stream #0:2(eng): Subtitle: ssa (default)
Metadata:
ENCODER : Lavc57.64.101 ssa
DURATION : 02:13:59.346000000
}}}
But then again, if I import the movie to an HandBrake compiled with a
system ffmpeg, the result is similar and the subtitle stream is not parsed
correctly:
{{{
[11:00:59] dvd: not a dvd - trying as a stream/file instead
Input #0, matroska,webm, from '/home/slaanesh/Downloads/convert/Macross -
Full/1.1 Macross II/Macross II Lovers Again/output.mkv':
Metadata:
title : Macross II: Lovers Again - Part 1
ENCODER : Lavf57.56.101
Duration: 02:17:03.96, start: 0.000000, bitrate: 2131 kb/s
Stream #0:0(Macross II: Lovers Again - Part 1): Video: hevc (Main),
yuv420p(tv, progressive), 640x480 [SAR 1:1 DAR 4:3], 23.98 fps, 23.98 tbr,
1k tbn, 23.98 tbc (default)
Metadata:
SUBJECT : www.anime-legion.net
COMPOSER : Nicholi
COPYRIGHT : #Anime-Legion at mIRCX.com
ENCODER : Lavc57.64.101 hevc_nvenc
DURATION : 02:17:03.956000000
Stream #0:1(eng): Audio: aac (LC), 48000 Hz, stereo, fltp (default)
Metadata:
ENCODER : Lavc57.64.101 aac
DURATION : 02:17:03.917000000
Stream #0:2(eng): Subtitle: ass (default)
Metadata:
ENCODER : Lavc57.64.101 ssa
DURATION : 02:13:59.346000000
[11:00:59] add_ffmpeg_subtitle: unknown subtitle stream type: 0x1780d
}}}
Thanks & regards,
--Simone
PS: I've remove the chapters from above output to reduce a bit the
information pasted.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6304>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list