[FFmpeg-devel] [PATCH] Add segment name id set by user defined

Steven Liu lingjiujianke at gmail.com
Sat May 10 05:40:07 CEST 2014


On May 10, 2014, at 6:57 AM, Michael Niedermayer <michaelni at gmx.at> wrote:

> On Fri, May 09, 2014 at 01:29:14AM +0800, Steven Liu wrote:
>> Hi!
>> 
>> Some times, m3u8 can be used for timeshift used segment id,
>> for example:
>>    xxx.m3u8?starttime=139xxxxxxx&endtime=139xxxxxxx,
>>    or
>>    xxx.m3u8?starttime=20140408121221&endtime=20140408131221
>>    or
>>    seek m3u8 file
>>    xxx.m3u8?starttime=14&endtime=3600
>> 
>> so add the parameters for the segment id for index,
>> for example:
>> 
>> segment name id by mpegts starttime, use the parameters:
>> -segment_name_flag starttime
>>    output-0.ts
>>    output-14.ts
>>    output-24.ts
>>    output-34.ts
>> 
>> segment name id by time(), use the parameters:
>> -segment_name_flag time
>>    output-1399568846.ts
>>    output-1399568856.ts
>>    output-1399568866.ts
>> 
>> segment name id by format time, use the parameters:
>> -segment_name_flag fmt_time
>>    output-20140509010807.ts
>>    output-20140509010817.ts
>>    output-20140509010827.ts
>> 
>> this parameters can use default, if use the default, it will as before
>> this functions can be used for m3u8 time shift
>> 
>> Signed-off-by: Steven Liu <qi.liu at chinacache.com>
>> ---
>> libavformat/avformat.h |  2 +-
>> libavformat/segment.c  | 81 ++++++++++++++++++++++++++++++++++++++++++++++----
>> libavformat/utils.c    |  4 +--
>> 3 files changed, 79 insertions(+), 8 deletions(-)
>> 
> 
>> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
>> index 7d2db6a..a11a9eb 100644
>> --- a/libavformat/avformat.h
>> +++ b/libavformat/avformat.h
>> @@ -2465,7 +2465,7 @@ void av_dump_format(AVFormatContext *ic,
>>  * @return 0 if OK, -1 on format error
>>  */
>> int av_get_frame_filename(char *buf, int buf_size,
>> -                          const char *path, int number);
>> +                          const char *path, int64_t number);
> 
> breaks ABI
It there have some ABI for support the number like int64?
I saw the av_get_frame_filename’s number is int, but int is not enough for use
Or let’s create a new ABI for this function?

> 
> [...]
>> diff --git a/libavformat/utils.c b/libavformat/utils.c
>> index 4f5b310..5a4e5e0 100644
>> --- a/libavformat/utils.c
>> +++ b/libavformat/utils.c
>> @@ -3985,7 +3985,7 @@ uint64_t ff_ntp_time(void)
>>     return (av_gettime() / 1000) * 1000 + NTP_OFFSET_US;
>> }
>> 
>> -int av_get_frame_filename(char *buf, int buf_size, const char *path, int number)
>> +int av_get_frame_filename(char *buf, int buf_size, const char *path, int64_t number)
>> {
>>     const char *p;
>>     char *q, buf1[20], c;
>> @@ -4013,7 +4013,7 @@ int av_get_frame_filename(char *buf, int buf_size, const char *path, int number)
>>                 if (percentd_found)
>>                     goto fail;
>>                 percentd_found = 1;
>> -                snprintf(buf1, sizeof(buf1), "%0*d", nd, number);
>> +                snprintf(buf1, sizeof(buf1), "%0*lld", nd, number);
> 
> this is the wrong format specifer
> 
> 
>>                 len = strlen(buf1);
>>                 if ((q - buf + len) > buf_size - 1)
>>                     goto fail;
>> --
>> 1.8.5.2 (Apple Git-48)



More information about the ffmpeg-devel mailing list