FFmpeg(8)

您所在的位置:网站首页 解码器解码失败 FFmpeg(8)

FFmpeg(8)

2024-06-17 11:36:46| 来源: 网络整理| 查看: 265

一.avcodec_find_decoder

获取解码器。在使用之前必须保证所用到的解码器已经注册,最简单的就是调用avcodec_register_all() 函数,就像之前注册解封装器的时候,也要注册一下。。

AVCodec *avcodec_find_decoder(enum AVCodecID id);

// 查找解码器,第一种方法就是直接通过ID号查找,这个ID号从哪里获取呢?就像刚才我们解封装之后,你可以发现我们的AVStream里面其实是有一个codecID, 那个ID号就是我们要用到的解码器的ID号。当然如果本身知道格式的ID号,也可以直接传进去(一般我们用h264,那这个codecID就是28)。找到这个解码器,然后返回到AVCodec当中去。AVCodec当中存放的是解码器格式的配置信息,并不代表最终要处理的解码器。

AVCodec *avcodec_find_decoder_by_name(const char name);

// 除了通过解码器的ID号来查找解码器,还可能通过名字打开解码器。例:avcodec_find_decoder_by_name(“h264_mediacodec”);  // 用Android里面自带的解码模块)

 

二.AVCodecContext 解码器上下文

AVCodecContext *avcode_alloc_context3(const AVCodec *codec);       // 申请AVCodecContext空间。需要传递一个编码器,也可以不传,但不会包含编码器。

void avcodec_free_context(AVCodecContext **avctx);                          // 清理并AVCodecContext空间。

int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);

// 打开视频解码器。如果在 avcode_alloc_context3 的时候没有传解码器,则在此需要进行传递,后面的options是可选参数。参见:libavcodec/options_table.h。

AVCodecContext 的常用参数:

int thread_count; // 用于配置解码线程数

time_base             // 时间基数。

三.avcodec_parameters_to_context

avcodec_parameters_to_context(codec, p)。该函数用于将流里面的参数,也就是AVStream里面的参数直接复制到AVCodecContext的上下文当中。

 

四. 打开音视频解码器示例

// 注册解码器 avcodec_register_all(); AVCodec *vc = avcodec_find_decoder(ic->streams[videoStream]->codecpar->codec_id); // 软解 // vc = avcodec_find_decoder_by_name("h264_mediacodec"); // 硬解 if (!vc) { LOGE("avcodec_find_decoder[videoStream] failure"); return env->NewStringUTF(hello.c_str()); } // 配置解码器 AVCodecContext *vct = avcodec_alloc_context3(vc); avcodec_parameters_to_context(vct, ic->streams[videoStream]->codecpar); vct->thread_count = 1; // 打开解码器 int re = avcodec_open2(vct, vc, 0); if (re != 0) { LOGE("avcodec_open2 failure"); return env->NewStringUTF(hello.c_str()); }

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