diff --git a/remux.c b/remux.c index 7160d1b3698140ce48fb0f0d46e4694976b8fd76..bd18c718b3d43cd536c0bb68835fb1226b3685eb 100644 --- a/remux.c +++ b/remux.c @@ -60,19 +60,19 @@ int main(int argc, char *argv[]) goto fail; avformat_find_stream_info(demux, 0); avformat_alloc_output_context2(&mux, 0, 0, path); + av_dict_copy(&mux->metadata, demux->metadata, 0); parse_dict(&mux->metadata, jlookup(argv[4], "metadata")); parse_chapters(mux, jlookup(argv[4], "chapters"), av_rescale_q(demux->duration, AV_TIME_BASE_Q, chapter_time_base)); idxmap = malloc(sizeof(int)*demux->nb_streams); for (i = 0; i < demux->nb_streams; i ++) { + idxmap[i] = -1; if (demux->streams[i]->codecpar->codec_type != AVMEDIA_TYPE_AUDIO && demux->streams[i]->codecpar->codec_type != AVMEDIA_TYPE_VIDEO && demux->streams[i]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE) - { - idxmap[i] = -1; continue; - } stream = avformat_new_stream(mux, 0); + av_dict_copy(&stream->metadata, mux->streams[i]->metadata, 0); idxmap[i] = stream->index; avcodec_parameters_copy(mux->streams[i]->codecpar, demux->streams[i]->codecpar);