标签: mediacodec

android媒体编解码器无法实例化类型'video/mp4'的解码器

致力于实现mediamuxer类.它需要来自mediacodec类的输入(一个音频和一个视频).但尝试编码"video/mp4"时抛出错误

码:

String mime = MimeTypeMap.getSingleton()
                .getMimeTypeFromExtension("mp4");
        codec = MediaCodec.createEncoderByType(mime);
Run Code Online (Sandbox Code Playgroud)

错误:

Unable to instantiate a decoder for type 'video/mp4'
Run Code Online (Sandbox Code Playgroud)

注意错误是针对解码器的,并且调用是创建编码器.

我可能会在一分钟内解决这个问题,但是对于碰到这个问题的其他人来说,它会在这里.

video mp4 android mediacodec

2
推荐指数
1
解决办法
3913
查看次数

如何确定Android MediaFormat.KEY_SAMPLE_RATE的值

我正在尝试编码

音频数据:

  • 采样率= 44100 Hz
  • Monoral频道
  • PCM_16BIT

对某些AAC来说 MediaCodec

编解码器配置有点令人困惑,但到目前为止,我至少做了如下操作,至少没有错误.

    codec = MediaCodec.createEncoderByType("audio/mp4a-latm");
    MediaFormat format = new MediaFormat();
    format.setString(MediaFormat.KEY_MIME, "audio/mp4a-latm");
    format.setInteger(MediaFormat.KEY_CHANNEL_COUNT, 1);
    format.setInteger(MediaFormat.KEY_SAMPLE_RATE, 44100);
    format.setInteger(MediaFormat.KEY_BIT_RATE, 1*44100*16);
    format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectHE);
    codec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
Run Code Online (Sandbox Code Playgroud)

这是我的猜测所以如果你发现它错了请告诉我.

KEY_CHANNEL_COUNT= 1对应于音频源属性:Monoral Channel = 1,

KEY_SAMPLE_RATE= 44100到音频源属性:Sample rate = 44100 Hz,

并且由于音频源属性是PCM_16BIT,KEY_BIT_RATE应该是 1*44100*16.

我对么?我试图找到文档,但在网上找不到.谢谢.

audio android mediacodec

2
推荐指数
1
解决办法
3835
查看次数

使用MediaCodec编辑帧和编码

我能够解码mp4视频。如果我使用来配置解码器,则Surface可以在屏幕上看到视频。现在,我要编辑帧(添加黄线甚至更好地重叠小图像)并将视频编码为新视频。不必显示视频,现在我也不在乎性能。(如果在编辑时显示帧,如果编辑功能花费很多时间,我可能会有空隙),那么,您对此有何建议?我是使用GlSurface来配置解码器并使用OpenGl(GLES),还是将其配置为null并以某种方式将其转换Bytebuffer为a Bitmap,对其进行修改,然后将位图编码为字节数组?另外我在Grafika页面中看到,您可以将a Surface与自定义Rederer一起使用并使用OpenGl(GLES)。谢谢

video android opengl-es-2.0 mediacodec mediamuxer

2
推荐指数
1
解决办法
1828
查看次数

在我的android上,使用opengl曲面将一个H.264视频重新编码为另一个视频非常慢

我正在开发将视频转换为另一视频并为每个帧添加其他效果的功能。我决定使用opengl-es在每个帧上应用效果。我的输入和输出视频是使用H.264编解码器的MP4。我使用MediaCodec API(Android API 18+)将H.264解码为opengl纹理,然后使用此纹理与着色器在表面上绘制。我认为将MediaCodec与H.264结合使用会在android上进行硬件解码,并且速度很快。但似乎并非如此。重新录制432x240较小的15秒视频消耗了总时间的28秒!

请查看我的代码和个人资料信息,并分享一些建议,如果我做错了事,请提出批评。

我的代码:

    private void editVideoFile()
{
    if (VERBOSE)
    {
        Log.d(TAG, "editVideoFile " + mWidth + "x" + mHeight);
    }

    MediaCodec decoder = null;

    MediaCodec encoder = null;
    InputSurface inputSurface = null;
    OutputSurface outputSurface = null;
    try
    {
        File inputFile = new File(FILES_DIR, INPUT_FILE);   // must be an absolute path
        // The MediaExtractor error messages aren't very useful.  Check to see if the input
        // file exists so we can throw a better one if it's not …
Run Code Online (Sandbox Code Playgroud)

android opengl-es-2.0 mediacodec mediaextractor

0
推荐指数
1
解决办法
1300
查看次数