创建android rtsp 播放器 支持TCP控制服务端录像

1.思路
 RTSP 协议和解码采用VLC核心库libvlc。
2.移植libvlc库
环境 ubuntu 10.4 
安装工具
apt-get install gitcore
apt-get install gcc
apt-get install g++
apt-get install autoconf
apt-get install automake
这只是一部分 后面需要再装 
下周 andriod vlc 工程  
下载代码 git clone git://git.videolan.org/vlc-ports/android.git
进入 android-vlc 目录 
执行 sh compile.sh
有几个问题 主要 
ANDROID_NDK 全局变量 

<!---
        android:minSdkVersion="10"   //支持的最小版本,兼容低版本
        android:targetSdkVersion="18" //当前编译的版本
-->
3.使用官方工程创建VLC播放器测试
将vlc-android、SlidingMenu、appcompat、WheelView 添加到eclipse中,build生成VLC.apk
4.创建自己的播放器
创建videoview ,拷贝libvlcjni.so、libiomx-ics.so、libiomx-hc.so、libiomx-gingerbread.so 动态库到工程的lib目录
参考VLC程序,初始化mlibvlc实例
        try {
            mLibVLC = VLCInstance.getLibVlcInstance();
        } catch (LibVlcException e) {
            Log.i(TAG, "LibVLC.getInstance() error:" + e.toString());
            e.printStackTrace();
            return;
        }
        mLibVLC.eventVideoPlayerActivityCreated(true);
        mLibVLC.setNetworkCaching(3000);//设置缓存 貌似作用不大
        mLibVLC.setHardwareAcceleration(2); //设置硬件解码

         mLibVLC.setMediaList();
         rtspmedia = new Media( mLibVLC, rtspurl);
         mLibVLC.getMediaList().add(rtspmedia);
         savedIndexPosition = mLibVLC.getMediaList().size() - 1;
         //mLibVLC.playIndex(index);
         //mLibVLC.play();
         Log.i("leon",rtspurl);
         mLibVLC.playMRL(rtspurl);

5.增加TCP client
由于4.0以后不能再主线程操作socket ,绕了一大圈才发现这个问题(本人第一开发android),创建两个线程,一个发送线程通过全局标识控制发送信号,另一个实时获取状态
    public class SendThread extends Thread {
    private Socket clientSocket = null;    
        byte[] cmdBuffer = null;
        byte[] mforce = null;
        byte[] Aforce = null;
        @Override
        
        public void run() {
        InetSocketAddress addr = new InetSocketAddress(ip_adress,7236);
       
        try {
        //mforce AUTOFOCUS
        mforce = "MANUALFOCUS\r\n".getBytes("utf-8"); 
        Aforce = "AUTOFOCUS\r\n".getBytes("utf-8");  
        }catch   (IOException e) {
         
        }
         
        while (true)
        {
            try {
           
            if (!g_command.equals(""))
        {
//..............................
}
} catch (UnknownHostException e) {
               // TODO Auto-generated catch block
            e.printStackTrace();
            connected = false;
            clientSocket = null;
           } catch (IOException e) {
               // TODO Auto-generated catch block
            e.printStackTrace();
            connected = false;
            clientSocket = null;                
           }
}
};
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值