同步播放FLV数据[关闭]

问题描述 投票:5回答:3

我只是在调查http://www.broccoliproducts.com/softnotebook/rtmpclient/rtmpclient.php RTMP客户端代码。它工作正常,因此它获取数据并在本地保存FLV文件。

code非常简单。所以我的问题是:

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

2.有任何线索如何实现它?

!这不是这个项目的任何广告!我只需要在WPF中创建一些RTMP播放器。

c# .net media-player rtmp
3个回答
1
投票

在您提供一些额外要求之前的通用帖子。

在Flash内部你创建一个按钮,然后实现以下ActionScript

on (press) {
    fscommand("Variable1", "Variable2");
}

然后在Visual Studio中,您需要为COM Object添加Shockwave Flash Object参考。您需要确保将embed设置为true。

现在在Visual Studio中,您应该能够访问Properties并找到fscommand,它将允许您物理连接Flash Movie中的值。

AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent

这将收集Flash中的变量。例如,您只需使用e.commande.arg来收集项目即可。如...

lbl_Result.Text="The " + e.args.ToString() + " " + e.command.ToString()+ " was clicked.";

现在,您可以将Flash电影的数据从Flash传输到Visual Studio。这很简单,很直接。

这将允许您的C#应用​​程序实际继承​​和利用您的Flash视频。

需要考虑的事项:

  • 确保您已将embed设置为true。这就是在Flash对象中物理保存所有Path References的内容。否则可能会调用无效路径。

其他参考帮助:

  1. 在你的项目内打开Solution Explorer
  2. 右键单击ReferenceAdd Reference
  3. COM Object

这些是可用的对象:

  • Shockwave ActiveX
  • Flash Accessibility
  • Flash Broker
  • Shockwave Flash

上面的解决方案将让您在其原生环境中实际使用Flash,只需简单地将您想要实现的变量数据或控件传递给C#。这样您就可以直接将RTMP用于Flash。您的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>") %>

要么...

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;
}

你可以在这里找到线程:Additional Embed Instructions and Details.

这就是你可以将你的Flash放入C#的方法,也有办法将你的C#输出到Actionscript。但是如果没有关于你试图做什么的更多细节,我就不能真正做到这些通用的反应。

请记住,这是假设您尝试将FLV存储在应用程序中,或将数据从C#聚合到Flash。我需要更多细节来进一步提供帮助。我不太确定为什么需要C#以及你想要做什么。


3
投票

如果你有Cygwin,你可以通过tee管道输出

rtmpdump -i "rtmp://server/app playpath=mp4:foo.mp4" | tee a.flv | vlc -

这会将输出保存到文件,同时通过VLC播放流。如果你不想安装Cygwin我有a small version可用,只有3.2 MB。你也许可以找到一个Windows版本的tee


1
投票

VLC可以播放大多数任何来源,并具有许多语言的绑定。 .net肯定在名单上。

一个来源:sample 更多信息:here

它看起来像FluorineFX可以与RTMP服务器通信。不确定播放,但可以从.net访问SharedObjects及其同类。

© www.soinside.com 2019 - 2024. All rights reserved.