diff mbox

[FFmpeg-devel] avformat/segment: fix the duration error of use output_ts_offset

Message ID CADxeRwmq+DuBxFz1Cxa=1gGNEBqHtXqM5nMu-taXA7xKeOSPMQ@mail.gmail.com
State Superseded
Headers show

Commit Message

Steven Liu Sept. 9, 2016, 3:14 a.m. UTC
This patch can merge with 1da00be009aa74400042bf470b9a5ffbd82a1c5e
i have checked this modify:

./ffmpeg -i ~/facebook.mp4 -c copy -f segment -segment_time 2
-output_ts_offset 80 -segment_list output-test.m3u8 -v debug
output-test-%03d.ts

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:10
#EXTINF:4.120000,
output-test-000.ts
#EXTINF:7.840000,
output-test-001.ts
#EXTINF:4.200000,
output-test-002.ts
#EXTINF:2.920000,
output-test-003.ts
#EXTINF:1.840000,
output-test-004.ts
#EXTINF:2.240000,
output-test-005.ts
#EXTINF:2.000000,
output-test-006.ts
#EXTINF:3.560000,


[root@localhost linux]# ffmpeg -i output-test.m3u8
ffmpeg version N-80917-ga1a240b Copyright (c) 2000-2016 the FFmpeg
developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
  configuration: --prefix=/usr/ --libdir=/usr/lib64 --enable-libx264
--enable-libfaac --enable-gpl --enable-nonfree
  libavutil      55. 28.100 / 55. 28.100
  libavcodec     57. 48.102 / 57. 48.102
  libavformat    57. 41.100 / 57. 41.100
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 47.100 /  6. 47.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Input #0, hls,applehttp, from 'output-test.m3u8':
  Duration: 00:03:21.04, start: 81.400000, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p,
720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, 5.1(side),
fltp, 384 kb/s
At least one output file must be specified



[root@localhost linux]# ffmpeg -i output-test-000.ts -i output-test-001.ts
ffmpeg version N-80917-ga1a240b Copyright (c) 2000-2016 the FFmpeg
developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
  configuration: --prefix=/usr/ --libdir=/usr/lib64 --enable-libx264
--enable-libfaac --enable-gpl --enable-nonfree
  libavutil      55. 28.100 / 55. 28.100
  libavcodec     57. 48.102 / 57. 48.102
  libavformat    57. 41.100 / 57. 41.100
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 47.100 /  6. 47.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Input #0, mpegts, from 'output-test-000.ts':
  Duration: 00:00:04.12, start: 81.400000, bitrate: 1299 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B),
yuv420p, 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x101](und): Audio: ac3 ([129][0][0][0] / 0x0081), 48000
Hz, 5.1(side), fltp, 384 kb/s
Input #1, mpegts, from 'output-test-001.ts':
  Duration: 00:00:07.90, start: 85.464000, bitrate: 1679 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #1:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B),
yuv420p, 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #1:1[0x101](und): Audio: ac3 ([129][0][0][0] / 0x0081), 48000
Hz, 5.1(side), fltp, 384 kb/s
At least one output file must be specified
[root@localhost linux]#




this commit is used for fix commit 1da00be009aa74400042bf470b9a5ffbd82a1c5e
because the option initial_offset will deprecated

Signed-off-by: Steven Liu <lingjiujianke@gmail.com>
---
 libavformat/segment.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

