流媒体程序开发之H264解码器移植到OPhone - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-21
final int VideoHeight = 288; private ImageView ImageLayout = null; private TextView FPSLayout = null; private H264decode Decode = null; private Handler H = null; private byte[] Buffer = null; private int DecodeCount = 0; private long StartTime = 0; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageLayout = (ImageView) findViewById(R.id.ImageView); FPSLayout = (TextView) findViewById(R.id.TextView); Decode = new H264decode(); StartTime = System.currentTimeMillis(); new Thread(new Runnable(){ public void run() { StartDecode(); } }).start(); H = new Handler(){ public void handleMessage(Message msg) { ImageLayout.invalidate(); ImageLayout.setImageBitmap(BitmapFactory.decodeByteArray(Buffer, 0, Buffer.length)); long Time = (System.currentTimeMillis()-StartTime)/1000; if(Time > 0){ FPSLayout.setText("雑継扮寂:" + Time + "昼 盾鷹屐方:" + DecodeCount + " FPS:" + (DecodeCount/Time) ); } } }; } private void StartDecode(){ File h264file = new File("/tmp/Demo.264"); InputStream h264stream = null; try { h264stream = new FileInputStream(h264file); ByteBuffer pInBuffer = ByteBuffer.allocate(51200);//蛍塘50k議産贋 ByteBuffer pRGBBuffer = ByteBuffer.allocate(VideoWidth*VideoHeight*3); while (h264stream.read(pInBuffer.array(), pInBuffer.position(), pInBuffer.remaining()) >= 0) { pInBuffer.position(0); do{ int DecodeLength = Decode.DecodeOneFrame(pInBuffer, pRGBBuffer); //泌惚盾鷹撹孔?委盾鷹竃栖議夕頭?幣竃栖 if(DecodeLength > 0 && pRGBBuffer.position() > 0){ //廬算RGB忖准葎BMP BMPImage bmp = new BMPImage(pRGBBuffer.array(),VideoWidth,VideoHeight); Buffer = bmp.getByte(); H.sendMessage(H.obtainMessage()); |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于流媒体程序开发之H264解码器移植到OPhone - 编程入门网的所有评论