[FFmpeg-trac] #1572(undetermined:new): HLS input destroys DTS/PTS information
FFmpeg
trac at avcodec.org
Thu Feb 28 12:57:44 CET 2013
#1572: HLS input destroys DTS/PTS information
-------------------------------------+-------------------------------------
Reporter: crtmpserver | Owner:
Type: defect | Status: new
Priority: normal | Component:
Version: unspecified | undetermined
Keywords: hls | Resolution:
Blocking: | Blocked By:
Analyzed by developer: 0 | Reproduced by developer: 0
-------------------------------------+-------------------------------------
Description changed by cehoyos:
Old description:
> 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 fly 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
> 1. I removed the audio track for simplicity
> 1. 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
> }}}
New description:
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
1. I removed the audio track for simplicity
1. 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
}}}
--
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/1572#comment:5>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list