首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPS/PPS未被Android MediaCodec NDK使用

SPS/PPS未被Android MediaCodec NDK使用
EN

Stack Overflow用户
提问于 2019-04-22 04:05:02
回答 1查看 700关注 0票数 1

我正在尝试用非默认比色法来解码视频,使用MediaCodec NDK。我将SPS和PPS分别提供给csd-0和csd-1缓冲区,但这些信息似乎并不影响解码视频的外观。

首先,我初始化了AMediaFormat

代码语言:javascript
复制
AMediaFormat * format = AMediaFormat_new ();
AMediaFormat_setString (format, AMEDIAFORMAT_KEY_MIME, "video/avc");
AMediaFormat_setInt32 (format, AMEDIAFORMAT_KEY_WIDTH, this->width);
AMediaFormat_setInt32 (format, AMEDIAFORMAT_KEY_HEIGHT, this->height);
AMediaFormat_setInt32 (format, AMEDIAFORMAT_KEY_FRAME_RATE, this->fps_n);

然后,我为我的视频流提供SPS和PPS缓冲区。

代码语言:javascript
复制
uint8_t sps[] = { 0,0,0,1,103,100,0,52,172,43,64,8,0,24,54,2,220,4,32,6,148,0,0,15,160,0,7,83,2,61,42,128 };
uint8_t pps[] = { 0,0,0,1,104,238,60,176 };
const size_t sps_len = 32;
const size_t pps_len = 8;
AMediaFormat_setBuffer (format, "csd-0", sps, sps_len);
AMediaFormat_setBuffer (format, "csd-1", pps, pps_len);

最后,配置并启动编解码器。

代码语言:javascript
复制
AMediaCodec_configure (codec, format, window, NULL, 0);
AMediaCodec_start (codec);
AMediaFormat_delete (format);

我现在开始像往常一样排队输入缓冲区以进行解压。这是运行的,在日志中没有任何错误,但解码的视频看起来完全一样,不管我为传输特性设置了什么(在上面,它被设置为'8‘的线性伽马)。

是否有人对媒体编解码器似乎没有实际使用我提供的比色数据有任何建议?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-25 03:09:11

H.264流中的颜色空间信息仅为信息元数据。所以你的观察是正确的,减压器也可以正常工作。您将得到解压缩位图在相同的颜色空间,因为它被编码。通常解压缩器不做或不关心颜色空间。解压缩后你必须做一个颜色空间的对话。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55788981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档