diff --git a/libavformat/segment.c b/libavformat/segment.c index 13d8c43..7f5b947 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -174,11 +174,24 @@ static int segment_start(AVFormatContext *s, int write_header) int err = 0; if (write_header) { + + AVDictionary *tmp = NULL; + + if (av_dict_count(s->metadata) != 0) + { + av_dict_copy(&tmp, s->metadata, 0); + } + else if (av_dict_count(oc->metadata) != 0) + { + av_dict_copy(&tmp, oc->metadata, 0); + } + avformat_free_context(oc); seg->avf = NULL; if ((err = segment_mux_init(s)) < 0) return err; oc = seg->avf; + av_dict_copy(&oc->metadata, tmp, 0); } seg->segment_idx++;