基于NanoHttpd的Android视频服务器开发

基于NanoHttpd的Android视频服务器开发,第1张

基于NanoHttpd的Android视频服务开发

NanoHttpd是一个非常强大的开源系统库。仅仅使用一个Java类,它就完成了一个轻量级的Web服务器,可以很容易的集成到Android应用中,可以对你的app应用HTTPGET、POST、PUT、HEAD、DELETE请求。


为了更好的展示它的功能,我用这个库搭建了一个简单的Android视频服务器,可以根据PC浏览器远程控制播放Android手机内存中的视频mp4视频文件。


1。实际演示效果


左边是手机App页面,右边是电脑上浏览器远程播放视频的实际效果。



2。源代码的详细地址


演示源代码的详细地址:https://github.com/Jhuster/Android/tree/master/VideoServer,你也可以直接从本博客的附件下载。


注:申请前,请将movie.mp4文件从代码根目录复制到手机上SDCard网站的根目录下。


3。原则


(1)NanoHTTPD


这是http://nanohttpd.org/纳米技术发展中心的官方网站


免费下载该库并将其添加到您的Android项目中,就可以应用NanoHTTPD类了。这个类最重要的三个函数是start(),stop(),用于启动和终止Web服务器,serve(),是接收浏览器请求后的回调函数,可以在这个函数内将响应HTTP网页返回给浏览器。


下面是所有返回404错误的请求的一个非常简单的例子:


public class VideoServer extends NanoHTTPD {     public VideoServer(int port) {         super(port);     }     @Override     public Response serve(IHTTPSession session) {                 StringBuilder builder = new StringBuilder();         builder.append("<!DOCTYPE html><html><body>");                 builder.append("404 -- Sorry, Can't Found " session.getUri()  " !");                 builder.append("</body></html>\n");         return new Response(builder.toString());     } }


其中IHTTPSession类呈现了一系列的套接字,用来区分浏览器的请求内容,包括:GET/PUT的类型,请求的URL等。为此,您可以执行服务项目或返回对面的网页,以区分不同的请求。


(2)在浏览器中播放歌曲


要根据浏览器立即播放歌曲,现阶段最常见的方法有两种,一种是选择Flash播放软件,另一种是使用HTML5logo,本文采用的就是这种方法。


最下面是Android收到HTTP请求后返回的HTML5网页。参考HTML5教程。


<!DOCTYPE HTML> <html> <body> <video width="320" height="240" controls="controls"> <source src="/storage/emulated/0/movie.mp4" type="video/mp4">     Your browser doestn't support HTML5 </video> </body> </html>


收到HTML5网页后,浏览器将进一步请求


 public Response responseVideoStream(IHTTPSession session,String videopath) {      try {          FileInputStream fis = new FileInputStream(videopath);          return new NanoHTTPD.Response(Status.OK, "video/mp4", fis);      }       catch (FileNotFoundException e) {                  e.printStackTrace();          return new Response("Error");      }   }


4。摘要


这里简单详细的介绍了如何使用NanoHttpd开发设计Android视频服务器。期待能给大家提供一些帮助。如有任何疑问或建议,热烈欢迎留言板或来信与交流,或关注我的微博@Lu_Jun获取全新的文章和新闻资讯。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/779833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存