小编Rea*_*ark的帖子

如何使用Android MediaCodec编码相机数据(YUV420sp)

谢谢你的关注!我想使用Android MediaCodec API对从Camera获取的视频帧进行编码,遗憾的是,我没有成功做到这一点!我仍然不熟悉MediaCodec API.以下是我的代码,我需要你的帮助来弄清楚我应该做什么.

1,相机设置:

Parameters parameters = mCamera.getParameters();
parameters.setPreviewFormat(ImageFormat.NV21);
parameters.setPreviewSize(320, 240);
mCamera.setParameters(parameters);
Run Code Online (Sandbox Code Playgroud)

2,设置编码器:

private void initCodec() {
    try {
        fos = new FileOutputStream(mVideoFile, false);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    mMediaCodec = MediaCodec.createEncoderByType("video/avc");
    MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc",
            320,
            240);
    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);
    mMediaCodec.configure(mediaFormat,
            null,
            null,
            MediaCodec.CONFIGURE_FLAG_ENCODE);
    mMediaCodec.start();
    inputBuffers = mMediaCodec.getInputBuffers();
    outputBuffers = mMediaCodec.getOutputBuffers();
}

private void encode(byte[] data) {
    int inputBufferIndex = mMediaCodec.dequeueInputBuffer(0);
    if (inputBufferIndex >= 0) {
        ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
        inputBuffer.clear(); …
Run Code Online (Sandbox Code Playgroud)

android video-encoding h.264 android-camera

13
推荐指数
2
解决办法
2万
查看次数

Android MediaCodec解码h264原始帧

我正在使用Android MediaCodec API来解码h264帧.我可以在视图上解码和渲染帧.我的问题是解码器错过了很多帧,特别是前几帧.DecodeMediaCodec.dequeueOutputBuffer()返回-1.a约150 h264帧,刚解码43帧.我找不到问题所在.这是我的代码.

 /**
 * init decoder
 */
private void initDecodeMediaCodec()
{
    mDecodeMediaCodec = MediaCodec.createDecoderByType(MIME_TYPE);
    MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE,
            VIDEO_WIDTH_640,
            VIDEO_HEIGHT_480);

    mDecodeMediaCodec.configure(format,
            new Surface(mRemoteVideoView.getSurfaceTexture()),
            null,
            0);
    mDecodeMediaCodec.start();
    mDecodeInputBuffers = mDecodeMediaCodec.getInputBuffers();
    System.out.println("decode-----"
            + mDecodeMediaCodec.getCodecInfo().getName());
}
Run Code Online (Sandbox Code Playgroud)

解码器初始化后,我将启动解码器线程.

 /**
 * 
 * @param frameData
 */
private void decode()
{
    new Thread(new Runnable()
    {
        @Override
        public void run()
        {
            while (true)
            {
                ByteBuffer decodeDataBuffer = null;
                try
                {
                    //take h264 frame from cache queue
                    decodeDataBuffer = decodeDataQuene.take();
                }
                catch (InterruptedException e)
                { …
Run Code Online (Sandbox Code Playgroud)

android decode mediacodec

9
推荐指数
1
解决办法
1万
查看次数

使用谷歌驱动器api让孩子没有垃圾

如何获取文件夹的子文件而不删除已删除的文件,我的代码如下:

 Children children = service.children();
 Drive.Children.List request = children.list("root");
  do
  {
    try
       {
          ChildList cList = request.execute();
          for (ChildReference cr : cList.getItems())
           {
              File file = service.files().get(cr.getId())   .execute();
              System.out.println(file.getTitle() + "--"+ file.getMimeType());
           }
        request.setPageToken(cList.getNextPageToken());
       }
   catch (IOException e)
      {
          System.out.println("An error occurred: " + e);
          request.setPageToken(null);
      }
 } while (request.getPageToken() != null && request.getPageToken().length() > 0);
Run Code Online (Sandbox Code Playgroud)

java google-drive-api

6
推荐指数
2
解决办法
3311
查看次数

Android MediaCodec可以解码视频h264流吗?

我将使用Android MediaCodec解码h264视频流,我想知道如何做到这一点.提前致谢!

android decode video-streaming h.264

6
推荐指数
0
解决办法
2551
查看次数