4

我正在研究使用 android MediaCodec 类来解码 HEVC。有没有这样做的项目示例?

目前我使用以下配置解码器:

AMEDIAFORMAT_KEY_MIME: "video/hevc"
AMEDIAFORMAT_KEY_MAX_HEIGHT: 4320
AMEDIAFORMAT_KEY_MAX_WIDTH: 8192
AMEDIAFORMAT_KEY_HEIGHT: 1600
AMEDIAFORMAT_KEY_WIDTH: 3840
AMEDIAFORMAT_KEY_FRAME_RATE: 24
AMEDIAFORMAT_KEY_PUSH_BLANK_BUFFERS_ON_STOP: 1

使用此设置时,我没有视频输出。我也试过分别设置csd-0,csd-1csd-2到 VPS、SPS 和 PPS,但没有运气。

我在控制台中收到以下错误,但已确定它不相关:

01-19 15:40:36.048: E/OMXNodeInstance(17230): OMX_GetExtensionIndex OMX.google.android.index.storeMetaDataInBuffers failed
01-19 15:40:36.048: E/ACodec(17230): [OMX.google.hevc.decoder] storeMetaDataInBuffers failed w/ err -2147483648

我发现它dequeueOutputBuffer总是在返回-1。似乎dequeueInputBuffer返回的索引queueInputBuffer在从dequeueOutputBuffer.

有没有人设法在 Android 上解码 HEVC 视频?

4

3 回答 3

2

VLC 至少支持它,虽然我不确定它已经测试过哪些解码器(我可以从你的日志片段中看到你正在使用 SW 解码器)。据我所知,您需要注意的唯一细节是以附件 b 格式(带有起始代码)而不是 mp4/mkv 格式传递数据包 - 就像 H264 一样。

参见例如http://git.videolan.org/?p=vlc.git;a=commitdiff;h=86630a1 , http://git.videolan.org/?p=vlc.git;a=commitdiff;h= 5e19ce93http://git.videolan.org/?p=vlc.git;a=commitdiff;h=7b79a086有关这方面的一些示例。

此外,有关storeMetaDataInBuffers失败的日志消息是不相关的,无需担心,请参阅http://bigflake.com/mediacodec/上的 Q12 。

于 2015-01-19T17:00:23.333 回答
0

可能还想看看 MX Player,它在我的 Nexus 7 上播放 HEVC。但是,由于当前没有任何对 HEVC 的 Android 硬件支持,高清内容播放过于紧张。640p 和更低的分辨率可以正常播放 - 尽管可能不适用于大多数 CPU 能力较低的 Android 设备。

于 2015-01-19T19:23:34.840 回答
0

问题似乎与分辨率有关 - 512x216 不起作用并出现上述症状,但 1920x800 工作正常。我已经问过另一个关于支持哪些决议的问题。

于 2015-01-21T13:34:52.833 回答