Opened 12 years ago
Closed 12 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 )
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:
- 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
- I removed the audio track for simplicity
- 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 , 12 years ago
comment:2 by , 12 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 , 12 years ago
Keywords: | hls added |
---|
comment:4 by , 12 years ago
Description: | modified (diff) |
---|
comment:5 by , 12 years ago
Description: | modified (diff) |
---|
comment:6 by , 12 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 , 12 years ago
Component: | undetermined → avformat |
---|---|
Reproduced by developer: | set |
Resolution: | → fixed |
Status: | new → closed |
Version: | unspecified → git-master |
Fixed by Michael in 6f61823.
sorry about "fly". It should be FLV. The spellchecker ...