Hi. Recently I needed to write transcoder based on ffmpeg libraries. I started
with transcoding.c example and soon noticed that result video files are not
playable in Apple's QuickTime player. I found out that issue was in following
piece of code in function open_output_file:
/* Third parameter can be used to pass settings to encoder */
ret = avcodec_open2(enc_ctx, encoder, NULL);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot open video encoder for stream #%u\n", i);
return ret;
}
ret = avcodec_parameters_from_context(out_stream->codecpar, enc_ctx);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Failed to copy encoder parameters to output
stream #%u\n", i);
return ret;
}
if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)
enc_ctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
The problem was in assigning AV_CODEC_FLAG_GLOBAL_HEADER to encoder flags: if I
set it before calling avcodec_open2, QuickTime handles result files normally.
Otherwise it refuses to play video stream.
I'm not an experienced ffmpeg hacker, so I need your opinion on this. Is this
really a bug or am I missing something?
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user