你说的视频流应该是从流媒体服务器发送过来的吧,如果服务器是MMS协议的流,可用windows media player的控件传入视频的URL即可播放,要是其他协议的流似乎windows media server不支持,你需要自己去实现这些流媒体协议,或者你可以调用mplayer来播放,它支持的流媒体协议比较多.看看mplayer的手册即可.使用setParent API可以将mplayer嵌入你的程序里面,然后给它传入各种参数即可实现.
你说得不错,资深的用户仍旧能够将媒体流抓取并且保存下来。但是由于我这是加密的流,并且通过类似PKI的方法进行身份验证。播放的时候还会利用内嵌的信息进行另一次身份验证。 这样,就算用户可以取下未通过解密的媒体流,他也无法解密播放。就算得到了解密之后的流,也没有办法通过第二次身份验证。说实话,似乎距离问题中心越来越远了。如何从服务器得到加密流,如何进行身份验证,如何解密,这个都无关紧要。我现在就是要实现如何从媒体流进行视频播放。将问题简化一下:我现在要手动控制一个加密的视频文件,将其在内存中解密之后播放。解密之后的结果并不作为副本保存。有什么方法?说得再简单一点,现在能够播放视频: Video videoPlay=new Video([FileName]); 有什么方法可以实现类似: Video videoPlay=new Video([NetStream]);既然媒体播放器也是通过读取内存流的,我如何将解密之后的内存流传递给播放器?
不过如果有B/S结构可以做参考的话,也请不要吝啬。多谢
的确你说得不错,不是从天上掉下来的。我查到用DX进行媒体播放。当然,DX也是将文件读取到内存中,转换为媒体的数据流,之后再使用对应的算法进行解码,从而达到播放。但是我从网络上得到一个网络数据流,将这个数据流转换成媒体数据流之后,如何完成播放呢?Video videoTarget=new Video(fileName);需要一个文件名。从文件名进行播放。这里Video可以通过文件创建,但是无法通过媒体流创建啊。
我会按照你给的方向先研究一下的。多谢。
你说得不错,资深的用户仍旧能够将媒体流抓取并且保存下来。但是由于我这是加密的流,并且通过类似PKI的方法进行身份验证。播放的时候还会利用内嵌的信息进行另一次身份验证。
这样,就算用户可以取下未通过解密的媒体流,他也无法解密播放。就算得到了解密之后的流,也没有办法通过第二次身份验证。说实话,似乎距离问题中心越来越远了。如何从服务器得到加密流,如何进行身份验证,如何解密,这个都无关紧要。我现在就是要实现如何从媒体流进行视频播放。将问题简化一下:我现在要手动控制一个加密的视频文件,将其在内存中解密之后播放。解密之后的结果并不作为副本保存。有什么方法?说得再简单一点,现在能够播放视频:
Video videoPlay=new Video([FileName]);
有什么方法可以实现类似:
Video videoPlay=new Video([NetStream]);既然媒体播放器也是通过读取内存流的,我如何将解密之后的内存流传递给播放器?
lz需要的这种技术也很常见,如果说只是应用编码方面需求,很多常见控件都支持流播放的
1.用reflector去分析VideoPlay的源代码,再结合反射之类的方法,看能否改变它的源代码来实现。
2.直接调用windows的Encoder和Decoder,自己实现播放类。这个方法可能定制性更强。
3.FFmpeg项目,就是专门做视频编解码的。大多数播放器,都是通过它实现。看能否封装ffmpeg来实现。
4.抽象好ecoder接口,通过运行时检测客户端机器是否支持相应格式的编解码。如果不支持,就到服务器下载相应的解码器。ppstream就是这样做的。