请问怎样处理视频
来源:互联网 发布:护肤品淘宝代购店推荐 编辑:程序博客网 时间:2024/04/29 17:36
查看完整版本: 请问怎样处理视频
binbinming 2007-8-15 11:12
请问怎样处理视频
最近用学习用RED5写视频播放的练习 ,但一头雾水,请版主指教一下我用ECLIPSE 中 加入了FLEX 3的插件,也就可以在ECLIPSE 中简历 FLEX 工程了
我在工程中建立了个主页面,里面的视频是这样写的:
<!-- 视频 -->
<mx:VBox x="553" y="49" width="384" height="443">
<mx:VideoDisplay id="vDisplay" width="362" height="275" playheadUpdate="videoMovie(event)"
bufferTime="0.5" maintainAspectRatio="false"
source="assets/flvMovie/karas.flv" autoPlay="false"/>
<mx:ControlBar id="mainControl" width="365" height="52" borderColor="green">
<mx:Label text="音量" color="black"/>
<!--播放器声音控制 -->
<mx:HSlider id="vcSound" width="80" themeColor="red"
minimum="0" maximum="1"
thumbRelease="soundControl_Relase(event)"
change="soundControl_Changes(event)"
value="{vDisplay.volume}" />
<mx:CheckBox id="vcfull" label="全屏模式" change="showfull()"/>
</mx:ControlBar>
<!-- 视频滑块 -->
<mx:ControlBar id="videoControlHead" width="364" height="40">
<mx:HSlider id="slider" minimum="0"
change="changVideoTime(event)" width="352"
labels="['0%','100%']"/>
</mx:ControlBar>
<mx:HBox width="364" height="32">
<mx:Button id="play"click="{if(vDisplay.playing) vDisplay.stop();vDisplay.play()}"label="播放" fontSize="12" />
<mx:Button id="pause" click="{vDisplay.pause()}" label="暂停" fontSize="12" />
<mx:Button id="stop" click="{vDisplay.stop()}" label="停止" fontSize="12" />
</mx:HBox>
</mx:VBox>
有两个问题,
1: 我是用 FLEX 的标签 videoDisplay 去写的,也就是 指定 source 。
可是我看到有个帖子讲的是关于RTMP 协议的,里面是这样写的:
var videoInstance:Video = your_video_instance;
var nc:NetConnection = new NetConnection();
var connected:Boolean = nc.connect("rtmp:/localhost/myapp");
var ns:NetStream = new NetStream(nc);
videoInstance.attachVideo(ns);
ns.play("flvName");
这样的话我怎么用videoDisplay 去指定上面缩写的 rtmp://xxxxx?一般情况我要在FLEX端写视频广播播放,我应该怎样去写?
2:我写了个全屏的方法 showfull()
方法如下:
private function showfull():void {
try{
if(vcfull.selected){
stage.displayState="fullScreen";
}else{
stage.displayState="normal";
}
}catch(e : Error){
Alert.show(e.message);
}
}
可我点击全屏时候 提示我安全原因不行: 2152 Full screen mode is not allowed.
D5Power 2007-8-15 12:16
问题1:videoInstance.attachVideo(ns);
这句就是指明用哪个对象来播放视频的图象,比如你的例子中,就应该是vDisplay.attachVideo(ns);
问题2:
只在FLASH里面写全屏是不起作用的,必须在HTML允许该FLASH全屏幕。代码为
<param name="allowFullScreen" value="true" />
这句就是指明用哪个对象来播放视频的图象,比如你的例子中,就应该是vDisplay.attachVideo(ns);
问题2:
只在FLASH里面写全屏是不起作用的,必须在HTML允许该FLASH全屏幕。代码为
<param name="allowFullScreen" value="true" />
binbinming 2007-8-15 13:27
OK , 非常感谢版主啊
binbinming 2007-8-15 13:30
videoDisplay 中好像没有 attachVideo ,只有 attach摄像头的,而且我自己写个 var xx:Video() 对象 不能用 attachVideo()这个方法
binbinming 2007-8-15 13:38
video.attachNetStream(stream); ?
binbinming 2007-8-15 13:39
现在是这个错误 。咋回事?
ArgumentError: Error #2126: 必须连接 NetConnection 对象。
at flash.net::NetStream/flash.net:NetStream::construct()
at flash.net::NetStream$iinit()
at red5Demo/::init()
at red5Demo/___Application1_creationComplete()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()
at mx.core::UIComponent/set initialized()
at mx.managers::LayoutManager/::doPhasedInstantiation()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/::callLaterDispatcher2()
at mx.core::UIComponent/::callLaterDispatcher()
ArgumentError: Error #2126: 必须连接 NetConnection 对象。
at flash.net::NetStream/flash.net:NetStream::construct()
at flash.net::NetStream$iinit()
at red5Demo/::init()
at red5Demo/___Application1_creationComplete()
at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()
at mx.core::UIComponent/set initialized()
at mx.managers::LayoutManager/::doPhasedInstantiation()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/::callLaterDispatcher2()
at mx.core::UIComponent/::callLaterDispatcher()
D5Power 2007-8-15 14:37
流程:
1.建立NetConnection对象
var nc:NetConnection=new NetConnection()
2.建立NC连接
nc.connect("rtmp://xxxxx");// 注意你的代码里写成了rtmp:/,少了一个/
如果是直接通过HTTP方式播放,则此处应为
nc.connection(null);
3.建立NetStream
var ns:NetStream=new NetStream(nc);
注意这里有一个必须参数nc
4.连接源
xxVideo.attachVideo(ns);
5.播放
ns.play("xxxx");
1.建立NetConnection对象
var nc:NetConnection=new NetConnection()
2.建立NC连接
nc.connect("rtmp://xxxxx");// 注意你的代码里写成了rtmp:/,少了一个/
如果是直接通过HTTP方式播放,则此处应为
nc.connection(null);
3.建立NetStream
var ns:NetStream=new NetStream(nc);
注意这里有一个必须参数nc
4.连接源
xxVideo.attachVideo(ns);
5.播放
ns.play("xxxx");
binbinming 2007-8-15 15:24
那我怎么能像 videoDisplay 标签一样加到 MXML文件上呢? 我这样加提示我类型转换错误:
this.addChild(video);
还有 ns.play(xxx);中的xxx 是指我工程目录下的stream/xxx吧!
this.addChild(video);
还有 ns.play(xxx);中的xxx 是指我工程目录下的stream/xxx吧!
D5Power 2007-8-15 17:28
你把你的全部代码贴出来吧。。。
binbinming 2007-8-16 11:02
我其实就是想知道怎么能够像videoDisplay标签一样加到页面上,以前写的AS 是继承了Sprite 然后 用 addChild(video)就可以了,但我在我的MXML 文件中就不行啊:
代码大概是这样的,因为太多,只能就贴这一点,要不乱了:
nc.addEventListener( "success", connectionSuccessHandler ); //nc即NetConnection
然后 :private function connectionSuccessHandler( event:Event ):void{
//-------------------- 视频连接 --------------
try{
var responser : Responder = new Responder(getListFLVs);
var video:Video = new Video(114,115);
var ns:NetStream = new NetStream(nc);
video.attachNetStream(ns);
addChild(video) //错误出在这 ,提示我Error #1034:强制转换类型失败:无法将 flash.media::Video@5abcc39 转换为 mx.core.IUIComponent。
ns.play("streams/karas.flv"); //没法播放
//把streams文件下的列表加如到 页面中LIST标签中
nc.call("getListOfAvailableFLVs",responser);
}catch(e : Error){
Alert.show(e.message);
}
另外,我还有个问题,我在后台RED5 ,还要做些什么么?我想取得这个视频的播放时间之类的怎么取?
谢谢
代码大概是这样的,因为太多,只能就贴这一点,要不乱了:
nc.addEventListener( "success", connectionSuccessHandler ); //nc即NetConnection
然后 :private function connectionSuccessHandler( event:Event ):void{
//-------------------- 视频连接 --------------
try{
var responser : Responder = new Responder(getListFLVs);
var video:Video = new Video(114,115);
var ns:NetStream = new NetStream(nc);
video.attachNetStream(ns);
addChild(video) //错误出在这 ,提示我Error #1034:强制转换类型失败:无法将 flash.media::Video@5abcc39 转换为 mx.core.IUIComponent。
ns.play("streams/karas.flv"); //没法播放
//把streams文件下的列表加如到 页面中LIST标签中
nc.call("getListOfAvailableFLVs",responser);
}catch(e : Error){
Alert.show(e.message);
}
另外,我还有个问题,我在后台RED5 ,还要做些什么么?我想取得这个视频的播放时间之类的怎么取?
谢谢
binbinming 2007-8-16 11:04
不对,nc 是 FMSConnection ,是我下的一个源码中有个这样的类,正好免的写了,所以就拿过来了
dynamic public class FMSConnection extends NetConnection implements IEventDispatcher//FMSConnection是这样定义的
dynamic public class FMSConnection extends NetConnection implements IEventDispatcher//FMSConnection是这样定义的
D5Power 2007-8-16 14:31
不好意思:)没有认真去查过就回答你了。
刚才去查了一下Adobe的官方论坛。发现VideoDisplay貌似不能用stream,呵呵:)解决全部代码如下:
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init()">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
public function init():void
{
var nc:NetConnection=new NetConnection();
nc.connect(null);
var ns:NetStream=new NetStream(nc);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
var screen:UIComponent=new UIComponent();
screen.setActualSize(800,600);
var myVideo:Video=new Video(320,240);
myVideo.attachNetStream(ns);
screen.addChild(myVideo);
addChild(screen);
ns.play("http://xxx/video.flv");
}
public function asyncErrorHandler(e:Object):void
{
}
]]>
</mx:Script>
</mx:Application>
[/code]
需要把Video加入一个UIComponent里才可以addChild,在我机器上测试通过了:)特别要声明,这里需要为ns增加事件侦听器ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandler);哪怕只是个空函数也要增加。否则会报错(但不影响视频播放)
[[i] 本帖最后由 D5Power 于 2007-8-16 14:37 编辑 [/i]]
刚才去查了一下Adobe的官方论坛。发现VideoDisplay貌似不能用stream,呵呵:)解决全部代码如下:
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init()">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
public function init():void
{
var nc:NetConnection=new NetConnection();
nc.connect(null);
var ns:NetStream=new NetStream(nc);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
var screen:UIComponent=new UIComponent();
screen.setActualSize(800,600);
var myVideo:Video=new Video(320,240);
myVideo.attachNetStream(ns);
screen.addChild(myVideo);
addChild(screen);
ns.play("http://xxx/video.flv");
}
public function asyncErrorHandler(e:Object):void
{
}
]]>
</mx:Script>
</mx:Application>
[/code]
需要把Video加入一个UIComponent里才可以addChild,在我机器上测试通过了:)特别要声明,这里需要为ns增加事件侦听器ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandler);哪怕只是个空函数也要增加。否则会报错(但不影响视频播放)
[[i] 本帖最后由 D5Power 于 2007-8-16 14:37 编辑 [/i]]
binbinming 2007-8-16 14:37
是这样的吧 : var videoHolder:UIComponent = new UIComponent();
var video:Video = new Video(114,115);
var ns:NetStream = new NetStream(nc);
video.attachNetStream(ns);
videoHolder.addChild(video);
videoHolder.width = 114;
videoHolder.height = 115;
clientVideoCanvas.addChild(videoHolder);
ns.play("chatVideo/streams/karas.flv");
var video:Video = new Video(114,115);
var ns:NetStream = new NetStream(nc);
video.attachNetStream(ns);
videoHolder.addChild(video);
videoHolder.width = 114;
videoHolder.height = 115;
clientVideoCanvas.addChild(videoHolder);
ns.play("chatVideo/streams/karas.flv");
binbinming 2007-8-16 14:38
但我的还是没法播放,错误没有了。
请问 我调用 Netstream.play()方法的时候 RED5后台的哪个方法被调用了? 还有 netstream.play(xx),中的 XXX.flv文件放在哪?
请问 我调用 Netstream.play()方法的时候 RED5后台的哪个方法被调用了? 还有 netstream.play(xx),中的 XXX.flv文件放在哪?
D5Power 2007-8-16 14:39
恩,必须要有一个UIComponent来做“容器”,把Video放到容器里,再把容器放到舞台上
D5Power 2007-8-16 14:41
如果按你的代码,且你没有修改过RED5项目的设置,那么这个文件应该在
webapps/your_project/streams/chatVideo/streams/karas.flv
同时你的chatVideo/streams/karas.flv中的斜杠是不是反了啊。。。记不清楚了,我怎么记得应该是/这样的啊
webapps/your_project/streams/chatVideo/streams/karas.flv
同时你的chatVideo/streams/karas.flv中的斜杠是不是反了啊。。。记不清楚了,我怎么记得应该是/这样的啊
binbinming 2007-8-16 14:42
哦,对了,我记得好像在 FLEX 中用/就可以,好像如果发布后 要改成 /
D5Power 2007-8-16 14:42
你应该学会调试。在出现问题的时候,应该尝试先去掉可能出现问题的部分
比如现在,你可以先把stream连到本地的某个VIDEO文件,这样路径上不会出问题,才能判断到底是你RED5方面的问题,还是AS代码方面的问题
比如现在,你可以先把stream连到本地的某个VIDEO文件,这样路径上不会出问题,才能判断到底是你RED5方面的问题,还是AS代码方面的问题
binbinming 2007-8-16 14:44
但是他并不提示我错误啊,还有 ,ns.play(),方法后,RED5后台要做什么么?比如我想取得播放的总时间
应为如果我要用 videoDisplay.totalTime的时候老是显示-1
应为如果我要用 videoDisplay.totalTime的时候老是显示-1
binbinming 2007-8-16 14:44
恩,谢谢,版主大哥了!
页: [1] 2
查看完整版本: 请问怎样处理视频
Powered by Discuz! Archiver 6.0.0 © 2001-2006 Comsenz Inc.
- 请问怎样处理视频
- 请问在sqlmap怎样写转码
- 请问大家怎样学好软件工程这个专业
- 请问怎样实现FLASH+ASP留言板?
- 请问怎样做一个学生管理系统??
- 请问什么叫纹波?怎样测量纹波?
- 请问怎样设置DirectFB的分辨率
- 封装了一个漂浮对联广告JAVASCRIPT类,设置onclick事件不生效,请问JAVASCRIPT类是怎样处理onclick事件的方案
- 怎样Debug dotNet视频?
- 怎样下载Youtube视频
- 请问
- 请问
- 请问
- 请问
- 请问
- 请问
- 请问怎么处理ntext类型的数据
- 请问android中EditText中文本处理
- php5连接oracle9i连不了?
- 如何作需求分析?
- 免费美国稳定快速php+mysql空间000webhost申请教程
- 几行代码而已
- 泛型的说明(例如List)
- 请问怎样处理视频
- SQL语句 菜鸟入门
- c#根据公式进行自动计算的实现
- SQL2005 无法连接到服务器 解决办法
- 手机字体高度测试小程序
- 加载多种图片格式(gif,jpg,png.bmp)
- JAVA最基础的语法
- 小议高效团队的八个特性
- 一封要求加薪的邮件