2011-04-01 105 views

回答

2

您可以使用下面的架构(代码示例是在想,你需要在Windows上实现的任务,并使用MFC,但同样的模式可用于其他条件):

1)获取ASX文件(例如使用CHttpConnection,CHttpFile等)。对于您的示例ASX文件是:

[Reference] 
Ref1=http://149.136.20.28/d3-Exposition-51?MSWMExt=.asf 
Ref2=http://149.136.20.28:80/d3-Exposition-51?MSWMExt=.asf 

2)解析ASX文件。通常一个ASX文件是一个XML文件。但有时真正的ASX文件实际上并不是有效的XML文件(对于您的示例而言,这是真的)。所以你可能需要处理这种情况。解析ASX后,您将获得一组URL。这些URL通常是同一传输的替代品。

3)使用Windows Media Format SDK(WMF SDK)读取由URL表示的流。见Reading ASF Data Over a Network

+0

我没有意识到ASX文件是一个涉及视频流而不仅仅是视频流的XML播放列表。 VitalyVal说,底层视频是WMF。使用ffmpeg导入并不困难。 – JnBrymn 2011-04-03 04:11:11

+0

我不知道,ffmpeg如何处理各种音频和视频格式的ASF流。但似乎你可以面对一些音频和视频格式(如WMA语音编解码器,WMA 9专业版,WMV 9等)的问题。如果你开发一个Windows应用程序,我认为使用WMF SDK是一个更好的选择。 – VitalyVal 2011-04-03 08:59:09