C# 同步播放FLV数据
我只是在调查RTMP客户端代码。它工作正常,因此可以获取数据并在本地保存FLV文件 问题很简单。因此,我的问题是: 1。是否可以同步播放此流媒体?(可以,但由于缓存的原因会有一些延迟) (我试图通过VLC打开写入文件,但它很忙… 2。有没有关于如何实施的线索?C# 同步播放FLV数据,c#,.net,media-player,rtmp,C#,.net,Media Player,Rtmp,我只是在调查RTMP客户端代码。它工作正常,因此可以获取数据并在本地保存FLV文件 问题很简单。因此,我的问题是: 1。是否可以同步播放此流媒体?(可以,但由于缓存的原因会有一些延迟) (我试图通过VLC打开写入文件,但它很忙… 2。有没有关于如何实施的线索? !!!这不是这个项目的任何一种广告!我只需要在WPF中创建一些RTMP播放器。如果你有Cygwin,你可以通过tee管道输出 rtmpdump-i”rtmp://server/app playpath=mp4:foo.mp4英寸T E a
!!!这不是这个项目的任何一种广告!我只需要在WPF中创建一些RTMP播放器。如果你有Cygwin,你可以通过
tee管道输出
rtmpdump-i”rtmp://server/app playpath=mp4:foo.mp4英寸T E a.flv | vlc-
这将把输出保存到一个文件中,同时通过VLC播放流。如果你不想安装Cygwin,我有
可用,仅3.2MB。另外,您可能会发现Windows版本的tee
可以播放大多数源代码,并且具有多种语言的绑定。net当然在名单上
一个来源:
更多信息:
它看起来还可以与RTMP服务器通信。不确定是否播放,但是可以从.net访问SharedObject及其类似内容。在您提供一些附加要求之前,这是一篇通用文章
在Flash内部,您需要创建一个按钮,然后实现以下ActionScript
on (press) {
fscommand("Variable1", "Variable2");
}
然后在VisualStudio内部,您需要为Shockwave Flash对象
添加COM对象
参考。您需要确保embed
设置为true
现在在VisualStudio中,您应该能够转到属性
并找到fscommand
,这将允许您物理连接Flash电影中的值
AXShockWaveLashObjects.\u IShockWaveLashEvents\u FSCommandEvent
这将收集Flash中的变量。例如,您可以简单地使用e.command
和e.arg
让收集的项目执行某些操作。比如
lbl_Result.Text="The " + e.args.ToString() + " " + e.command.ToString()+ " was clicked.";
现在将Flash电影的数据从Flash传输到Visual Studio。这很简单,很直接
这将允许您的C#应用程序实际继承和利用您的Flash视频
需要考虑的事项:
- 确保已将
embed
设置为true。这将物理上保存Flash对象中的所有路径引用。否则,它可能会调用无效路径
其他参考帮助:
在项目内部打开解决方案资源管理器
右键单击Reference
和addreference
转到COM对象
以下是可用的对象:
Shockwave ActiveX
Flash可访问性
Flash代理
冲击波闪光
上述解决方案将允许您在其本机环境中实际使用Flash,您只需通过这种方式将希望实现的变量数据或控件传递到C#中即可。通过这种方式,您可以直接使用RTMP进行闪存。你的C#应用程序只会暴露Flash对象
这是一种通用的方法,当您提供一些额外的信息时,我会更新以尝试更好地帮助您。还有一些库,如F-In-The-Box、LibRTMP,也可能会有所帮助
正如我所说的,以上是相当一般的;但它将调用您在Flash视频对象中注意到的任何质量;然后,您的C#可以简单地调整它们,如下所示:
<% MyYoutubeUtils.ShowEmebddedVideo("<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/gtNlQodFMi8&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/gtNlQodFMi8&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>") %>
或者
公共静态字符串ShowEmbeddedVideo(字符串youtubeObject)
{
var xdoc=XDocument.Parse(youtubeObject);
var returnObject=string.Format("看看这里:你的意思是如何播放流而不是下载?你说的同步是什么意思?播放直播流?@onryldirim是的。不要将其保存到文件中,而是在屏幕上播放。一个.flv
仍然被认为是.swf
基本正确?如果这是真的,你使用Com对象代码>?如果您确认我的上述评论是正确的,我将写出一个简单的解决方案。@Greg好的,如果可以使用rtmp流媒体播放它的话。好的。谢谢!但我需要C#解决方案。
public static string ShowEmbeddedVideo(string youtubeObject)
{
var xdoc = XDocument.Parse(youtubeObject);
var returnObject = string.Format("<object type=\"{0}\" data=\{1}\"><param name=\"movie\" value=\"{1}\" />",
xdoc.Root.Element("embed").Attribute("type").Value,
xdoc.Root.Element("embed").Attribute("src").Value);
return returnObject;
}