AV_TIME_BASE_Q);
+        seg->cur_entry.end_time = seg->cur_entry.start_time;
     }

     av_log(s, AV_LOG_DEBUG, "stream:%d start_pts_time:%s pts:%s
pts_time:%s dts:%s dts_time:%s",
--
1.7.1

Comments

Steven Liu Sept. 9, 2016, 7:33 a.m. UTC | #1
2016-09-09 15:28 GMT+08:00 Aman Gupta <aman@tmm1.net>:

> I tried your patch and TARGETDURATION is fixed, but it is still creating
> some segments which are only 0.2s instead of 2s.
>
> Aman
>
> On Thu, Sep 8, 2016 at 8:14 PM, Steven Liu <lingjiujianke@gmail.com>
> wrote:
>
>> This patch can merge with 1da00be009aa74400042bf470b9a5ffbd82a1c5e
>> i have checked this modify:
>>
>> ./ffmpeg -i ~/facebook.mp4 -c copy -f segment -segment_time 2
>> -output_ts_offset 80 -segment_list output-test.m3u8 -v debug
>> output-test-%03d.ts
>>
>> #EXTM3U
>> #EXT-X-VERSION:3
>> #EXT-X-MEDIA-SEQUENCE:0
>> #EXT-X-ALLOW-CACHE:YES
>> #EXT-X-TARGETDURATION:10
>> #EXTINF:4.120000,
>> output-test-000.ts
>> #EXTINF:7.840000,
>> output-test-001.ts
>> #EXTINF:4.200000,
>> output-test-002.ts
>> #EXTINF:2.920000,
>> output-test-003.ts
>> #EXTINF:1.840000,
>> output-test-004.ts
>> #EXTINF:2.240000,
>> output-test-005.ts
>> #EXTINF:2.000000,
>> output-test-006.ts
>> #EXTINF:3.560000,
>>
>>
>> [root@localhost linux]# ffmpeg -i output-test.m3u8
>> ffmpeg version N-80917-ga1a240b Copyright (c) 2000-2016 the FFmpeg
>> developers
>>   built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
>>   configuration: --prefix=/usr/ --libdir=/usr/lib64 --enable-libx264
>> --enable-libfaac --enable-gpl --enable-nonfree
>>   libavutil      55. 28.100 / 55. 28.100
>>   libavcodec     57. 48.102 / 57. 48.102
>>   libavformat    57. 41.100 / 57. 41.100
>>   libavdevice    57.  0.102 / 57.  0.102
>>   libavfilter     6. 47.100 /  6. 47.100
>>   libswscale      4.  1.100 /  4.  1.100
>>   libswresample   2.  1.100 /  2.  1.100
>>   libpostproc    54.  0.100 / 54.  0.100
>> Input #0, hls,applehttp, from 'output-test.m3u8':
>>   Duration: 00:03:21.04, start: 81.400000, bitrate: 0 kb/s
>>   Program 0
>>     Metadata:
>>       variant_bitrate : 0
>>     Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p,
>> 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
>>     Stream #0:1: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz,
>> 5.1(side), fltp, 384 kb/s
>> At least one output file must be specified
>>
>>
>>
>> [root@localhost linux]# ffmpeg -i output-test-000.ts -i
>> output-test-001.ts
>> ffmpeg version N-80917-ga1a240b Copyright (c) 2000-2016 the FFmpeg
>> developers
>>   built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
>>   configuration: --prefix=/usr/ --libdir=/usr/lib64 --enable-libx264
>> --enable-libfaac --enable-gpl --enable-nonfree
>>   libavutil      55. 28.100 / 55. 28.100
>>   libavcodec     57. 48.102 / 57. 48.102
>>   libavformat    57. 41.100 / 57. 41.100
>>   libavdevice    57.  0.102 / 57.  0.102
>>   libavfilter     6. 47.100 /  6. 47.100
>>   libswscale      4.  1.100 /  4.  1.100
>>   libswresample   2.  1.100 /  2.  1.100
>>   libpostproc    54.  0.100 / 54.  0.100
>> Input #0, mpegts, from 'output-test-000.ts':
>>   Duration: 00:00:04.12, start: 81.400000, bitrate: 1299 kb/s
>>   Program 1
>>     Metadata:
>>       service_name    : Service01
>>       service_provider: FFmpeg
>>     Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B),
>> yuv420p, 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
>>     Stream #0:1[0x101](und): Audio: ac3 ([129][0][0][0] / 0x0081), 48000
>> Hz, 5.1(side), fltp, 384 kb/s
>> Input #1, mpegts, from 'output-test-001.ts':
>>   Duration: 00:00:07.90, start: 85.464000, bitrate: 1679 kb/s
>>   Program 1
>>     Metadata:
>>       service_name    : Service01
>>       service_provider: FFmpeg
>>     Stream #1:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B),
>> yuv420p, 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
>>     Stream #1:1[0x101](und): Audio: ac3 ([129][0][0][0] / 0x0081), 48000
>> Hz, 5.1(side), fltp, 384 kb/s
>> At least one output file must be specified
>> [root@localhost linux]#
>>
>>
>>
>>
>> this commit is used for fix commit 1da00be009aa74400042bf470b9a5f
>> fbd82a1c5e
>> because the option initial_offset will deprecated
>>
>> Signed-off-by: Steven Liu <lingjiujianke@gmail.com>
>> ---
>>  libavformat/segment.c |    5 +++++
>>  1 files changed, 5 insertions(+), 0 deletions(-)
>>
>> diff --git a/libavformat/segment.c b/libavformat/segment.c
>> index 33a5cf0..252f8b1 100644
>> --- a/libavformat/segment.c
>> +++ b/libavformat/segment.c
>> @@ -885,6 +885,11 @@ calc_times:
>>          av_log(s, AV_LOG_VERBOSE, "segment:'%s' starts with packet
>> stream:%d pts:%s pts_time:%s frame:%d\n",
>>                 seg->avf->filename, pkt->stream_index,
>>                 av_ts2str(pkt->pts), av_ts2timestr(pkt->pts,
>> &st->time_base), seg->frame_count);
>> +        seg->cut_pending = 0;
>> +        seg->cur_entry.index = seg->segment_idx + seg->segment_idx_wrap
>> * seg->segment_idx_wrap_nb;
>> +        seg->cur_entry.start_time = (double)pkt->pts *
>> av_q2d(st->time_base);
>> +        seg->cur_entry.start_pts = av_rescale_q(pkt->pts, st->time_base,
>> AV_TIME_BASE_Q);
>> +        seg->cur_entry.end_time = seg->cur_entry.start_time;
>>      }
>>
>>      av_log(s, AV_LOG_DEBUG, "stream:%d start_pts_time:%s pts:%s
>> pts_time:%s dts:%s dts_time:%s",
>> --
>> 1.7.1
>>
>
> ok, let me try your command line
Steven Liu Sept. 9, 2016, 8:10 a.m. UTC | #2
2016-09-09 15:33 GMT+08:00 Steven Liu <lingjiujianke@gmail.com>:

>
>
> 2016-09-09 15:28 GMT+08:00 Aman Gupta <aman@tmm1.net>:
>
>> I tried your patch and TARGETDURATION is fixed, but it is still creating
>> some segments which are only 0.2s instead of 2s.
>>
>> Aman
>>
>> On Thu, Sep 8, 2016 at 8:14 PM, Steven Liu <lingjiujianke@gmail.com>
>> wrote:
>>
>>> This patch can merge with 1da00be009aa74400042bf470b9a5ffbd82a1c5e
>>> i have checked this modify:
>>>
>>> ./ffmpeg -i ~/facebook.mp4 -c copy -f segment -segment_time 2
>>> -output_ts_offset 80 -segment_list output-test.m3u8 -v debug
>>> output-test-%03d.ts
>>>
>>> #EXTM3U
>>> #EXT-X-VERSION:3
>>> #EXT-X-MEDIA-SEQUENCE:0
>>> #EXT-X-ALLOW-CACHE:YES
>>> #EXT-X-TARGETDURATION:10
>>> #EXTINF:4.120000,
>>> output-test-000.ts
>>> #EXTINF:7.840000,
>>> output-test-001.ts
>>> #EXTINF:4.200000,
>>> output-test-002.ts
>>> #EXTINF:2.920000,
>>> output-test-003.ts
>>> #EXTINF:1.840000,
>>> output-test-004.ts
>>> #EXTINF:2.240000,
>>> output-test-005.ts
>>> #EXTINF:2.000000,
>>> output-test-006.ts
>>> #EXTINF:3.560000,
>>>
>>>
>>> [root@localhost linux]# ffmpeg -i output-test.m3u8
>>> ffmpeg version N-80917-ga1a240b Copyright (c) 2000-2016 the FFmpeg
>>> developers
>>>   built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
>>>   configuration: --prefix=/usr/ --libdir=/usr/lib64 --enable-libx264
>>> --enable-libfaac --enable-gpl --enable-nonfree
>>>   libavutil      55. 28.100 / 55. 28.100
>>>   libavcodec     57. 48.102 / 57. 48.102
>>>   libavformat    57. 41.100 / 57. 41.100
>>>   libavdevice    57.  0.102 / 57.  0.102
>>>   libavfilter     6. 47.100 /  6. 47.100
>>>   libswscale      4.  1.100 /  4.  1.100
>>>   libswresample   2.  1.100 /  2.  1.100
>>>   libpostproc    54.  0.100 / 54.  0.100
>>> Input #0, hls,applehttp, from 'output-test.m3u8':
>>>   Duration: 00:03:21.04, start: 81.400000, bitrate: 0 kb/s
>>>   Program 0
>>>     Metadata:
>>>       variant_bitrate : 0
>>>     Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p,
>>> 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
>>>     Stream #0:1: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz,
>>> 5.1(side), fltp, 384 kb/s
>>> At least one output file must be specified
>>>
>>>
>>>
>>> [root@localhost linux]# ffmpeg -i output-test-000.ts -i
>>> output-test-001.ts
>>> ffmpeg version N-80917-ga1a240b Copyright (c) 2000-2016 the FFmpeg
>>> developers
>>>   built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
>>>   configuration: --prefix=/usr/ --libdir=/usr/lib64 --enable-libx264
>>> --enable-libfaac --enable-gpl --enable-nonfree
>>>   libavutil      55. 28.100 / 55. 28.100
>>>   libavcodec     57. 48.102 / 57. 48.102
>>>   libavformat    57. 41.100 / 57. 41.100
>>>   libavdevice    57.  0.102 / 57.  0.102
>>>   libavfilter     6. 47.100 /  6. 47.100
>>>   libswscale      4.  1.100 /  4.  1.100
>>>   libswresample   2.  1.100 /  2.  1.100
>>>   libpostproc    54.  0.100 / 54.  0.100
>>> Input #0, mpegts, from 'output-test-000.ts':
>>>   Duration: 00:00:04.12, start: 81.400000, bitrate: 1299 kb/s
>>>   Program 1
>>>     Metadata:
>>>       service_name    : Service01
>>>       service_provider: FFmpeg
>>>     Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B),
>>> yuv420p, 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
>>>     Stream #0:1[0x101](und): Audio: ac3 ([129][0][0][0] / 0x0081), 48000
>>> Hz, 5.1(side), fltp, 384 kb/s
>>> Input #1, mpegts, from 'output-test-001.ts':
>>>   Duration: 00:00:07.90, start: 85.464000, bitrate: 1679 kb/s
>>>   Program 1
>>>     Metadata:
>>>       service_name    : Service01
>>>       service_provider: FFmpeg
>>>     Stream #1:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B),
>>> yuv420p, 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
>>>     Stream #1:1[0x101](und): Audio: ac3 ([129][0][0][0] / 0x0081), 48000
>>> Hz, 5.1(side), fltp, 384 kb/s
>>> At least one output file must be specified
>>> [root@localhost linux]#
>>>
>>>
>>>
>>>
>>> this commit is used for fix commit 1da00be009aa74400042bf470b9a5f
>>> fbd82a1c5e
>>> because the option initial_offset will deprecated
>>>
>>> Signed-off-by: Steven Liu <lingjiujianke@gmail.com>
>>> ---
>>>  libavformat/segment.c |    5 +++++
>>>  1 files changed, 5 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/libavformat/segment.c b/libavformat/segment.c
>>> index 33a5cf0..252f8b1 100644
>>> --- a/libavformat/segment.c
>>> +++ b/libavformat/segment.c
>>> @@ -885,6 +885,11 @@ calc_times:
>>>          av_log(s, AV_LOG_VERBOSE, "segment:'%s' starts with packet
>>> stream:%d pts:%s pts_time:%s frame:%d\n",
>>>                 seg->avf->filename, pkt->stream_index,
>>>                 av_ts2str(pkt->pts), av_ts2timestr(pkt->pts,
>>> &st->time_base), seg->frame_count);
>>> +        seg->cut_pending = 0;
>>> +        seg->cur_entry.index = seg->segment_idx + seg->segment_idx_wrap
>>> * seg->segment_idx_wrap_nb;
>>> +        seg->cur_entry.start_time = (double)pkt->pts *
>>> av_q2d(st->time_base);
>>> +        seg->cur_entry.start_pts = av_rescale_q(pkt->pts,
>>> st->time_base, AV_TIME_BASE_Q);
>>> +        seg->cur_entry.end_time = seg->cur_entry.start_time;
>>>      }
>>>
>>>      av_log(s, AV_LOG_DEBUG, "stream:%d start_pts_time:%s pts:%s
>>> pts_time:%s dts:%s dts_time:%s",
>>> --
>>> 1.7.1
>>>
>>
>> ok, let me try your command line
>
>
......
it's reproduced when encode by default(video:mpeg2video  audio: mp2)
Steven Liu Sept. 9, 2016, 8:33 a.m. UTC | #3
2016-09-09 16:10 GMT+08:00 Steven Liu <lingjiujianke@gmail.com>:

>
>
> 2016-09-09 15:33 GMT+08:00 Steven Liu <lingjiujianke@gmail.com>:
>
>>
>>
>> 2016-09-09 15:28 GMT+08:00 Aman Gupta <aman@tmm1.net>:
>>
>>> I tried your patch and TARGETDURATION is fixed, but it is still creating
>>> some segments which are only 0.2s instead of 2s.
>>>
>>> Aman
>>>
>>> On Thu, Sep 8, 2016 at 8:14 PM, Steven Liu <lingjiujianke@gmail.com>
>>> wrote:
>>>
>>>> This patch can merge with 1da00be009aa74400042bf470b9a5ffbd82a1c5e
>>>> i have checked this modify:
>>>>
>>>> ./ffmpeg -i ~/facebook.mp4 -c copy -f segment -segment_time 2
>>>> -output_ts_offset 80 -segment_list output-test.m3u8 -v debug
>>>> output-test-%03d.ts
>>>>
>>>> #EXTM3U
>>>> #EXT-X-VERSION:3
>>>> #EXT-X-MEDIA-SEQUENCE:0
>>>> #EXT-X-ALLOW-CACHE:YES
>>>> #EXT-X-TARGETDURATION:10
>>>> #EXTINF:4.120000,
>>>> output-test-000.ts
>>>> #EXTINF:7.840000,
>>>> output-test-001.ts
>>>> #EXTINF:4.200000,
>>>> output-test-002.ts
>>>> #EXTINF:2.920000,
>>>> output-test-003.ts
>>>> #EXTINF:1.840000,
>>>> output-test-004.ts
>>>> #EXTINF:2.240000,
>>>> output-test-005.ts
>>>> #EXTINF:2.000000,
>>>> output-test-006.ts
>>>> #EXTINF:3.560000,
>>>>
>>>>
>>>> [root@localhost linux]# ffmpeg -i output-test.m3u8
>>>> ffmpeg version N-80917-ga1a240b Copyright (c) 2000-2016 the FFmpeg
>>>> developers
>>>>   built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
>>>>   configuration: --prefix=/usr/ --libdir=/usr/lib64 --enable-libx264
>>>> --enable-libfaac --enable-gpl --enable-nonfree
>>>>   libavutil      55. 28.100 / 55. 28.100
>>>>   libavcodec     57. 48.102 / 57. 48.102
>>>>   libavformat    57. 41.100 / 57. 41.100
>>>>   libavdevice    57.  0.102 / 57.  0.102
>>>>   libavfilter     6. 47.100 /  6. 47.100
>>>>   libswscale      4.  1.100 /  4.  1.100
>>>>   libswresample   2.  1.100 /  2.  1.100
>>>>   libpostproc    54.  0.100 / 54.  0.100
>>>> Input #0, hls,applehttp, from 'output-test.m3u8':
>>>>   Duration: 00:03:21.04, start: 81.400000, bitrate: 0 kb/s
>>>>   Program 0
>>>>     Metadata:
>>>>       variant_bitrate : 0
>>>>     Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p,
>>>> 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
>>>>     Stream #0:1: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz,
>>>> 5.1(side), fltp, 384 kb/s
>>>> At least one output file must be specified
>>>>
>>>>
>>>>
>>>> [root@localhost linux]# ffmpeg -i output-test-000.ts -i
>>>> output-test-001.ts
>>>> ffmpeg version N-80917-ga1a240b Copyright (c) 2000-2016 the FFmpeg
>>>> developers
>>>>   built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
>>>>   configuration: --prefix=/usr/ --libdir=/usr/lib64 --enable-libx264
>>>> --enable-libfaac --enable-gpl --enable-nonfree
>>>>   libavutil      55. 28.100 / 55. 28.100
>>>>   libavcodec     57. 48.102 / 57. 48.102
>>>>   libavformat    57. 41.100 / 57. 41.100
>>>>   libavdevice    57.  0.102 / 57.  0.102
>>>>   libavfilter     6. 47.100 /  6. 47.100
>>>>   libswscale      4.  1.100 /  4.  1.100
>>>>   libswresample   2.  1.100 /  2.  1.100
>>>>   libpostproc    54.  0.100 / 54.  0.100
>>>> Input #0, mpegts, from 'output-test-000.ts':
>>>>   Duration: 00:00:04.12, start: 81.400000, bitrate: 1299 kb/s
>>>>   Program 1
>>>>     Metadata:
>>>>       service_name    : Service01
>>>>       service_provider: FFmpeg
>>>>     Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B),
>>>> yuv420p, 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
>>>>     Stream #0:1[0x101](und): Audio: ac3 ([129][0][0][0] / 0x0081),
>>>> 48000 Hz, 5.1(side), fltp, 384 kb/s
>>>> Input #1, mpegts, from 'output-test-001.ts':
>>>>   Duration: 00:00:07.90, start: 85.464000, bitrate: 1679 kb/s
>>>>   Program 1
>>>>     Metadata:
>>>>       service_name    : Service01
>>>>       service_provider: FFmpeg
>>>>     Stream #1:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B),
>>>> yuv420p, 720x528 [SAR 1:1 DAR 15:11], 25 fps, 25 tbr, 90k tbn, 50 tbc
>>>>     Stream #1:1[0x101](und): Audio: ac3 ([129][0][0][0] / 0x0081),
>>>> 48000 Hz, 5.1(side), fltp, 384 kb/s
>>>> At least one output file must be specified
>>>> [root@localhost linux]#
>>>>
>>>>
>>>>
>>>>
>>>> this commit is used for fix commit 1da00be009aa74400042bf470b9a5f
>>>> fbd82a1c5e
>>>> because the option initial_offset will deprecated
>>>>
>>>> Signed-off-by: Steven Liu <lingjiujianke@gmail.com>
>>>> ---
>>>>  libavformat/segment.c |    5 +++++
>>>>  1 files changed, 5 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/libavformat/segment.c b/libavformat/segment.c
>>>> index 33a5cf0..252f8b1 100644
>>>> --- a/libavformat/segment.c
>>>> +++ b/libavformat/segment.c
>>>> @@ -885,6 +885,11 @@ calc_times:
>>>>          av_log(s, AV_LOG_VERBOSE, "segment:'%s' starts with packet
>>>> stream:%d pts:%s pts_time:%s frame:%d\n",
>>>>                 seg->avf->filename, pkt->stream_index,
>>>>                 av_ts2str(pkt->pts), av_ts2timestr(pkt->pts,
>>>> &st->time_base), seg->frame_count);
>>>> +        seg->cut_pending = 0;
>>>> +        seg->cur_entry.index = seg->segment_idx +
>>>> seg->segment_idx_wrap * seg->segment_idx_wrap_nb;
>>>> +        seg->cur_entry.start_time = (double)pkt->pts *
>>>> av_q2d(st->time_base);
>>>> +        seg->cur_entry.start_pts = av_rescale_q(pkt->pts,
>>>> st->time_base, AV_TIME_BASE_Q);
>>>> +        seg->cur_entry.end_time = seg->cur_entry.start_time;
>>>>      }
>>>>
>>>>      av_log(s, AV_LOG_DEBUG, "stream:%d start_pts_time:%s pts:%s
>>>> pts_time:%s dts:%s dts_time:%s",
>>>> --
>>>> 1.7.1
>>>>
>>>
>>> ok, let me try your command line
>>
>>
> ......
> it's reproduced when encode by default(video:mpeg2video  audio: mp2)
>
> Ha, interesting,
/ffmpeg -ss 20 -i ~/Movies/objectC/facebook.mp4 -g 50 -f segment
 -segment_time 2 -segment_start_number 10 -output_ts_offset 40
-segment_list output-test.m3u8 -v debug output-test-%03d.ts

no problem

./ffmpeg -ss 20 -i ~/Movies/objectC/facebook.mp4 -c:v mpeg2video -g 50 -f
segment  -segment_time 2 -segment_start_number 10 -output_ts_offset 40
-segment_list output-test.m3u8 -v debug output-test-%03d.ts

no problem

./ffmpeg -ss 20 -i ~/Movies/objectC/facebook.mp4 -c:v libx264 -g 50 -f
segment  -segment_time 2 -segment_start_number 10 -output_ts_offset 40
-segment_list output-test.m3u8 -v debug output-test-%03d.ts

no problem


./ffmpeg -ss 20 -i ~/Movies/objectC/facebook.mp4 -c copy -f segment
 -segment_time 2 -segment_start_number 10 -output_ts_offset 40
-segment_list output-test.m3u8 -v debug output-test-%03d.ts

no problem


./ffmpeg -ss 20 -i ~/Movies/objectC/facebook.mp4 -f segment  -segment_time
2 -segment_start_number 10 -output_ts_offset 40 -segment_list
output-test.m3u8 -v debug output-test-%03d.ts

reproduced
diff mbox

Patch

diff --git a/libavformat/segment.c b/libavformat/segment.c
index 33a5cf0..252f8b1 100644
--- a/libavformat/segment.c
+++ b/libavformat/segment.c
@@ -885,6 +885,11 @@  calc_times:
         av_log(s, AV_LOG_VERBOSE, "segment:'%s' starts with packet
stream:%d pts:%s pts_time:%s frame:%d\n",
                seg->avf->filename, pkt->stream_index,
                av_ts2str(pkt->pts), av_ts2timestr(pkt->pts,
&st->time_base), seg->frame_count);
+        seg->cut_pending = 0;
+        seg->cur_entry.index = seg->segment_idx + seg->segment_idx_wrap *
seg->segment_idx_wrap_nb;
+        seg->cur_entry.start_time = (double)pkt->pts *
av_q2d(st->time_base);
+        seg->cur_entry.start_pts = av_rescale_q(pkt->pts, st->time_base,