Привет Всем! Возникла задачка с помощью ffmpeg создать контейнер mkv и добавлять в него заранее сформированые кодеком H264 кадры. Проблема в том, что сформированный AVPacket с готовым кадром, который я указываю в поле data (естественно с указанием размера), в поток пишется, но файл не воспроизводит эти кадры.
mkv_status
mkv_write_encoded_h264(mkv_file *mkv, void *h264_frame, size_t bytes) {
if(mkv == 0 || *mkv == 0 || h264_frame == 0 || bytes == 0) return -1;
AVPacket packet;
av_init_packet(&packet);
packet.data = (uint8_t*)h264_frame;
packet.size = bytes;
packet.stream_index = (*mkv)->stream_context->streams[0]->index;
packet.flags = AV_PKT_FLAG_KEY;
packet.pts = (int64_t)((*mkv)->frames * 10);
packet.dts = (*mkv)->frames;
packet.pos = -1;
//packet.duration = AV_NOPTS_VALUE;
(*mkv)->codec_context->coded_frame->pts = packet.pts;
int status = av_write_frame((*mkv)->stream_context, &packet);
av_free_packet(&packet);
if(status < 0) return -1;
(*mkv)->frames++;
return MKV_OK;
}
Может у кого есть предположение, что я сделал не так? Или может какие туторы на эту тему? Документацию по библиотеке естественно я читаю ! )))