none
视频录制(MediaCapture,C# ) RRS feed

  • 问题

  • 大家好,我想问一下MediaCapture从USB摄像头录制视频的问题。我需要从USB摄像头长时间无间隔的录制视频,按时间段分割存储到文件,如一个小时存一个文件。现在遇到以下问题:1、由于使用PrepareLowLagRecordToStorageFileAsync录制一个小时后停止再开始录制的方式可能漏掉时间,打算使用StartRecordToCustomSinkAsync方法录制。C#如何此方法所需的IMediaExtension接口的参数?2、录制H.264格式的视频时如何实现SEI内容的添加、读取?3、文档里提到的单次三个小时的录制现在,可否延长?

    • 已编辑 test01x 2021年2月19日 8:51 校正
    2021年2月19日 8:50

全部回复

  • 你好,

    1)你可以参考官方示例,从MediaEncodingProfile中获取IMediaExtension,具体代码如下所示。

       // Create new sink
       mediaSink = new StspMediaSinkProxy();
       mediaSink.IncomingConnectionEvent += mediaSink_IncomingConnectionEvent;
       var mfExtension = await mediaSink.InitializeAsync(encodingProfile.Audio, encodingProfile.Video);
       await mediaCapture.StartRecordToCustomSinkAsync(encodingProfile, mfExtension);

    2)目前UWP不支持给正录制的视频插入SEI信息。你可以尝试创建.net core standard libaray,然后调用win32 api去做这件事。

    3)官方文档表示,录制限制是三小时,超出会触发RecordLimitationExceeded事件。目前,uwp暂时不提供api去延长录制时间,如果你真的需要此功能,请在Windows Feedback Hub app提交你的功能需求.


    "Developing Universal Windows apps" forum will be migrating to a new home on Microsoft Q&A (Preview)!
    We invite you to post new questions in the "Developing Universal Windows apps" forum’s new home on Microsoft Q&A (Preview)!
    For more information, please refer to the sticky post.




    2021年2月22日 8:03
  • 感谢回复!

    关于该示例,我在发帖前看过。该示例IMediaExtension的具体实现是C++的,但我不会C++。在Microsoft Media Foundation也许有SEI相关的API,但它同样没有提供托管语言的相关实现。


    • 已编辑 test01x 2021年3月4日 14:27 校正
    2021年3月4日 13:30