快速业务通道

流媒体程序开发之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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号