Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 同步播放FLV数据_C#_.net_Media Player_Rtmp - Fatal编程技术网

C# 同步播放FLV数据

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

我只是在调查RTMP客户端代码。它工作正常,因此可以获取数据并在本地保存FLV文件

问题很简单。因此,我的问题是:

1。是否可以同步播放此流媒体?(可以,但由于缓存的原因会有一些延迟) (我试图通过VLC打开写入文件,但它很忙…

2。有没有关于如何实施的线索?


!!!这不是这个项目的任何一种广告!我只需要在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;
    }