Skip to content

android流媒体播放器,主要用于播放网络直播视频(斗鱼等)

Notifications You must be signed in to change notification settings

068089dy/streaming_media_player

Repository files navigation

实现转播斗鱼直播平台的直播视频。

1.android-player-sdk-master

播放器原工程文件:这里

2.import_demo

播放器sdk导入的demo 需要注意的地方 1.权限 2.gradle 3.jniLibs文件夹导入

3.Material-BottomNavigation-master

这里的底部导航菜单demo

4.MyApplication2

一个未成形的demo

抓取斗鱼直播源的方法,斗鱼不定时会变,来自这里

==== 2017.4.7测试有效 ====

public void getStreamUrl(final int roomId) {
  //get请求地址
  String url = "http://coapi.douyucdn.cn/lapi/live/thirdPart/getPlay/"+roomId+"?rate=0";

  //volley
  StringRequest request = new StringRequest(Request.Method.GET, url,new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
      Log.i(TAG, response);
    }
  }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {

    }
  }) {
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
      return getDouyuRoomParams(roomId);
    }
  };

  //将request加入请求队列
  mRequestQueue.add(request);

  //查看信息
  try {
    System.out.println("请求头:"+request.getHeaders());
    System.out.println("请求BodyContentType:"+request.getBodyContentType());
    System.out.println("请求CacheKey:"+request.getCacheKey());
    System.out.println("请求Url:"+request.getUrl());
    System.out.println("请求Method:"+request.getMethod());
    System.out.println("请求Tag:"+request.getTag());
  }catch(Exception e){

  }

}

/*
* 请求头
*/
public HashMap<String, String> getDouyuRoomParams(int roomId) {
  int time = (int) (System.currentTimeMillis()/1000);
  String signContent = "lapi/live/thirdPart/getPlay/" + roomId + "?aid=pcclient&rate=0&time=" + time + "9TUk5fjjUjg9qIMH3sdnh";
  String sign = strToMd5Low32(signContent);

  HashMap<String, String> map = new HashMap<>();
  map.put("auth", sign);
  Log.i(TAG,"auth:"+sign);
  map.put("time", Integer.toString(time));
  Log.i(TAG,"time:"+Integer.toString(time));
  map.put("aid", "pcclient");

  return map;
}

/*
* 加密str
*/
public static String strToMd5Low32(String str) {
  StringBuilder builder = new StringBuilder();
  try {
    MessageDigest md5 = MessageDigest.getInstance("MD5");
    md5.update(str.getBytes());
    byte[] bytes = md5.digest();
    for (byte b : bytes) {
      int digital = b&0xff;
      if (digital < 16)
        builder.append(0);
      builder.append(Integer.toHexString(digital));
    }
  } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
  }
  return builder.toString().toLowerCase();
}

抓取熊猫直播源的方法

== 2017.4.7更新 ==
public String getPandaStream(final int roomId, final UrlListener urlListener){
        String url = "http://api.homer.panda.tv/chatroom/getinfo?roomid="+roomId;
        //获取roominfo
        StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                try {
                    JSONObject jsonObject = new JSONObject(s);
                    String data1 = jsonObject.getString("data");
                    JSONObject jsonObject1 = new JSONObject(data1);
                    final String ts = jsonObject1.getString("ts");
                    final String sign = jsonObject1.getString("sign");
                    final String rid = jsonObject1.getString("rid");
                    String api_url = "http://www.panda.tv/api_room_v2?roomid="+roomId+"&_="+ts;
                    System.out.println("pandaurl:"+api_url);
                    //获取room_key
                    RequestQueue mRequestQueue1 = Volley.newRequestQueue(mContext);
                    StringRequest request1 = new StringRequest(Request.Method.GET, api_url, new Response.Listener<String>() {
                        @Override
                        public void onResponse(String s) {
                            try {
                                JSONObject jsonObject = new JSONObject(s);
                                String data1 = jsonObject.getString("data");
                                //System.out.println("pandaurl:"+data1);
                                jsonObject = new JSONObject(data1);
                                String videoinfo = jsonObject.getString("videoinfo");
                                //System.out.println("videoinfo:"+videoinfo);
                                jsonObject = new JSONObject(videoinfo);
                                String roomkey = jsonObject.getString("room_key");
                                //System.out.println("room_key:"+roomkey);
                                String plflag = jsonObject.getString("plflag");
                                String plflag1 = plflag.split("_")[1];

                                String live_url = "http://pl"+plflag1+".live.panda.tv/live_panda/"+roomkey+".flv?sign="+sign+"&time=&ts="+ts+"&rid="+rid;
                                System.out.println("livepandaurl:"+live_url);
                                return live_url;
                            }catch(Exception e){
                                return "error";
                            }
                        }
                    }, new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError volleyError) {
                            return "error";
                        }
                    });
                    mRequestQueue1.add(request1);

                }catch (Exception e){
                    return "error";
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                return "error";
            }
        });
        mRequestQueue.add(request);
    }

反编译笔记

blog.csdn.net/guolin_blog/article/details/49738023

ubuntu下安转jd-gui是依赖:

sudo apt-get install libgtk2.0-0:i386 libxxf86vm1:i386 libsm6:i386 lib32stdc++6

About

android流媒体播放器,主要用于播放网络直播视频(斗鱼等)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages