[FFmpeg-devel] [PATCH v3] avformat/hlsenc: Respect `append_list` flag in subtitle
Steven Liu
lingjiujianke at gmail.com
Fri Oct 4 13:06:16 EEST 2024
Jonathan Baecker <jonbae77 at gmail.com> 于2024年10月1日周二 03:51写道:
>
> Apply Stevens suggestion.
>
> Original description:
> Ensure that when the `-hls_flags append_list` option is set,
> that *.vtt files in stream_vtt.m3u8 are correctly updated.
> This fixes https://trac.ffmpeg.org/ticket/11208
> ---
> libavformat/hlsenc.c | 30 ++++++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
>
> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> index 571d6b2752..8d4322796d 100644
> --- a/libavformat/hlsenc.c
> +++ b/libavformat/hlsenc.c
> @@ -1202,6 +1202,22 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls,
> return 0;
> }
>
> +static int extract_segment_number(const char *filename) {
> + const char *dot = strrchr(filename, '.');
> + const char *num_start = dot - 1;
> +
> + while (num_start > filename && *num_start >= '0' && *num_start <= '9') {
> + num_start--;
> + }
> +
> + num_start++;
> +
> + if (num_start == dot)
> + return -1;
> +
> + return atoi(num_start);
> +}
> +
> static int parse_playlist(AVFormatContext *s, const char *url, VariantStream *vs)
> {
> HLSContext *hls = s->priv_data;
> @@ -1295,6 +1311,20 @@ static int parse_playlist(AVFormatContext *s, const char *url, VariantStream *vs
> goto fail;
> }
> ff_format_set_url(vs->avf, new_file);
> +
> + if (vs->has_subtitle) {
> + int vtt_index = extract_segment_number(line);
> + const char *vtt_basename = av_basename(vs->vtt_basename);
> + int len = strlen(vtt_basename) + 11;
> + char *vtt_file = av_mallocz(len);
> + if (!vtt_file) {
> + ret = AVERROR(ENOMEM);
> + goto fail;
> + }
> + snprintf(vtt_file, len, vtt_basename, vtt_index);
> + ff_format_set_url(vs->vtt_avf, vtt_file);
> + }
> +
> is_segment = 0;
> new_start_pos = avio_tell(vs->avf->pb);
> vs->size = new_start_pos - vs->start_pos;
> --
> 2.46.2
>
> _______________________________________________
> 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".
LGTM
Will apply after 48 hours if no more comments.
Thanks
Steven
More information about the ffmpeg-devel
mailing list