我正在调查http://www.broccoliproducts.com/softnotebook/rtmpclient/rtmpclient.php RTMP客户端代码。它工作正常,因此它获取数据并在本地保存FLV文件。
code非常简单。所以我的问题是:
1。是否可以同步播放此流媒体? (由于缓存有一些延迟) (我试图通过VLC打开文件,但它很忙......)
2。有任何线索如何实现它?
!!!这不是这个项目的任何广告!我只需要在WPF中创建一些RTMP播放器。
答案 0 :(得分: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 :(得分:1)
VLC可以播放大多数来源,并且可以绑定多种语言。 .net肯定在名单上。
看起来FluorineFX也可以与RTMP服务器通信。不确定播放,但可以从.net。
访问SharedObjects及其同类答案 2 :(得分:1)
通用帖子,直到您提供一些额外要求。
在Flash内部,您可以创建一个按钮,然后实现以下ActionScript
。
on (press) {
fscommand("Variable1", "Variable2");
}
然后在Visual Studio内部,您需要为COM Object
添加Shockwave Flash Object
引用。您需要确保embed
设置为true。
现在在Visual Studio中,您应该可以转到Properties
并找到fscommand
,这样您就可以实际连接Flash电影中的值。
AxShockwaveFlashObjects._IShockwaveFlashEvents_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对象中所有Path References
的内容。否则可能会调用无效路径。其他参考帮助:
Solution Explorer
。Reference
和Add Reference
。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#以及你想要做什么。