Commit 1fe40e73 authored by Steven Liu's avatar Steven Liu

avformat/hlsenc: copy codec_tag when stream copy

when use fmp4 segment type in hls and use codec copy,
there have an error message.
error message:
   [mp4 @ 0x25df020] Tag avc1 incompatible with output codec id '28' ([33][0][0][0])
   [hls @ 0x2615c80] Some of the provided format options in '(null)' are not recognized
   Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
this patch can fix it.
Signed-off-by: 's avatarLiu Qi <w_liuqi@kingsoft.com>
Signed-off-by: 's avatarSteven Liu <lq@onvideo.cn>
parent d01b8f86
...@@ -566,6 +566,14 @@ static int hls_mux_init(AVFormatContext *s) ...@@ -566,6 +566,14 @@ static int hls_mux_init(AVFormatContext *s)
if (!(st = avformat_new_stream(loc, NULL))) if (!(st = avformat_new_stream(loc, NULL)))
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
avcodec_parameters_copy(st->codecpar, s->streams[i]->codecpar); avcodec_parameters_copy(st->codecpar, s->streams[i]->codecpar);
if (!oc->oformat->codec_tag ||
av_codec_get_id (oc->oformat->codec_tag, s->streams[i]->codecpar->codec_tag) == st->codecpar->codec_id ||
av_codec_get_tag(oc->oformat->codec_tag, s->streams[i]->codecpar->codec_id) <= 0) {
st->codecpar->codec_tag = s->streams[i]->codecpar->codec_tag;
} else {
st->codecpar->codec_tag = 0;
}
st->sample_aspect_ratio = s->streams[i]->sample_aspect_ratio; st->sample_aspect_ratio = s->streams[i]->sample_aspect_ratio;
st->time_base = s->streams[i]->time_base; st->time_base = s->streams[i]->time_base;
av_dict_copy(&st->metadata, s->streams[i]->metadata, 0); av_dict_copy(&st->metadata, s->streams[i]->metadata, 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment