如何将api中的图像作为实时视频回放到WPF中?

时间:2018-11-30 12:55:51

标签: c# wpf imagesource

我正在使用一个API,可以在其中请求视频的每一帧。 我正在尝试将所有帧加载到我的C#应用​​中,然后将其作为视频播放,并能够在每个帧中进行擦洗。

我想知道是否有合适的库可以使此过程更快,更有效。

我曾尝试将所有1500帧图像加载到一个文件夹中,然后将其读回我的应用程序,但是下载图像所需的时间过长,无法播放视频。

WPF:

<Image Source="{Binding Path=ImageSource}"/>

<StackPanel Grid.Row="1"  Orientation="Horizontal">
    <Button Content="Play" Command="{Binding PlayCommand}"/>
    <Button Content="Pause" Command="{Binding StopCommand}"/>

    <Slider Name="mcSlider" Width="234" Height="20"  
            Background="Gray" Maximum="100" Minimum="0" Margin="0,2,0,1" Value="{Binding ImageIndex}">
    </Slider>
</StackPanel>

C#:

void Play()
{
    timer = new SmartDispatcherTimer()
    {
        IsReentrant = false,
        Interval = TimeSpan.FromSeconds(1f / 120f),
        TickTask = async () => { await PlayBack(); }
    };

    timer.Start();
}

private async Task PlayBack()
{
    NextFrame();

    await GetData("54000", _imageIndex, _entry, _imageIndex);
    var fullFilePath = Directory.GetCurrentDirectory() + @"\preview\output" + _imageIndex + ".jpg";

    //Create a new bitmap to assign our image to
    BitmapImage bitmap = new BitmapImage();
    bitmap.BeginInit();
    bitmap.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
    bitmap.CacheOption = BitmapCacheOption.None;
    bitmap.UriSource = new Uri(fullFilePath, UriKind.RelativeOrAbsolute);
    bitmap.EndInit();

    ImagesArray.Add(bitmap);
}

上面的代码是我目前正在尝试的代码,但是每一帧的下载都跟不上回放的需求。

是否有一个资料库可以使我的视频播放器流畅运行?

0 个答案:

没有答案