当前位置: 代码迷 >> Android >> android!怎么加快h264解码速度?352*288
  详细解决方案

android!怎么加快h264解码速度?352*288

热度:44   发布时间:2016-05-01 21:07:29.0
android!如何加快h264解码速度?352*288
我从论坛中到一个android上的h264解码器,但解码速度很慢,图像也不大,只有352*288,播放出来完全是慢动作
请问大侠们,如何提高速度啊!!!
源码如下!
package h264.com;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;//////////////////////////////////////////////////////////////////
import android.graphics.Paint;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;




public class H264Android extends Activity {//有关窗口的各种事宜都在Activity中声明

VView vv;

  @Override
  public void onCreate(Bundle savedInstanceState) {//建立并显示一个窗口
  super.onCreate(savedInstanceState);
  vv = new VView(this);
  setContentView(vv);
  }
   
  // Menu item Ids
  public static final int PLAY_ID = Menu.FIRST;  
  public static final int EXIT_ID = Menu.FIRST + 1; 

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
  super.onCreateOptionsMenu(menu);
   
  menu.add(0, PLAY_ID, 0, R.string.play);  
  menu.add(0, EXIT_ID, 1, R.string.exit);

  return true;
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {  
case PLAY_ID:
{
// 此处设定不同分辨率的码流文件
 
String file = "/sdcard/352x288.h264"; //352x288.264"; //240x320.264"; 
vv.PlayVideo(file);

return true;
}
case EXIT_ID:
{
finish();
return true;
}
  }
  return super.onOptionsItemSelected(item);
  }
}//至此,对窗口的各种说明都完成

class VView extends View implements Runnable{
   
  Bitmap mBitQQ = null;  
   
  Paint mPaint = null;  
   
  Bitmap mSCBitmap = null;  
   
  Matrix matrix = new Matrix(); ////////////////////////////////////////////////////////////////////////////

   
  int width = 352; // 此处设定不同的分辨率
  int height = 288;

  byte [] mPixel = new byte[width*height*2];//创建一个字符串mPixel,单位为byte,个数为width*height*2
   
  ByteBuffer buffer = ByteBuffer.wrap( mPixel );//将mPixel中的元素打包在Buffer中
Bitmap VideoBit = Bitmap.createBitmap(width, height, Config.RGB_565); //以参数所要求的格式创建一个bitmap  
   
int mTrans=0x0F0F0F0F;

String PathFileName; 

  public native int InitDecoder(int width, int height);
  public native int UninitDecoder(); 
  public native int DecoderNal(byte[] in, int insize, byte[] out);
   
  static {
  System.loadLibrary("H264Android");
  }
   
  public VView(Context context) {//构造函数
  super(context);
  setFocusable(true);//使当前视图focused
   
  int i = mPixel.length;
 
  for(i=0; i<mPixel.length; i++)
  {
  mPixel[i]=(byte)0x00;//将mPixel中每个元素初始化为零
  }
  }
   
  相关解决方案