使用 MP4 格式的媒体编解码器进行转换时 Android 应用程序崩溃?
Posted
技术标签:
【中文标题】使用 MP4 格式的媒体编解码器进行转换时 Android 应用程序崩溃?【英文标题】:Android app crash while converting with media codec with MP4 formatting? 【发布时间】:2017-04-26 16:11:11 【问题描述】:我有一个应用程序,它从 onPreviewFrame 获取数据作为字节并传递给我的编码器,这是另一个实现 android 的媒体编解码器 api 的类获取数据并制作视频文件。它适用于格式为“video/avc”的文件,但会从“mpeg4”崩溃并显示线程错误。可能是什么原因?
【问题讨论】:
显示一些代码并发布您的日志猫 MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", 800, 480); // 我在这里遇到问题。 “视频/avc”工作正常,但视频/其他“创建问题// mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 125000); mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 15); mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities. COLOR_FormatYUV420Planar); mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5); mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); mediaCodec.start(); 【参考方案1】:请在http://bigflake.com/mediacodec/学习优秀的解释。具体来说,MediaCodec.createEncoderByType(MIME_TYPE)
可能会抛出异常。也许您的设备需要 "video/mp4v-es" 用于 MPEG4 视频。
如果可能,最好使用MediaCodec.findEncoderForFormat(MediaFormat)
。
【讨论】:
for "video/avc" App 在三星 Galaxy Note 3 上运行良好,但在 Nexus 5、Galaxy s3 neo 上出现问题。我该如何解决?任何想法 ?我正在研究你的资源并试图修复它 不幸的是,这就是它的构建方式。没有一种 MIME 类型可以保证在所有设备上都可用。 有没有其他API可以支持不同的设备?是否有任何低级 API 可以支持最低 API 14 到更高? 查看优秀的libstreaming 项目。如果您查看饼图,API 14 并不值得担心。以上是关于使用 MP4 格式的媒体编解码器进行转换时 Android 应用程序崩溃?的主要内容,如果未能解决你的问题,请参考以下文章
FFMPEG hwaccel 将 WEBM 转换为 MP4 视频失败:找不到编解码器参数
“无法解码媒体资源 FILEPATH/FILENAME.mp4。”尝试在 Firefox 35 上播放 h264 编码文件时