Opened 12 years ago

Closed 11 years ago

#1572 closed defect (fixed)

HLS input destroys DTS/PTS information

Reported by: C++ RTMP Server Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: hls
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description (last modified by Carl Eugen Hoyos)

When using an HLS as input, ffmpeg does not preserve the DTS timestamps which are usually present whenever B-frames are present. For simplicity, I chosen flv output because is very easy to eye-ball the resulted file in a hex editor and determine if a file has or has not dts timestamps.

How to reproduce:

method 1 (DTS timestamps are destroyed/absent)

% ffmpeg -i http://rtmpd.com/assets/11/test.m3u8 -an -vcodec copy /tmp/a.flv

method 2 (DTS timestamps are preserved/present)

% ffmpeg -i http://rtmpd.com/assets/11/all.ts -an -vcodec copy /tmp/a.flv

Observations:

  1. all.ts input file is nothing more nothing less than all the chunks concatenated from test.m3u8. Basically, identical content. Logically speaking, both methods should generate proper DTS timestamps (I don't expect them to be identical, but at least present). Why? because both methods are in the end falling back on mpegts demuxer. I think the problem is somewhere in libavformat/hls.c
  2. I removed the audio track for simplicity
  3. ffplay will playback just fine both resulted files (flv files). However, flash player - the primary consumer of those files - will choke on the one with bogus DTS. And it makes sense, because the file is not adhering to the FLV specs.

My ffmpeg version is:

ffmpeg version 0.11.1.git
built on Jul 24 2012 04:23:34 with llvm-gcc 4.2.1 (LLVM build 2336.9.00)
configuration: --enable-libx264 --enable-libfaac --enable-gpl --enable-nonfree --enable-libmp3lame --enable-shared --disable-filter=mp --prefix=/Users/shiretu/work/ffmpeg_bin
libavutil      51. 65.100 / 51. 65.100
libavcodec     54. 44.100 / 54. 44.100
libavformat    54. 20.100 / 54. 20.100
libavdevice    54.  2.100 / 54.  2.100
libavfilter     3.  3.100 /  3.  3.100
libswscale      2.  1.100 /  2.  1.100
libswresample   0. 15.100 /  0. 15.100
libpostproc    52.  0.100 / 52.  0.100

Change History (7)

comment:1 by C++ RTMP Server, 12 years ago

sorry about "fly". It should be FLV. The spellchecker ...

comment:2 by Michael Niedermayer, 11 years ago

testing current git master, both flv files generated contain some frames with dts != pts. Does this problem still occur? and if so, please show an example of bad dts values. Note you can easily see them, with -fdebug ts -debug_ts

comment:3 by Carl Eugen Hoyos, 11 years ago

Keywords: hls added

comment:4 by Carl Eugen Hoyos, 11 years ago

Description: modified (diff)

comment:5 by Carl Eugen Hoyos, 11 years ago

Description: modified (diff)

comment:6 by C++ RTMP Server, 11 years ago

I believe this was fixed a good while ago. Just that the ticket wasn't closed at the fix-time.

Best regards,
Andrei

comment:7 by Carl Eugen Hoyos, 11 years ago

Component: undeterminedavformat
Reproduced by developer: set
Resolution: fixed
Status: newclosed
Version: unspecifiedgit-master

Fixed by Michael in 6f61823.

Note: See TracTickets for help on using tickets.