[FFmpeg-devel] [PATCH] avformat/hlsenc: check the segment duration valid
zhilizhao
quinkblack at foxmail.com
Sun Aug 16 19:44:41 EEST 2020
> On Aug 17, 2020, at 11:18 AM, Steven Liu <lingjiujianke at gmail.com> wrote:
>
> zhilizhao <quinkblack at foxmail.com <mailto:quinkblack at foxmail.com>> 于2020年8月17日周一 上午11:15写道:
>>
>>
>>
>>> On Aug 17, 2020, at 11:02 AM, Steven Liu <lingjiujianke at gmail.com <mailto:lingjiujianke at gmail.com>> wrote:
>>>
>>> zhilizhao <quinkblack at foxmail.com <mailto:quinkblack at foxmail.com> <mailto:quinkblack at foxmail.com <mailto:quinkblack at foxmail.com>>> 于2020年8月17日周一 上午10:54写道:
>>>>
>>>> Hi Steven,
>>>>
>>>>> On Aug 17, 2020, at 8:49 AM, Steven Liu <lq at chinaffmpeg.org <mailto:lq at chinaffmpeg.org> <mailto:lq at chinaffmpeg.org <mailto:lq at chinaffmpeg.org>>> wrote:
>>>>>
>>>>> output a warning message if the target duration of the segment.
>>>>
>>>> The sentence is incomplete.
>>> Ah ,yes, should
>>> "Output a warning message if the target duration of the segment is negative."
>>>>
>>>>> and modify the target duration to one packet duration,
>>>>> because there maybe have bframe and then split not by keyframe,
>>>>> and the segment is very very small.
>>>>
>>>> The warning message is very helpful, modify the target duration is less helpful
>>>> IMHO. The generated files are broken and cannot be fixed. Let the user see what’s
>>>> going wrong from the log messages or from the m3u8 files, and fix the usage
>>>> problem.
>>> What about return a suggestion and give an error message?
>>> "duration < 0, maybe you splited a too short segment, you should split
>>> an keyframe if too short.”?
>>
>> I suggest naming the option (“hls_time” and “hls_segment_size” maybe?) in the message
> I cannot understand the mean "naming the option",
> user using hls_time, and hls_flag split_by_time (this should split at
> non-keyframe),
> so maybe user use a wrong way when use the flag.
I mean mention which option should be changed, something like:
"try increase hls_time or disable split_by_time flag".
>
>> so the user not only know what’s going wrong but also how to fix it.
>>
>>>>
>>>>>
>>>>> Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
>>>>> ---
>>>>> libavformat/hlsenc.c | 5 +++++
>>>>> 1 file changed, 5 insertions(+)
>>>>>
>>>>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
>>>>> index cb31d6aed7..76d59f5f79 100644
>>>>> --- a/libavformat/hlsenc.c
>>>>> +++ b/libavformat/hlsenc.c
>>>>> @@ -2512,6 +2512,11 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
>>>>>
>>>>> if (vs->start_pos || hls->segment_type != SEGMENT_TYPE_FMP4) {
>>>>> double cur_duration = (double)(pkt->pts - vs->end_pts) * st->time_base.num / st->time_base.den;
>>>>> + if (cur_duration < 0) {
>>>>> + av_log(s, AV_LOG_WARNING, "duration < 0, maybe you splited a too short segment, "
>>>>> + "the duration will set to 1 packet duration.\n");
>>>>> + cur_duration = vs->duration;
>>>>> + }
>>>>> ret = hls_append_segment(s, hls, vs, cur_duration, vs->start_pos, vs->size);
>>>>> vs->end_pts = pkt->pts;
>>>>> vs->duration = 0;
>>>>> --
>>>>> 2.25.0
>>>>>
>>>>> _______________________________________________
>>>>> ffmpeg-devel mailing list
>>>>> ffmpeg-devel at ffmpeg.org
>>>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>>
>>>>> To unsubscribe, visit link above, or email
>>>>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>>>>
>>>> _______________________________________________
>>>> ffmpeg-devel mailing list
>>>> ffmpeg-devel at ffmpeg.org
>>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>
>>>> To unsubscribe, visit link above, or email
>>>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>>>
>>> Thanks
>>> Steven
>>> _______________________________________________
>>> ffmpeg-devel mailing list
>>> ffmpeg-devel at ffmpeg.org <mailto:ffmpeg-devel at ffmpeg.org> <mailto:ffmpeg-devel at ffmpeg.org <mailto:ffmpeg-devel at ffmpeg.org>>
>>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel> <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>>
>>>
>>> To unsubscribe, visit link above, or email
>>> ffmpeg-devel-request at ffmpeg.org <mailto:ffmpeg-devel-request at ffmpeg.org> <mailto:ffmpeg-devel-request at ffmpeg.org <mailto:ffmpeg-devel-request at ffmpeg.org>> with subject "unsubscribe".
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org <mailto:ffmpeg-devel at ffmpeg.org>
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request at ffmpeg.org <mailto:ffmpeg-devel-request at ffmpeg.org> with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org <mailto:ffmpeg-devel at ffmpeg.org>
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org <mailto:ffmpeg-devel-request at ffmpeg.org> with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list