草庐IT

读码器

全部标签

android - 要通过 libstagefright 在 android 中使用 HW 解码器,在元数据中为 kKeyAVCC 设置什么以进行帧基础解码而不是 MP4 播放?

我一直在尝试使用libstagefright来解码h264压缩帧。我没有MP4文件,而是想逐帧解码。我一直在探索alink中的示例.本示例使用ffmpeg解析mp4文件。并使用ffmpeg的avcodeccontext设置并找到所需的元数据。现在我想设置kKeyAVCC、kKeyWidth、kKeyHeight、kKeyIsSyncFrame和kKeyTime。我不清楚这些参数中的每一个。那么,我想知道的是是否需要设置所有这些参数?这些参数的目的是什么以及为逐帧解码的元数据设置什么。当我不设置kKeyTime时,omxcodec在读取媒体缓冲区时崩溃。如果我在读取操作上获得成功,我将不

android - Exoplayer 为 android 中的大型 mp4 文件抛出解码器初始化异常

我正在使用Exoplayer在android中连续播放视频作为播放列表。当我播放低质量的mp4视频时它工作正常但是当我在播放列表中播放一个或两个视频后尝试播放更高质量的mp4视频时屏幕不显示任何内容并且日志给出以下异常com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException:解码器初始化失败:OMX.amlogic.avc.decoder.awesome,MediaFormat(视频/avc,198826,1920,1080,-1.0,-1,-1,-1,-1,-1)即使我在第一

android - MediaCodec 如何在 Android 的框架内找到编解码器?

我正在尝试了解MediaCodec如何用于硬件解码。我对android内部的了解非常有限。这是我的发现:android系统中有一个xml文件,表示编解码器的详细信息。device/ti/omap3evm/media_codecs.xmlforanexample.这意味着,如果我们使用媒体编解码器从Java应用程序创建编解码器MediaCodeccodec=MediaCodec.createDecoderByType(type);应该是在xml文件的帮助下找出各自的编码器。我在做什么?我试图找出代码的哪一部分正在读取xml并根据给定的“类型”找到编解码器。1)应用层:MediaCodec

Android:如何将解码器集成到多媒体框架

最近我成功地将视频解码器移植到android。还将输出转储到surfaceview上并使用nativeAPI检查输出。现在下一个任务是实现播放、暂停、流式传输等,即媒体播放器的其他功能。这样做将是一次返工,因为所有这些功能都已在android多媒体框架中定义。听说可以把我们的解码器做成一个插件,集成到Android的多媒体框架中。尽管我用谷歌搜索了相同的内容,但我几乎找不到任何关于相同内容的信息。因此,我恳请任何读者针对上述问题提出一些相关链接或解决方案。在此先感谢,等待您的回复。 最佳答案 在AndroidSF框架中,编解码器通过

java - AudioTrack - 使用 jlayer(java mp3 解码器)的短数组到字节数组失真

我正在使用jLayer解码MP3数据,调用如下:SampleBufferoutput=(SampleBuffer)decoder.decodeFrame(frameHeader,bitstream);这个返回解码数据的调用,返回一个short[]数组。output.getBuffer();当我使用该方法调用AudioTrackwrite()时,它在我循环遍历文件时播放良好:at.write(output.getBuffer(),0,output.getBuffer().length);但是,当我使用此答案中的任何方法将short[]数组转换为byte[]数组时:https://stac

java - 从给定的地址名称获取纬度和经度。不是地理编码器

我有一个地址名称,我想为其获取准确的纬度和经度。我知道我们可以使用Geocoder的getFromLocationName(address,maxresult)获得它。问题是,我得到的结果总是空的——不像我们用https://maps.google.com/得到的结果。与Geocoder不同,这总能让我获得一些结果。我还尝试了另一种方式:"http://maps.google.com/maps/api/geocode/json?address="+address+"&sensor=false"(这里是alink!)它比地理编码器提供更好的结果,但经常返回错误(java.net.Sock

Android MediaCodec 编码器 - 三星设备的奇怪结果

编辑:问题似乎是该设备不需要16维的倍数...而是32的倍数。问题是,我仍然不知道如何确定什么是有问题的设备。这似乎确实使用了qcom(我发现它在Android4.X上有问题,但这是Android5.1.1)。我正在我的Android应用中对视频进行编码。我正在使用AndroidMediaCodec这样做,将每帧的RGB转换为YUV并传入像素。我使用的代码已经存在了一段时间,并且适用于我遇到的任何设备。一位用户带着错误报告来找我,说他们的MP4出现问题。该设备是SamsungT337A(GalaxyTab4)。下面是MP4导出的样子:注意-无论出于何种奇怪的原因,它都不会在所有分辨率下

android - 如何从 MediaCodec 解码器的输出中提取 PCM 样本

我正在尝试从解码的mp4缓冲区中获取PCM样本以进行进一步处理。我首先从使用手机的相机应用程序录制的视频文件中提取音轨,并确保在获得“audio/mp4”mime键时选择了音轨:MediaExtractorextractor=newMediaExtractor();try{extractor.setDataSource(fileUri.getPath());}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}intnumTracks=extractor.getTrackCount();for(i

Android 媒体编解码器 : Reduce mp4 video size

我正在寻找一种“压缩”mp4视频的方法。为此,我想降低视频的分辨率和/或降低FPS。经过长时间的研究,我认为这样做的方法是使用MediaCodec和相关的API,如下所示:->MediaExtractor从mp4文件中提取编码的媒体数据。->MediaCodec(Decoder):解码每一帧以供后续处理。->MediaCodec(编码器):在这一点上,我想这是我们应该建立MediaFormat参数(例如视频分辨率)的地方,这应该有助于我们减少mp4文件的最终大小。->用于生成mp4文件的MediaMuxer(MinSDK18,这可能是个问题,但现在......好的)。我不想使用Surf

android - 如何创建自定义媒体播放器以在 Android 中播放自定义编解码器?

这里是n00b(第一个Android项目)。我获得了一个与Android固件构建集成的自定义视频编解码器。它是一个.so文件,其中包含一个继承自MediaPlayerInterface的类,以及一个自定义MediaPlayerService实现,用于从相应文件类型的create()工厂函数返回自定义编解码器类的实例。我想将此编解码器用作视频播放器应用程序的一部分,该应用程序可以安装在固件中不包含编解码器的手机上,方法是将.so文件放在我的libs/armeabi文件夹中并通过JNI调用它。来自thisquestion的答案我发现在MediaPlayer框架内不可能做到这一点,我必须从头