android直播sdk包源码,在android下做直播的可以参考,通过rtmp推流

android直播sdk包源码,在android下做直播的可以参考,通过rtmp推流它从浏览器发出第一个HTTP请求即可认为是会话的开始,但是会话结束的时间是不确定的,因为在浏览器关闭的时候并不会通知服务器,一般Tomcat设置的默认时间为120分钟,也可以进行设置,或者是强制结束当前会话。作用域:如果不进行手工删除,它们将一直可以使用,也就是当服务器开始到服务器结束的这段时间,application作用域中存储的数据都是有效的,所有用户均可使用。作用域:当一台电脑上的同意浏览器对服务器进行多次访问的时候,在这多次访问之间传递信的信息就是session作用域的范围。

h264编码,可以通过AndroidMediaCodec进行硬件编码,也可以通过x264进行软件编码,这里因为要复用以前的代码,决定使用软件编码来验证 RTMP协议封装,这部分代码,直接使用之前的C++代码即…

android直播sdk包文件:url80.ctfile.com/f/25127180-734383495-a3be50?p=551685 (访问密码: 551685)


request是表示一个请求,只要发出一个请求就会创建一个request
用处:常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。

session概述:
服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。
会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。
用处:常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。

application概述:
Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。
ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象;
用处:ServletContext对象一般用于在多个客户端间共享数据时使用;

具体案例
我写了一个小demo,大家可以看一下,下面这是代码。

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(“/getCount”)
public class CountServlet extends HttpServlet {

@Override
protected void service(HttpServletRequest requset, HttpServletResponse response) throws ServletException, IOException {

// super.service(req, resp);

    Integer countRequset = (Integer) requset.getAttribute("count");
    if (countRequset==null) {
        countRequset = 0;
    }
    countRequset++;
    requset.setAttribute("count",countRequset);
    System.out.println("ok");

    Integer countSession = (Integer) requset.getSession().getAttribute("count");
    if (countSession==null) {
        countSession = 0;
    }
    countSession++;
    requset.getSession().setAttribute("count",countSession);

    Integer countContext = (Integer) requset.getSession().getServletContext().getAttribute("count");
    if (countContext==null) {
        countContext = 0;
    }
    countContext++;
    requset.getSession().getServletContext().setAttribute("count",countContext);

    requset.getRequestDispatcher("WEB-INF/page/count_page.jsp").forward(requset,response);

}

}
我在代码中申明了三个变量,都是count,不同就在于不是同一个空间中的变量,我们来浏览器看看效果:

这是在一个浏览器中,第一次进入之后的效果。
image

我在这个浏览器中刷新8次:
image
可以看到,每次的请求都是1,其他的随着我的刷新次数而增加。

我在其他浏览器输入相同的访问网址:
image
可以看到,请求和会话都重置,只有服务器的次数是上一次的再加1。

上面是具体效果,下面我们来详细的看看他们
三者共同作用
三者共同目的:
requset,session,application三者存在的意义就是前后端进行数据传输。
三者使用各自的作用域进行传递数据和存储数据

三者共有的常用属性:
getAttribute()与setAttribute()

后端要通过getAttribute()进行数据的获取以及通过setAttribute()进行设置属性,然后数据被前端使用。
所以三者都可以通过 setAttribute() 赋值和 getAttribute() 取值。
同时还有其他类如removesetAttribute()等属性,不做详解。

三者主要区别
三者作用域不同
作用域大小为

requset(请求作用域)< session(会话作用域) < application(全局作用范围)

request:

第一个作用域是request,他仅在当前请求中有效。
作用域:一次HTTP请求到服务器处理结束,返回响应的整个过程。

session:

第二个作用域是session,他在当前会话有效。
作用域:当一台电脑上的同意浏览器对服务器进行多次访问的时候,在这多次访问之间传递信的信息就是session作用域的范围。

application:

第三个作用域是application,它所在的所有应用程序中都有效。
作用域:如果不进行手工删除,它们将一直可以使用,也就是当服务器开始到服务器结束的这段时间,application作用域中存储的数据都是有效的,所有用户均可使用。

request、session以及application这3个对象的作用域范围是逐个增加的:
request只在一个请求的范围内;
session 是在浏览器窗口的范围内;
application则是在整个服务器的运行过程中。
作用域选择不正确会有什么后果:
作用域小了:不能在需要的场景获得数据。
作用域大了:内存浪费。
如何正确的选择作用域
request:跟当前操作功能相关
session: 跟用户信息相关
application:跟项目全局信息相关—–>京东配送地址
注意事项(备注&扩展)
request
request对象内数据存活范围是当客户端向服务器发送一个请求,服务器向客户端返回一个响应之后,该请求对象就被销毁了。之后再次发送的请求也无法获取之前request对象存放的任何数据。

session
session是服务器端对象,保存在服务器端。并且服务器可以将创建session后产生的sessionid通过一个cookie返回给客户端,以便下次验证。(session底层依赖于cookie)
它从浏览器发出第一个HTTP请求即可认为是会话的开始,但是会话结束的时间是不确定的,因为在浏览器关闭的时候并不会通知服务器,一般Tomcat设置的默认时间为120分钟,也可以进行设置,或者是强制结束当前会话。

其他
这三者的setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法。

今天的文章android直播sdk包源码,在android下做直播的可以参考,通过rtmp推流分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24101.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注