社区
C#
帖子详情
【200分求助】如何播放内存中的媒体流?
dyshadow
2010-11-19 03:50:57
我查了一些资料,几乎都是从文件生成一个媒体播放实例,然后进行播放的。
由于媒体的保密性,系统不能够在客户端生成临时文件。客户端程序通过网络从服务器上下载媒体数据,然后播放。
文件不能够保存在硬盘。而是以流的形式进行播放。最好还要对应不同编码。
请教各位大侠,给个方向。。。
...全文
365
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模拟器的构建过程,重点探讨了SIP协议与
媒体
流
的核心实现技术。通过PJSIP定制开发、视频源模拟方案及性能优化策略,帮助开发者快速掌握设备端模拟器的开发要点,适用于Windows 64位平台的批量模拟场景。
WVP-GB28181-Pro视频
播放
超时问题深度优化指南:从诊断到解决的系统方法
你是否曾遇到这样的情况:在重要的监控场景
中
,WVP-GB28181-Pro平台的视频
播放
突然
中
断,屏幕上显示"连接超时"的错误提示?作为视频监控系统的核心组件,
流
畅稳定的视频传输直接关系到安全监控的有效性。本文将带你系统
分
析视频
播放
超时的根本原因,提供
分
层次的优化方案,并通过实际案例验证优化效果,帮助你构建一个稳定可靠的视频监控系统。 ## 问题诊断:视频
播放
超时的多维度
分
析 视频
播放
超时看似
如何彻底解决LiveKit实时语音交互
中
的致命停顿:
播放
停止事件深度解析
在实时音视频应用开发
中
,LiveKit作为WebRTC的端到端解决方案,凭借其高性能的SFU
媒体
服务器和丰富的SDK支持,成为开发者构建实时交互系统的首选。然而,
播放
停止事件导致的语音停顿问题却常常困扰着开发者,严重影响用户体验。本文将从错误原因、诊断方法到解决方案,全面解析这一技术难题。 [![LiveKit Server界面](https://raw.gitcode.com/GitHub_T
IPTV
播放
源自动化检测与管理的终极实战指南:告别频道失效困扰
在IPTV观看体验
中
,最令人头疼的问题莫过于
播放
源突然失效——正当精彩时刻,画面卡顿或直接黑屏。传统的手动检测方式效率低下且无法保证时效性,而iptv-checker正是为解决这一痛点而生的自动化工具。这款基于Rust开发的高性能IPTV
播放
列表检测工具,通过Docker容器化部署和直观的Web管理界面,为普通家庭用户、技术爱好者和小型IPTV服务商提供了完整的
播放
源质量管理解决方案。🚀 ##
mmsplayer for CE:Windows CE平台MMS
流
媒体
播放
器实战详解
为保证兼容性和易用性,所有对外接口均以标准 C 函数形式导出,避免 C++ 名称修饰带来的调用困难。所有函数遵循统一命名前缀mms_,并通过.def文件显式声明导出符号。典型接口示例如下:// 头文件 mmsplayer.h#endif// 0~100#endif#endif参数说明与逻辑
分
析MMS_HANDLE:抽象句柄类型,实际指向内部结构,隐藏具体实现细节。:根据 URL 初始化
播放
环境,包括协议解析、网络参数设置等。返回NULL。
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章