Я создал GUI, позволяющий воспроизводить видеофайл. Я использую uicontrol
для создания слайдера, он работает в базовых случаях c (когда я относительно медленно нажимаю на слайдер). Если я удерживаю левую кнопку мыши на правой стрелке ползунка в течение определенного времени, MATLAB выдаст ошибку (говоря, что он не может прочитать кадр) в строке, считывающей кадр видео.
Я полагаю, что у машины нет времени для обработки видео в высоком темпе, есть ли способ решить эту проблему?
Вот мой код.
function test_video
figure;
hAxes = axes;
hSlider = uicontrol( 'Style', 'Slider' );
hSlider.Position(3) = 500;
hSlider.Callback = @Slider_Callback;
Reader = VideoReader( 'MyVideo.mp4' );
f = Reader.readFrame();
imshow( f, 'Parent', hAxes );
hSlider.Value = 1;
hSlider.Min = 1;
hSlider.Max = Reader.NumFrames-1;
iFrameRate = Reader.FrameRate;
function Slider_Callback( varargin )
iFrame = floor( varargin{ 1 }.Value );
dCurrentTime = iFrame / iFrameRate;
Reader.CurrentTime = dCurrentTime;
f = Reader.readFrame();
imshow( f, 'Parent', hAxes );
end % Slider_Callback
end
Ошибка в строке в функции обратного вызова:
f = Reader.readFrame();
Также имеется ошибка во встроенной функции (asyncio.Stream/wait).
drawnow('limitrate');