社区
C#
帖子详情
【200分求助】如何播放内存中的媒体流?
dyshadow
2010-11-19 03:50:57
我查了一些资料,几乎都是从文件生成一个媒体播放实例,然后进行播放的。
由于媒体的保密性,系统不能够在客户端生成临时文件。客户端程序通过网络从服务器上下载媒体数据,然后播放。
文件不能够保存在硬盘。而是以流的形式进行播放。最好还要对应不同编码。
请教各位大侠,给个方向。。。
...全文
369
30
打赏
收藏
【200分求助】如何播放内存中的媒体流?
我查了一些资料,几乎都是从文件生成一个媒体播放实例,然后进行播放的。 由于媒体的保密性,系统不能够在客户端生成临时文件。客户端程序通过网络从服务器上下载媒体数据,然后播放。 文件不能够保存在硬盘。而是以流的形式进行播放。最好还要对应不同编码。 请教各位大侠,给个方向。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
solibear
2012-11-17
打赏
举报
回复
没有一个真正懂的,懂的话直接详细说出思路或解决办法就行了,偏偏不懂还要故作高深。
dyshadow
2010-12-10
打赏
举报
回复
难道说,顶了还沉啊?
大虾指教
mooniscrazy
2010-12-10
打赏
举报
回复
如果想用VideoPlay直接播放,是有一定困难的。因为它的接口不允许定制。
1.用reflector去分析VideoPlay的源代码,再结合反射之类的方法,看能否改变它的源代码来实现。
2.直接调用windows的Encoder和Decoder,自己实现播放类。这个方法可能定制性更强。
3.FFmpeg项目,就是专门做视频编解码的。大多数播放器,都是通过它实现。看能否封装ffmpeg来实现。
4.抽象好ecoder接口,通过运行时检测客户端机器是否支持相应格式的编解码。如果不支持,就到服务器下载相应的解码器。ppstream就是这样做的。
dyshadow
2010-12-02
打赏
举报
回复
沉了再顶
麦麦_同学
2010-11-26
打赏
举报
回复
每天回帖拿分
dyshadow
2010-11-26
打赏
举报
回复
帖子兄弟,别沉啊
LutzMark
2010-11-25
打赏
举报
回复
现在市场上比较多应用的是微软的DRM技术.
lz需要的这种技术也很常见,如果说只是应用编码方面需求,很多常见控件都支持流播放的
ahpanghupang
2010-11-25
打赏
举报
回复
路过 学习下 ,, 关注中
dyshadow
2010-11-25
打赏
举报
回复
帖子别沉啊
vrhero
2010-11-24
打赏
举报
回复
那要看你用什么播放器...例如WPF/Silverlight的MediaElement控件直接就支持MediaElement.SetSource(Stream)方法...
q12157138
2010-11-24
打赏
举报
回复
高深问题啊
dyshadow
2010-11-24
打赏
举报
回复
[Quote=引用 15 楼 vrhero 的回复:]
已经加过密你还折腾个啥...
再说一次...只要是在客户端能读取到的网络数据,你不可能阻止客户端保存它...就算你“不在客户端生成临时文件”也只是掩耳盗铃,内行用户仍然能够一点点地将整个媒体流抓取保存下来,当然能不能解密是另一回事...
ps:如果你学过OS原理应该知道,文件的概念不是仅指磁盘上的一堆字节,内存中一样可以创建文件...更何况,流媒体播放器本来就是直接读取内存流的...
……
[/Quote]
你说得不错,资深的用户仍旧能够将媒体流抓取并且保存下来。但是由于我这是加密的流,并且通过类似PKI的方法进行身份验证。播放的时候还会利用内嵌的信息进行另一次身份验证。
这样,就算用户可以取下未通过解密的媒体流,他也无法解密播放。就算得到了解密之后的流,也没有办法通过第二次身份验证。
说实话,似乎距离问题中心越来越远了。如何从服务器得到加密流,如何进行身份验证,如何解密,这个都无关紧要。我现在就是要实现如何从媒体流进行视频播放。
将问题简化一下:
我现在要手动控制一个加密的视频文件,将其在内存中解密之后播放。解密之后的结果并不作为副本保存。有什么方法?
说得再简单一点,现在能够播放视频:
Video videoPlay=new Video([FileName]);
有什么方法可以实现类似:
Video videoPlay=new Video([NetStream]);
既然媒体播放器也是通过读取内存流的,我如何将解密之后的内存流传递给播放器?
dyshadow
2010-11-23
打赏
举报
回复
别沉得太快!
vrhero
2010-11-23
打赏
举报
回复
已经加过密你还折腾个啥...
再说一次...只要是在客户端能读取到的网络数据,你不可能阻止客户端保存它...就算你“不在客户端生成临时文件”也只是掩耳盗铃,内行用户仍然能够一点点地将整个媒体流抓取保存下来,当然能不能解密是另一回事...
ps:如果你学过OS原理应该知道,文件的概念不是仅指磁盘上的一堆字节,内存中一样可以创建文件...更何况,流媒体播放器本来就是直接读取内存流的...
又ps:要支持多种不同编码是由不得服务器的,需要客户端安装所有你可能用到的解码器...除非用户自己安装了万能解码器或暴风影音之类的...
dyshadow
2010-11-22
打赏
举报
回复
[Quote=引用 6 楼 usabcd 的回复:]
楼主的问题没说完整。
很多控件都支持流媒体播放的。
你说的这个内存里的流,并不是天上掉下来的。也是从别处接收到的。
你说的不想存本地,那就是说客户端的机器要接受一个流。
这个流不是什么内存流,而是实实在在从网络上收到的流。
看下控件的使用例子,按常规的方式去做就行了。
没什么特别的。
[/Quote]
的确你说得不错,不是从天上掉下来的。我查到用DX进行媒体播放。
当然,DX也是将文件读取到内存中,转换为媒体的数据流,之后再使用对应的算法进行解码,从而达到播放。
但是我从网络上得到一个网络数据流,将这个数据流转换成媒体数据流之后,如何完成播放呢?
Video videoTarget=new Video(fileName);
需要一个文件名。从文件名进行播放。
这里Video可以通过文件创建,但是无法通过媒体流创建啊。
bu88dong
2010-11-22
打赏
举报
回复
learning...
dyshadow
2010-11-22
打赏
举报
回复
[Quote=引用 9 楼 vrhero 的回复:]
流媒体都是网络流、内存流...你所谓的“不能够在客户端生成临时文件”其实只是不在本地缓存而已...
然而,只要是网络流都无法防止客户端捕获数据并保存...你的方向就错了,你应该考虑流媒体加密...
[/Quote]
说实话,的确是加密的。由于项目机密,我不能够透露太多信息。十分抱歉。
服务器中保存的形式是加密的,网络传输的时候是加密的,最终播放前在内存中解密,然后播放。
是否能够给个大致的方向?十分感谢。
dyshadow
2010-11-22
打赏
举报
回复
[Quote=引用 8 楼 xxiju203 的回复:]
你说的视频流应该是从流媒体服务器发送过来的吧,如果服务器是MMS协议的流,可用windows media player的控件传入视频的URL即可播放,要是其他协议的流似乎windows media server不支持,你需要自己去实现这些流媒体协议,或者你可以调用mplayer来播放,它支持的流媒体协议比较多.看看mplayer的手册即可.使用setParent API可以将mplayer嵌入你的……
[/Quote]
十分感谢。但是网络传输并不是现成的MMS协议的流,而是自己写的加密数据流。而且文件格式并不限制于Windows Media所支持的格式。可能是WMV,AVI也可能是RMVB,MKV。
我会按照你给的方向先研究一下的。多谢。
jerysab
2010-11-22
打赏
举报
回复
学习。。。。。。。。。。
vrhero
2010-11-22
打赏
举报
回复
流媒体都是网络流、内存流...你所谓的“不能够在客户端生成临时文件”其实只是不在本地缓存而已...
然而,只要是网络流都无法防止客户端捕获数据并保存...你的方向就错了,你应该考虑流媒体加密...
加载更多回复(6)
从零构建国标GB28181模拟器:揭秘SIP协议与
媒体
流
的核心实现
本文详解从零构建国标GB28181设备模拟器的关键技术:基于PJSIP定制SIP协议栈(含100rel扩展与双状态机设计),实现RTP/RTCP
媒体
流
生成(PS封装、H.264 NALU提取、时间戳同步);涵盖SRTP加密、批量模拟优化及弱网Jitter Buffer调优等工程实践,支撑高并发设备仿真与合规性验证。
WVP-GB28181-Pro视频
播放
超时问题深度优化指南:从诊断到解决的系统方法
本文系统剖析WVP-GB28181-Pro平台视频
播放
超时问题,涵盖网络传输、SIP协议交互、
媒体
流
处理及设备适配四大层面的诊断与优化。重点包括UDP/RTP参数调优、JVM与线程池配置、SIP信令重传与超时调整、NAT穿透、级联
媒体
流
优化等关键技术措施,并给出公网/级联/大规模部署等场景下的适配策略,显著提升连接成功率与
播放
稳定性。
如何彻底解决LiveKit实时语音交互
中
的致命停顿:
播放
停止事件深度解析
本文深入剖析LiveKit实时音视频
中
由网络抖动、
媒体
轨道生命周期管理缺陷及SFU服务器资源耗尽引发的
播放
停止事件。重点涵盖基于WebRTC的丢包检测机制、mediatrack状态机异常、forwarder资源降级等底层原理,并提出优化网络自适应策略、强化OnTrackEnded监听、实施Prometheus+Auto-scaling服务端扩容三大关键技术方案。
IPTV
播放
源自动化检测与管理的终极实战指南:告别频道失效困扰
本文介绍基于Rust开发的iptv-checker工具,支持Docker一键部署与Web可视化管理,提供多维度检测(网络层、应用层、
媒体
流
、内容完整性)、智能频道管理(命名规范、
分
辨率识别、EPG集成)及任务调度(定时、并发、优先级、增量检测)。适用于家庭用户与小型IPTV服务商,解决频道失效问题,提升
播放
源有效率与稳定性。
mmsplayer for CE:Windows CE平台MMS
流
媒体
播放
器实战详解
本文深入讲解专为Windows CE和Windows Mobile平台设计的MMS
流
媒体
播放
器mmsplayer for CE的架构与实现,涵盖MMS/RTSP协议解析、跨平台兼容性设计、libmmsplayer.dll核心库模块化结构、音视频解码对接及嵌入式UI交互逻辑,突出在资源受限环境下的缓冲管理、异常处理与网络状态反馈机制。
C#
111,129
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章