我刚开始在 UWP 中试验 MediaStreamSource。我从 MS 中获取了MediaStreamSource 流示例,并尝试重写它以支持 mp4 而不是 mp3。我只改变了InitializeMediaStreamSource部分,现在看起来像这样:
{
var clip = await MediaClip.CreateFromFileAsync(inputMP3File);
var audioTrack = clip.EmbeddedAudioTracks.First();
var property = clip.GetVideoEncodingProperties();
// initialize Parsing Variables
byteOffset = 0;
timeOffset = new TimeSpan(0);
var videoDescriptor = new VideoStreamDescriptor(property);
var audioDescriptor = new AudioStreamDescriptor(audioTrack.GetAudioEncodingProperties());
MSS = new MediaStreamSource(videoDescriptor)
{
Duration = clip.OriginalDuration
};
// hooking up the MediaStreamSource event handlers
MSS.Starting += MSS_Starting;
MSS.SampleRequested += MSS_SampleRequested;
MSS.Closed += MSS_Closed;
media.SetMediaStreamSource(MSS);
}
我的问题是,我找不到使用视频流代替音频的单个示例,因此我无法弄清楚我的代码有什么问题。如果我将 MediaElement 的 Source 属性设置为给定的 mp4 文件,它就像一个魅力。如果我选择一个 mp3 并将 videoDescriptor 也排除在外。但是,如果我尝试对视频做同样的事情(我仍然不确定是否应该将 audioDescriptor 作为第二个参数添加到 MediaStreamSource,但因为我有一个混合流,我想它是不需要的) ,然后什么也没有发生。SampleRequested 事件被触发。没有错误被抛出。调试它真的很难,真的很痛苦。:S