Opened 13 years ago
Closed 13 years ago
#2989 closed defect (fixed)
broken remuxing DVB subtitles from MPEG-TS to MPEG-TS
| Reported by: | Clément Bœsch | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | avformat |
| Version: | git-master | Keywords: | mpegts dvbsub |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | no | |
| Analyzed by developer: | no |
Description
[~/src/ffmpeg]☭ ./ffmpeg -v verbose -i ~/samples/stream.TS -c copy -map 0:0 -map 0:5 -y test.ts
ffmpeg version N-56570-gf8e8932 Copyright (c) 2000-2013 the FFmpeg developers
built on Sep 22 2013 20:54:45 with gcc 4.8.1 (GCC) 20130725 (prerelease)
configuration: --enable-gpl --enable-version3 --enable-fontconfig --enable-libfreetype --enable-libmp3lame --enable-libvorbis --enable-libxvid --enable-libx264 --enable-libvpx --enable-libtheora --enable-x11grab --enable-libopenjpeg --enable-libass --enable-libmodplug --enable-libv4l2 --cc=colorgcc --samples=/home/ubitux/fate-samples --prefix=/tmp/ffinstall --disable-runtime-cpudetect --enable-libcelt --enable-libopencv --enable-frei0r --enable-libcaca --enable-libiec61883 --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-libopus --enable-libpulse --enable-libspeex --enable-libquvi --assert-level=2 --enable-libzmq --enable-libschroedinger --cpu=native
libavutil 52. 46.100 / 52. 46.100
libavcodec 55. 33.100 / 55. 33.100
libavformat 55. 18.102 / 55. 18.102
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 87.100 / 3. 87.100
libswscale 2. 5.100 / 2. 5.100
libswresample 0. 17.103 / 0. 17.103
libpostproc 52. 3.100 / 52. 3.100
[mpegts @ 0x2c65400] parser not found for codec dvb_teletext, packets or times may be invalid.
Last message repeated 1 times
[mpeg2video @ 0x2c7f5e0] Invalid frame dimensions 0x0.
Last message repeated 10 times
[mpegts @ 0x2c65400] max_analyze_duration 5000000 reached at 5000000 microseconds
[NULL @ 0x2c855c0] start time is not set in estimate_timings_from_pts
[mpegts @ 0x2c65400] PES packet size mismatch
Last message repeated 3 times
Input #0, mpegts, from '/home/ubitux/samples/stream.TS':
Duration: 00:01:44.00, start: 31021.622067, bitrate: 5535 kb/s
Program 1537
Metadata:
service_name : TF1
service_provider: SMR6
Stream #0:0[0x78]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv), 720x576 [SAR 64:45 DAR 16:9], max. 15000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x82](fra): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 192 kb/s
Stream #0:2[0x83](eng): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 128 kb/s
Stream #0:3[0x85](qad): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 128 kb/s
Stream #0:4[0x8c](fra): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
Stream #0:5[0x96](fra): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)
Stream #0:6[0x97](eng): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
[mpegts @ 0x2c8a520] muxrate VBR, pcr every 2 pkts, sdt every 200, pat/pmt every 40 pkts
Output #0, mpegts, to 'test.ts':
Metadata:
encoder : Lavf55.18.102
Stream #0:0: Video: mpeg2video ([2][0][0][0] / 0x0002), yuv420p, 720x576 [SAR 64:45 DAR 16:9], q=2-31, max. 15000 kb/s, 25 fps, 90k tbn, 25 tbc
Stream #0:1(fra): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:5 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mpegts @ 0x2c65400] Correcting start time by 200000
No more output streams to write to, finishing.
frame= 2582 fps=0.0 q=-1.0 Lsize= 64164kB time=00:01:43.72 bitrate=5067.8kbits/s
video:59246kB audio:0kB subtitle:116 global headers:0kB muxing overhead 8.089452%
The mapped DVB subtitle stream is visible in VLC, mplayer, mpv, with the original file. After remuxing, the subtitles are not visible anymore (likely nothing is remuxed in the destination stream).
Sample is available here: http://lucy.pkh.me/samples/fr-tv-dvd-sub-and-teletext.ts (~69M)
Change History (6)
comment:1 by , 13 years ago
| Keywords: | dvbsub added; dvb_subtitles removed |
|---|
comment:2 by , 13 years ago
follow-up: 4 comment:3 by , 13 years ago
Hi,
I found the root of the problem and going to fix it but I need FFmpeg expert advice in choosing a correct way to do it.
Description of the issue:
DVB subtitles have the following format in MPEG-TS stream:
data_identifier 8bit - always set to 0x20
subtitle_stream_id 8bit - always set to 0x00
subtitling_segments - actual payload
end_of_PES_data_field_makrer 8bit - always set to 0xFF
MPEG-TS demuxer throws everything except subtitling_segments and produces AVPacket.data in FORMAT 1:
subtitling_segments - actual payload
DVB subtitles decoder also expects AVPacket.data in FORMAT 1.
DVB subtitles encoder produces AVPacket.data in FORMAT 2:
subtitle_stream_id 8bit - always set to 0x00
subtitling_segments - actual payload
end_of_PES_data_field_makrer 8bit - always set to 0xFF
MPEG-TS muxer expects AVPacket.data to be in FORMAT 2 also.
So we have problem: from one hand demuxed and decoder work with AVPacket.data in FORMAT 1, from other hand encoder and muxer work with AVPacket data in FORMAT 2.
That is why when you copy subtitles directly from demuxer into muxer you get incorrect subtitles stream.
I see three possible ways of fixing the issue:
1) Use FORMAT 1 everywhere (i.e. fix DVB subtitles encoder and all muxers that support DVB subtitles to use FORMAT 1)
2) Use FORMAT 2 everywhere (i.e. fix DVB subtitles decoder and all demuxers that produce DVB subtitles to user FORMAT 2)
3) Use some other format for AVPacket.data with DVB subtitles and fix all the components to work with it.
Can you please advice the correct way of solving the issue?
Regards,
Andriy Lysnevych
comment:4 by , 13 years ago
Replying to mrlika:
[...]
Can you please advice the correct way of solving the issue?
I think someone is looking at this issue, you might want to follow this thread: http://ffmpeg.org/pipermail/ffmpeg-devel/2013-December/152174.html and eventually participate.
comment:5 by , 13 years ago
This ticket should be fixed with https://github.com/FFmpeg/FFmpeg/commit/c917cde9cc52ad1ca89926a617f847bc9861d5a0 commit.
Also this bug is duplicate of third problem from ticket #2024.
comment:6 by , 13 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Fixed by Serhii Marchuk in c917cde9



I just realized this might be a duplicate of #2024.