Считайте системы координат из видео, запускающегося в определенное время, или структурируйте индекс, считайте системы координат в заданном интервале или считайте все системы координат в видео.
Считайте часть видеофайла, начинающего 0,5 секунды с начала файла. Затем считайте видео, начинающее с индекса 100 системы координат в конец видеофайла.
Создайте VideoReader
объект сопоставлен с файлом примера 'xylophone.mp4'
.
vidObj = VideoReader('xylophone.mp4');
Укажите, что чтение должно начать 0,5 секунды с начала файла путем установки CurrentTime
свойство.
vidObj.CurrentTime = 0.5;
Считайте видеокадры, пока конец файла не будет достигнут при помощи readFrame
метод.
while hasFrame(vidObj) vidFrame = readFrame(vidObj); imshow(vidFrame) pause(1/vidObj.FrameRate); end
В качестве альтернативы можно считать системы координат из видео, запускающегося в заданном индексе системы координат в конец видео при помощи read
метод. Задайте индексы, чтобы читать как [100 Inf]
. read
метод возвращает все системы координат, запускающиеся в 100 в конец видеофайла.
vidframes = read(vidObj,[100 Inf]);
Считайте часть видеофайла путем определения времени или структурируйте интервал.
Считайте видеокадры между 0,6 и 0,9 секундами. Во-первых, создайте видео объект читателя и массив структур, чтобы содержать системы координат.
vidObj = VideoReader('xylophone.mp4'); s = struct('cdata',zeros(vidObj.Height,vidObj.Width,3,'uint8'),'colormap',[]);
Затем укажите, что чтение должно начать 0,6 секунды с начала файла путем установки CurrentTime
свойство.
vidObj.CurrentTime = 0.6;
Считайте одну систему координат за один раз до CurrentTime
достигает 0,9 секунд. Добавьте данные от каждого видеокадра до массива структур. Просмотрите количество систем координат в массиве структур. s
1 10 структура, указывающая, что были считаны 10 систем координат. Для получения информации об отображении систем координат в структуре s
как фильм, смотрите movie
страница ссылки на функцию.
k = 1; while vidObj.CurrentTime <= 0.9 s(k).cdata = readFrame(vidObj); k = k+1; end whos s
Name Size Bytes Class Attributes s 1x10 2305344 struct
В качестве альтернативы можно считать все системы координат в заданном интервале при помощи индексов системы координат. Например, задайте второй аргумент read
как [18 27]
. read
метод возвращает FrameSize
- 10 массивов, указывающих, что были считаны 10 систем координат.
frames = read(vidObj,[18 27]);
whos frames
Name Size Bytes Class Attributes frames 240x320x3x10 2304000 uint8
Считайте все системы координат из видео, одна система координат за один раз или все системы координат целиком.
Создайте видео читателя, возражают и отображают общее количество систем координат в видео.
vidObj = VideoReader('xylophone.mp4');
vidObj.NumFrames
ans = 141
Считайте все системы координат, одна система координат за один раз, при помощи readFrame
метод и отображение системы координат.
while hasFrame(vidObj) frame = readFrame(vidObj); imshow(frame) pause(1/vidObj.FrameRate); end
В качестве альтернативы можно считать все видеокадры целиком. read
метод возвращает FrameSize
- 141 массив видеокадров.
allFrames = read(vidObj);
whos allFrames
Name Size Bytes Class Attributes allFrames 240x320x3x141 32486400 uint8
hasFrame
метод может возвратить логический 1
(TRUE), когда значение CurrentTime
свойство равно значению Duration
свойство. Это происходит из-за ограничения в базовых используемых API.
Поиск на последнюю систему координат в видеофайле путем установки CurrentTime
свойство к значению близко к Duration
значение не рекомендуется. Для некоторых файлов эта операция возвращает ошибку при указании, что конец файла был достигнут, даже при том, что CurrentTime
значение меньше Duration
значение. Это обычно происходит, если длительность файла больше, чем длительность видеопотока, и нет никакого видео, доступного, чтобы читать около конца файла.
Использование Duration
свойство ограничить чтение данных из видеофайла не рекомендуется. Используйте hasFrame
метод, чтобы проверять, существует ли система координат, доступная в чтение. Лучше считывать данные, пока файл не сообщает, что больше нет систем координат, доступных в чтение.
Производительность Чтения видео на Windows® Systems: достигнуть лучшей видео производительности читателя на Windows для MP4
и MOV
файлы, MATLAB® использует аппаратное обеспечение машинной графики системы в декодировании. Однако в некоторых случаях использование видеокарты для декодирования может привести к более плохой производительности в зависимости от определенного аппаратного обеспечения машинной графики в системе. Если вы замечаете более медленную видео производительность читателя в своей системе, выключаете аппаратное ускорение путем ввода: matlab.video.read.UseHardwareAcceleration('off')
. Можно повторно включить аппаратное ускорение путем ввода: matlab.video.read.UseHardwareAcceleration('on')
.
VideoReader
| mmfileinfo
| movie
| read
| readFrame