jjzjj

MediaCodec

全部标签

MediaCodec动态控制码率

MediaCodec是Android操作系统中用于编解码视频和音频的API。它可以处理硬件编解码器(利用设备的专用硬件)和软件编解码器(使用CPU进行处理)。要动态控制MediaCodec的码率,你可以遵循以下步骤:1.创建和配置MediaCodec:首先,创建一个合适的编解码器实例,配置参数,并启动它。选择合适的编解码器和配置参数非常重要,因为这将影响到输出结果的质量。MediaCodeccodec=MediaCodec.createEncoderByType(MediaFormat.MIMETYPE_VIDEO_AVC);MediaFormatformat=MediaFormat.crea

java - MediaCodec H264 编码器不适用于 Snapdragon 800 设备

我使用Android的MediaCodecAPI编写了一个H264流编码器。我在大约10种配备不同处理器的不同设备上对其进行了测试,它适用于所有设备,但搭载Snapdragon800的设备(GoogleNexus5和SonyXperiaZ1)除外。在这些设备上,我获得了SPS和PPS以及第一个关键帧,但之后mEncoder.dequeueOutputBuffer(mBufferInfo,0)仅返回MediaCodec.INFO_TRY_AGAIN_LATER。我已经尝试过不同的超时、比特率、分辨率和其他配置选项,但都无济于事。结果总是一样的。我使用以下代码来初始化编码器:mBuffer

android - 使用 MediaCodec 和 MediaMuxer 将图像转换为视频

我有一堆保存为jpeg文件的本地镜像。我的图像是使用CameraPreview捕获的,PreviewFormat是默认的:NV21。我想从固定数量的图像中生成一个小视频。我不会使用FFMpeg,因为它需要NDK并且会引入兼容性问题。MediaCodec和MediaMuxer似乎可行,但网络上没有一种可行的解决方案。有一些引用指向我当前的解决方案。1.EncodeAndMuxTest:http://bigflake.com/mediacodec/EncodeAndMuxTest.java.txt这个是fadden写的。它非常适合我的需要,只是他使用的是createInputSurface

Android MediaCodec AAC 编码器

我使用AndroidSDK从API级别16开始提供的MediaCodec类和OMX.SEC.aac.enc编码器将音频编码为文件。我得到了音频AudioRecord类的输入。我的AudioRecord类的实例是这样配置的:bufferSize=AudioRecord.getMinBufferSize(44100,AudioFormat.CHANNEL_IN_STEREO,AudioFormat.ENCODING_PCM_16BIT);recorder=newAudioRecord(MediaRecorder.AudioSource.MIC,44100,AudioFormat.CHANN

android - MediaCodec getInputImage 在某些设备上返回 null

我想通过将颜色格式设置为COLOR_FormatYUV420Flexible来使用MediaCodec进行编码。我的输入缓冲区是yuv420p。当我像这样输入缓冲区时:intinputBufferIndex=mEncoder.dequeueInputBuffer(-1);mCurrentBufferIndex=inputBufferIndex;if(inputBufferIndex>=0){ByteBufferinputBuffer=inputBuffers[inputBufferIndex];//if(VERBOSE)Log.i(TAG,"pos:"+inputBuffer.posi

android - 如何使用 MediaCodec 将位图编码为视频?

我想将我拥有的一组位图编码为h264。这可以通过MediaEncoder实现吗?为了做到这一点,我编写了一些代码,但输出无法在我尝试过的任何媒体播放器中播放。以下是我主要从Stackoverflow上找到的其他来源借用的一些代码。mMediaCodec=MediaCodec.createEncoderByType("video/avc");mMediaFormat=MediaFormat.createVideoFormat("video/avc",320,240);mMediaFormat.setInteger(MediaFormat.KEY_BIT_RATE,125000);mMed

android - 使用 Android MediaCodec 从摄像头编码 H.264

我正试图让它在Android4.1上运行(使用升级的AsusTransformer平板电脑)。感谢Alex'sresponsetomypreviousquestion,我已经能够将一些原始H.264数据写入文件,但这个文件只能用ffplay-fh264播放,而且它似乎丢失了有关帧速率的所有信息(非常快回放)。颜色空间看起来也不正确(atm在编码器端使用相机的默认值)。publicclassAvcEncoder{privateMediaCodecmediaCodec;privateBufferedOutputStreamoutputStream;publicAvcEncoder(){Fi

android - MediaCodec 和摄像头 : colorspaces don't match

我一直在尝试使用新的低级MediaCodec让H264编码与Android平板电脑上的相机捕获的输入一起工作.我在这方面遇到了一些困难,因为MediaCodecAPI的文档记录很差,但我终于得到了一些工作。我将相机设置如下:Camera.Parametersparameters=mCamera.getParameters();parameters.setPreviewFormat(ImageFormat.YV12);//parameters.setPreviewFpsRange(4000,60000);parameters.setPreviewSize(640,480);mCamera

android - 使用 MediaCodec 和 MediaMuxer 编码和混合视频

我正在开发一个应用程序,我在其中解码视频并替换某些帧并使用MediaMuxer和MediaCodec重新编码。如果我不替换任何帧(我在下面解释的1080p视频除外),该应用程序可以正常工作,但是当我这样做时,替换后的帧会像素化并且视频不连贯。另外,当我尝试使用1920x1080视频的应用时,我得到一个奇怪的输出,视频没有显示任何内容,直到我滚动到视频的开头,然后视频开始显示(但同样的问题之前提到过编辑后的像素化。这是我如何配置我的编码器:Video_format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL,interval);Video_fo

Android MediaCodec简单总结

#.MedaiCodec简介  MediaCodec是Android中提供的音视频编码、解码工具。它主要是完成上层接口的封装,提供给开发者使用,编解码功能实际是在native底层服务中完成的。#.MediaCodec工作的宏观流程:##.包换两个缓冲区队列一个输入缓冲区队列,包含一组输入缓冲区(格式ByteBuffer);一个输出缓冲区队列,包含一组输出缓冲区(格式ByteBuffer);##.使用中,需要不断重复以下过程:1.把原始数据放入输入缓冲区队列中一个空缓冲区上;2.编/解码器从输入缓冲队列中获取缓冲区上数据,进行编码处理,结果存放到输出缓冲区上一个空缓冲区上,    处理完毕后,释