Я пытаюсь сделать аудиокнигу, используя ffmpeg. Поддержка формата m4b охватывает изображение для каждой главы. ffmpeg также загрузит его, но я не смогу создать AVStream с флагом расположения AV_DISPOSITION_TIMED_THUMBNAILS.
int addVideoStream( AVFormatContext *ctx, CoverData *cover) {
const AVCodec *c = avcodec_find_encoder( AV_CODEC_ID_MJPEG );
if ( !c )
return -1;
int stream_indx = ctx->nb_streams;
AVStream *stream = avformat_new_stream( ctx, NULL );
AVCodecContext *img_codec_ctx = avcodec_alloc_context3( c );
img_codec_ctx->width = cover->width();
img_codec_ctx->height = cover->height();
img_codec_ctx->pix_fmt = AV_PIX_FMT_YUVJ420P;
if ( ctx->oformat->flags & AVFMT_GLOBALHEADER )
img_codec_ctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
int res = avcodec_parameters_from_context( stream->codecpar, img_codec_ctx );
avcodec_free_context( &img_codec_ctx );
return stream_indx;
}
int new_v_stream_index = addVideoStream( out_ctx, img_data );
AVStream *v_stream = out_ctx->streams[ new_v_stream_index ];
v_stream->disposition = AV_DISPOSITION_DEFAULT|AV_DISPOSITION_ATTACHED_PIC|AV_DISPOSITION_TIMED_THUMBNAILS;
int error = avformat_write_header( out_ctx, NULL );
ошибка возврата = -22
, если установлено только расположение
v_stream->disposition = AV_DISPOSITION_ATTACHED_PIC;
ошибка = 0, но это только для одного прикрепленного пакета изображения: stream-> attach_pi c
где я ошибаюсь?