none
使用VideoSink获取视频源数据的问题 RRS feed

  • 问题

  • 大家好~

    最近在WP上做一个关于摄像头采集视频流并传输的程序

    使用VideoSink可以获取到源视频流,我把它保存在了MemoryStream里以便传输的时候使用。

    有个问题搞不明白

    MemoryStream存放的原始流是否是可以直接播放使用?

    直接捕获的视频流太大了,是否有方法在手机上进行一些压缩处理?如果可以的话,能否有参照的例子或者方法?

    我在手机程序里尝试把MemoryStream的数据直接保存在文件里,参照一些stream保存文件的方法:

    protectedoverridevoidOnCaptureStopped()

    {

    FileStreams = newFileStream("test.dat", FileMode.CreateNew, FileAccess.ReadWrite);

    _memoryStream.WriteTo(s);

    }

    但总是报错:A MethodAccessException exception is thrown when there is an invalid attempt to access a private or protected method inside a class.  不明白哪个访问权限不够........还是在WP程序上不能这么写.... 最蛋疼的是MSDN的library也没有任何可以参照的例子和说明...

    有人做过相关的东西,或者懂得话,希望可以给我讲解一下,非常感谢!!

    2012年6月1日 9:33

答案

  • 你好,

    1.MemoryStream存放的原始流是否是可以直接播放使用?

    目前还不可以直接使用MediaElement的SetSource(Stream)的方法。

    Passing a generic stream to SetSource(Stream) is not supported. To use SetSource(Stream) on Windows Phone OS 7.0:

    Pass an object of type IsolatedStorageFileStream to the method.

    Copy the generic stream to isolated storage, and then pass it as an object of type IsolatedStorageFileStream.

    http://msdn.microsoft.com/en-us/library/ff426928(v=vs.95).aspx

     

    2.直接捕获的视频流太大了,是否有方法在手机上进行一些压缩处理?

    据我所知目前还不支持在windows phone中压缩视频,还是建议将视频源文件先进行压缩再传送到客户端。

    3.在windows phone程序中使用FileStream是不支持的。建议使用IsolatedStorageFileStream替代。

    This type is present to support the .NET Compact Framework infrastructure in Silverlight for Windows Phone, and it is not intended to be used in your application code.

    http://msdn.microsoft.com/en-us/library/system.io.filestream(v=vs.95).aspx

    • 已标记为答案 康小茄 2012年6月6日 2:41
    2012年6月4日 10:00