Как читать изображения из API в WPF при воспроизведении живого видео? - PullRequest
0 голосов
/ 30 ноября 2018

Я использую 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);
}

Код выше - это то, что я сейчас пытаюсь, но загрузка каждого кадра не соответствует требованию воспроизведения.

Есть ли библиотека, чтобы мой видео плеер работал гладко?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...