- 浏览: 1068531 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
根据网上的代码,自己整理了一下,做了一个录像的客户端。
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
- creationComplete="init()">
- <mx:Script>
- <![CDATA[
- import mx.controls.Alert;
- private var nc:NetConnection = null;
- private var ns:NetStream = null;
- private var video:Video = null;
- private var camera:Camera = null;//定义一个摄像头
- private var mic:Microphone; //定义一个麦克风
- private var rtmp_url:String = "rtmp://192.168.61.115/red5_app";
- private var videoName:String = ""; //视频保存名字
- private function init():void{
- //nc = new NetConnection();
- setupCameraAndMic(); //该方法表示初始化摄像头和麦克风,代码以后都可以直接复制用
- }
- private function setupCameraAndMic():void{
- camera = Camera.getCamera();
- if(camera != null){
- camera.addEventListener(StatusEvent.STATUS,cameraStatus);
- camera.setMode(320,240,30);
- camera.setQuality(0,70);
- video = new Video();
- video.width = 320;
- video.height = 240;
- video.attachCamera(camera);
- videoPlay.addChild(video);
- }
- mic = Microphone.getMicrophone();
- if(mic != null){
- mic.addEventListener(StatusEvent.STATUS,micStatus);
- mic.setSilenceLevel(0,-1); //设置麦克风保持活动状态并持续接收集音频数据
- mic.gain = 80; //设置麦克风声音大小
- }
- }
- private function cameraStatus(event:StatusEvent):void{
- if(!camera.muted){
- startRecord.enabled = true;
- //error_label.text = error_label.text + "1";
- }else{
- error_label.text = error_label.text + " 无法找到摄像头"
- }
- //camera.removeEventListener(StatusEvent.STATUS,cameraStatus);
- }
- /* 好像麦克风没法检测,测试过拔掉麦克风,但是没效果 */
- private function micStatus(event:StatusEvent):void{
- if(!mic.muted){
- startRecord.enabled = true;
- //error_label.text = error_label.text + "2";
- }else{
- error_label.text = error_label.text + " 无法找到麦克风";
- }
- //mic.removeEventListener(StatusEvent.STATUS,micStatus);
- }
//以上代码都是直接复制过来用的,通用的,下面的代码才是真正要写的
- /*点击 开始录像 按钮*/
- private function clickStartRecord():void{
- nc = new NetConnection();
- nc.addEventListener(NetStatusEvent.NET_STATUS,nsHandler);
- nc.connect(rtmp_url); //连接red5
- //doStart();
- }
- private function nsHandler(evt:NetStatusEvent):void{
- if(evt.info.code == "NetConnection.Connect.Success"){ //如果连接成功
- doStart();
- }else{
- Alert.show("连接失败");
- }
- }
- /*开始录像*/
- private function doStart():void{
- if(video != null){
- video.clear();
- videoPlay.removeChild(video);
- video = new Video();
- video.width = 320;
- video.height = 240;
- video.attachCamera(camera);
- videoPlay.addChild(video);
- }
- ns = new NetStream(nc);
- ns.attachCamera(camera);
- ns.attachAudio(mic);
- videoName = "tuping_"+Math.random()+getTimer();
- ns.publish(videoName,"record");
- startRecord.enabled = false;
- stopRecord.enabled = true;
- }
- private function clickStopRecord():void{
- ns.close();
- video.clear();
- videoPlay.removeChild(video);
- startRecord.enabled = true;
- stopRecord.enabled = false;
- init();/*重新初始化Camera,否则Camera会默认使用完了,不再显示图像*/
- }
- ]]>
- </mx:Script>
- <mx:Panel x="213" y="175" width="360.5" height="301" layout="absolute">
- <mx:VideoDisplay x="10" y="10" width="320" height="240" id="videoPlay"/>
- </mx:Panel>
- <mx:Button x="270" y="498" label="开始录像" id="startRecord"
- click="clickStartRecord()" enabled="false"/>
- <mx:Button x="432" y="498" label="停止录像" id="stopRecord"
- click="clickStopRecord()" enabled="false"/>
- <!--
- <mx:Button x="442" y="498" label="播放录像" id="playRecord" enabled="false"/>
- -->
- <mx:Label text="错误:" x="213" y="544" width="360.5" height="25"
- id="error_label" fontSize="12"/>
- </mx:Application>
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.controls.Alert; private var nc:NetConnection = null; private var ns:NetStream = null; private var video:Video = null; private var camera:Camera = null;//定义一个摄像头 private var mic:Microphone; //定义一个麦克风 private var rtmp_url:String = "rtmp://192.168.61.115/red5_app"; private var videoName:String = ""; //视频保存名字 private function init():void{ //nc = new NetConnection(); setupCameraAndMic(); } private function setupCameraAndMic():void{ camera = Camera.getCamera(); if(camera != null){ camera.addEventListener(StatusEvent.STATUS,cameraStatus); camera.setMode(320,240,30); camera.setQuality(0,70); video = new Video(); video.width = 320; video.height = 240; video.attachCamera(camera); videoPlay.addChild(video); } mic = Microphone.getMicrophone(); if(mic != null){ mic.addEventListener(StatusEvent.STATUS,micStatus); mic.setSilenceLevel(0,-1); //设置麦克风保持活动状态并持续接收集音频数据 mic.gain = 80; //设置麦克风声音大小 } } private function cameraStatus(event:StatusEvent):void{ if(!camera.muted){ startRecord.enabled = true; //error_label.text = error_label.text + "1"; }else{ error_label.text = error_label.text + " 无法找到摄像头" } //camera.removeEventListener(StatusEvent.STATUS,cameraStatus); } /* 好像麦克风没法检测,测试过拔掉麦克风,但是没效果 */ private function micStatus(event:StatusEvent):void{ if(!mic.muted){ startRecord.enabled = true; //error_label.text = error_label.text + "2"; }else{ error_label.text = error_label.text + " 无法找到麦克风"; } //mic.removeEventListener(StatusEvent.STATUS,micStatus); } /*点击 开始录像 按钮*/ private function clickStartRecord():void{ nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS,nsHandler); nc.connect(rtmp_url); //连接red5 //doStart(); } private function nsHandler(evt:NetStatusEvent):void{ if(evt.info.code == "NetConnection.Connect.Success"){ //如果连接成功 doStart(); }else{ Alert.show("连接失败"); } } /*开始录像*/ private function doStart():void{ if(video != null){ video.clear(); videoPlay.removeChild(video); video = new Video(); video.width = 320; video.height = 240; video.attachCamera(camera); videoPlay.addChild(video); } ns = new NetStream(nc); ns.attachCamera(camera); ns.attachAudio(mic); videoName = "vincent_"+Math.random()+getTimer(); ns.publish(videoName,"record"); startRecord.enabled = false; stopRecord.enabled = true; } private function clickStopRecord():void{ ns.close(); video.clear(); videoPlay.removeChild(video); startRecord.enabled = true; stopRecord.enabled = false; init();/*重新初始化Camera,否则Camera会默认使用完了,不再显示图像*/ } ]]> </mx:Script> <mx:Panel x="213" y="175" width="360.5" height="301" layout="absolute"> <mx:VideoDisplay x="10" y="10" width="320" height="240" id="videoPlay"/> </mx:Panel> <mx:Button x="270" y="498" label="开始录像" id="startRecord" click="clickStartRecord()" enabled="false"/> <mx:Button x="432" y="498" label="停止录像" id="stopRecord" click="clickStopRecord()" enabled="false"/> <!-- <mx:Button x="442" y="498" label="播放录像" id="playRecord" enabled="false"/> --> <mx:Label text="错误:" x="213" y="544" width="360.5" height="25" id="error_label" fontSize="12"/> </mx:Application>
如果你使用Flex builder 开发,那相当简单!可以直接运行,记着插上摄像头哦!
忘记吧web.xml 的配置写上了,其实可以复制red5里面的例子工程,但是补上吧,怕太久了忘记了。
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
- version="2.4">
- <display-name>Red5App</display-name>
- <context-param>
- <param-name>Red5App</param-name>
- <param-value>/red5_app</param-value>
- </context-param>
- <listener>
- <listener-class>org.red5.logging.ContextLoggingListener</listener-class>
- </listener>
- <filter>
- <filter-name>LoggerContextFilter</filter-name>
- <filter-class>org.red5.logging.LoggerContextFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>LoggerContextFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <servlet>
- <servlet-name>rtmpt</servlet-name>
- <servlet-class>org.red5.server.net.rtmpt.RTMPTServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <!--
- <servlet>
- <display-name>SecurityTest</display-name>
- <servlet-name>SecurityTest</servlet-name>
- <servlet-class>org.red5.demos.oflaDemo.SecurityTest</servlet-class>
- </servlet>
- -->
- <servlet-mapping>
- <servlet-name>rtmpt</servlet-name>
- <url-pattern>/fcs/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>rtmpt</servlet-name>
- <url-pattern>/open/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>rtmpt</servlet-name>
- <url-pattern>/close/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>rtmpt</servlet-name>
- <url-pattern>/send/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>rtmpt</servlet-name>
- <url-pattern>/idle/*</url-pattern>
- </servlet-mapping>
- <!--
- <servlet-mapping>
- <servlet-name>SecurityTest</servlet-name>
- <url-pattern>/securitytest</url-pattern>
- </servlet-mapping>
- -->
- <!--
- <security-constraint>
- <web-resource-collection>
- <web-resource-name>Forbidden</web-resource-name>
- <url-pattern>/streams/*</url-pattern>
- </web-resource-collection>
- <auth-constraint/>
- </security-constraint>
- -->
- </web-app>
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Red5App</display-name> <context-param> <param-name>Red5App</param-name> <param-value>/red5_app</param-value> </context-param> <listener> <listener-class>org.red5.logging.ContextLoggingListener</listener-class> </listener> <filter> <filter-name>LoggerContextFilter</filter-name> <filter-class>org.red5.logging.LoggerContextFilter</filter-class> </filter> <filter-mapping> <filter-name>LoggerContextFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>rtmpt</servlet-name> <servlet-class>org.red5.server.net.rtmpt.RTMPTServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- <servlet> <display-name>SecurityTest</display-name> <servlet-name>SecurityTest</servlet-name> <servlet-class>org.red5.demos.oflaDemo.SecurityTest</servlet-class> </servlet> --> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/fcs/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/open/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/close/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/send/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/idle/*</url-pattern> </servlet-mapping> <!-- <servlet-mapping> <servlet-name>SecurityTest</servlet-name> <url-pattern>/securitytest</url-pattern> </servlet-mapping> --> <!-- <security-constraint> <web-resource-collection> <web-resource-name>Forbidden</web-resource-name> <url-pattern>/streams/*</url-pattern> </web-resource-collection> <auth-constraint/> </security-constraint> --> </web-app>
这个配置挺全了。以后可以继续使用的!
发表评论
-
Windows下安装并设置Redis
2017-11-28 14:23 635版权声明:欢迎加入【开源技术交流群】: https:// ... -
由于安全狗导致网站访问出现302重定向问题
2015-08-06 18:14 1710网站开始的时候,碰到这种问题,开始没留意以为是浏览器导致的。后 ... -
windows下使用memcache并修改memcache最大使用内存
2015-02-27 22:42 783将memcache服务器安装包解压到C:\memcached ... -
nginx 日志文件切割
2014-12-13 08:23 839转载:http://www.cnblogs.com/beni ... -
nginx+tomcat7+memcached做集群以及session复制
2014-12-07 22:50 751首先:配置tomcat集群 nginx+ tomcat7 ... -
Memcached入门
2014-11-27 23:17 794Memcached是一个高性能的分布式内存对象缓存系统,用于 ... -
nginx + tomcat 配置,静态资源直接使用nginx
2014-11-26 22:34 982upstream tomcat_server { ... -
Nginx Location配置总结
2014-11-26 22:33 819语法规则: location [=|~|~*|^~] /ur ... -
Memche全站缓存
2014-11-13 17:23 931http://my249645546.iteye.com/bl ... -
煩惱的“java.lang.OutOfMemoryError:PermGen space"異常
2014-11-10 20:48 679最近在做一個jee的項目 ... -
nginx+tomcat实现负载均衡
2014-11-05 22:00 939作者:niumd Blog:http://ari.itey ... -
Tomcat 7优化前及优化后的性能对比
2014-11-05 09:52 1100Tomcat 7在我们日常开发、测试、生产环境都会使用到,但 ... -
resin 加花生壳搭建外网访问服务器
2012-10-08 20:44 1083花生壳发布WEB服务 -
resin 配置session过期
2012-03-23 10:29 1511Session的配置 <session ... -
nginx 解决session共享问题(jvm-route)方式
2012-02-28 13:45 2730前几天看到 http://code.google.com ... -
nginx.conf配置详细说明
2012-02-28 09:15 1321vim conf/nginx.conf#用户 用户组user ... -
nginx 解决session共享问题
2012-02-28 09:19 14521) 不使用session,换作cookie能把sessio ... -
java.lang.NoClassDefFoundError: com/caucho/make/PersistentDependency
2012-02-28 08:09 1778之前一直用resin-pro-3.0.22,这两天由于工作需要 ... -
玩玩负载均衡---在window与linux下配置nginx
2012-02-27 14:29 1427最近有些时间,开始接触负载均衡方面的东西,从硬件F5再到Cit ... -
squid 配置缓存服务器
2011-12-31 13:40 1616Squid for Windows 简介 是大家也许不知道, ...
相关推荐
red5 学习笔记 随便写的一些东西,没多大用,有点乱,看着下载吧。
**Red Hat Linux 9 讲义及学习笔记(基础)** Red Hat Linux 9 是一款历史悠久的开源操作系统,它是基于Linux内核的发行版,专为服务器和工作站环境设计。这款系统以其稳定性、安全性和易用性而备受赞誉,尤其适合...
以下是对"Javajdk5学习笔记"中可能包含的知识点的详细解析: 1. **自动装箱与拆箱**:JDK 5引入了自动装箱和拆箱功能,使得基本类型和它们对应的包装类之间可以无缝转换,提高了代码的简洁性。例如,`Integer i = ...
**良葛格JDK5学习笔记** 在Java编程领域,JDK5是一个重要的里程碑,它引入了许多创新特性,极大地提升了开发效率和代码质量。本文将深入探讨这些关键知识点,为初学者提供一个全面的JDK5学习指南。 一、自动装箱与...
3. **学习笔记结构**:教程按照章节顺序展开,从基础到进阶,包括了从第一章到第十六章的内容。章节涵盖了从安装Linux系统,到基本命令操作,再到系统管理等各个方面。 4. **命令行操作**:在"兄弟连linux教程1-5章...
《CSS经典学习笔记》 CSS(Cascading Style Sheets)是网页设计中不可或缺的一部分,它负责定义网页内容的样式和布局。本学习笔记将深入探讨CSS的核心概念、选择器、盒模型、布局方式以及响应式设计等多个方面,...
GlusterFS 学习笔记 GlusterFS 是一种开源的分布式文件系统,它可以将多个硬盘组合成一个大型存储系统,提供高性能、可扩展性和高可用性的存储解决方案。下面是 GlusterFS 的一些重要知识点: 1. Raid 概念 Raid...
本学习笔记旨在帮助新手全面理解并掌握Java 5.0的关键知识点。 一、泛型(Generics) Java 5.0引入了泛型,它允许在定义类、接口和方法时指定类型参数,从而实现类型安全的集合。泛型消除了强制类型转换的需要,...
在“HTML基础学习笔记”中,我们可以深入理解HTML的基本结构、样式控制、超链接、图像和表格的使用,以及列表的创建。 首先,HTML的基本结构由`<html>`、`<head>`和`<body>`三个主要部分组成。`<html>`是整个文档的...
Red5是一款开源的流媒体服务器,它基于几个关键的技术组件构建,包括Jetty、Mina和...通过对Red5的学习和研究,我们可以深入了解流媒体服务的运作机制,并掌握如何利用这些工具来满足各种复杂的在线视频和音频需求。
这份“Linux学习笔记”涵盖了多个关键主题,旨在帮助初学者及进阶用户深入理解和掌握Linux系统。 《Linux一句话精彩问答.doc》可能包含了一系列关于Linux日常使用、命令行操作、系统管理等方面的简洁问答,比如如何...
### Qt学习笔记知识点详解 #### 一、从Hello Qt开始 **知识点1:Qt程序的基本结构** - **头文件引入**: - 第1行和第2行代码中,`#include <QApplication>` 和 `#include <QLabel>` 是引入Qt中的两个类:`...
### Redhat Enterprise Linux 5 学习笔记知识点总结 #### 一、Linux系统介绍与安装 **1. Linux的历史背景与发展** - **UNIX系统的诞生**:1970年,贝尔实验室的两位科学家发明了UNIX系统,这标志着现代操作系统的...
### HTML与CSS学习笔记 #### 一、基础知识概述 HTML(HyperText Markup Language)与CSS(Cascading Style Sheets)是构建网页的基础技术。通过学习HTML与CSS,我们可以创建结构化且美观的网页。 - **WWW (World ...
Linux学习笔记 Linux学习笔记是一个关于Linux操作系统的学习笔记,涵盖了Linux的基本概念、安装、配置、命令和应用等方面的知识点。 一、 Linux基本概念 * Linux是一种开源的操作系统,具有安全、稳定的特点。 * ...
### Linux RAID 5 扩容学习笔记 #### 一、概览 本文档是一份针对Linux环境下RAID 5配置与动态扩容的学习笔记。主要内容包括如何动态地向现有的RAID 5组中添加新的硬盘、如何对新硬盘进行格式化并将其加入到RAID 5...
韩顺平 Linux 学习笔记 本学习笔记涵盖了 Linux 的基础知识、Samba 服务的搭建、Web 项目的开发和发布等内容。学习笔记分为多个阶段,从基础的 Linux 平台开发到高级的 Unix 环境编程,并涉及到 Linux 应用系统开发...
### GCC 学习笔记知识点详解 #### 一、GCC简介与版本检查 - **GCC**(GNU Compiler Collection)是一款开源的编译器集合,广泛应用于Linux等类Unix系统上,支持多种编程语言如C、C++等。 - **版本检查**: - 要...