小编Wu *_* NL的帖子

FFMpeg 如何使用多线程?

我想用ffmpeg解码H264,但最后我发现解码功能只使用了一个CPU核心

系统监视器

环境:Ubuntu 14.04 FFMpeg 3.2.4 CPU i7-7500U


因此,我搜索了 ffmpeg 多线程并决定使用所有 cpu 核心进行解码。
我将 AVCodecContext 设置为:

//Init works
//codecId=AV_CODEC_ID_H264;
avcodec_register_all();
pCodec = avcodec_find_decoder(codecId);
if (!pCodec)
{
    printf("Codec not found\n");
    return -1;
}
pCodecCtx = avcodec_alloc_context3(pCodec);
if (!pCodecCtx)
{
    printf("Could not allocate video codec context\n");
    return -1;
}

pCodecParserCtx=av_parser_init(codecId);
if (!pCodecParserCtx)
{
    printf("Could not allocate video parser context\n");
    return -1;
}
pCodecCtx->thread_count = 4;
pCodecCtx->thread_type = FF_THREAD_FRAME;

pCodec->capabilities &= CODEC_CAP_TRUNCATED;
pCodecCtx->flags |= CODEC_FLAG_TRUNCATED;

if (avcodec_open2(pCodecCtx, pCodec, NULL) < 0)
{
    printf("Could …
Run Code Online (Sandbox Code Playgroud)

multithreading ffmpeg

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

ffmpeg ×1

multithreading ×1