exponenta event banner

VideoReader

Создать объект для чтения видеофайлов

Описание

Использовать VideoReader объект для чтения файлов, содержащих видеоданные. Объект содержит информацию о видеофайле и позволяет считывать данные из видеофайла. Можно создать VideoReader с использованием VideoReader функция, запрос информации о видео с помощью свойств объекта, а затем чтение видео с помощью функций объекта.

Дополнительные сведения см. в разделе Поддерживаемые форматы видео и аудиофайлов.

Создание

Описание

пример

v = VideoReader(filename) создает объект v для чтения видеоданных из файла с именем filename.

пример

v = VideoReader(filename,Name,Value) задает свойства CurrentTime, Tag, и UserData используя пары имя-значение. Например, VideoReader('myfile.mp4','CurrentTime',1.2) начинает чтение 1.2 секунд в видео. Можно указать несколько пар имя-значение. Заключите каждое имя свойства в одинарные кавычки, за которыми следует соответствующее значение.

Входные аргументы

развернуть все

Имя файла, указанное как вектор символа или скаляр строки.

Дополнительные сведения см. в разделе Поддерживаемые форматы видео и аудиофайлов.

Пример: 'myFile.mp4'

Пример: '../dir/videos/myFile.avi'

Типы данных: char | string

Свойства

развернуть все

VideoReader объект имеет свойства, содержащие информацию о видеофайле. Свойства доступны только для чтения, за исключением CurrentTime, Tag, и UserData. После создания объекта можно просмотреть или изменить значение свойства. Например, эта команда находит значение Duration имущества VideoReader объект, v.

D = v.Duration;

Это свойство доступно только для чтения.

Биты на пиксель видеоданных, заданные как числовой скаляр.

Типы данных: double

Временная метка считываемого видеокадра, заданная как числовой скаляр. Отметка времени указывается в секундах от начала видеофайла. Значение CurrentTime может быть от нуля до длительности видео.

На некоторых платформах при создании VideoReader объект, 'CurrentTime' свойство может содержать значение, близкое к нулю, но не совсем нулевое. Это изменение значения 'CurrentTime' свойство связано с различиями в том, как каждая платформа обрабатывает и читает видео.

Пример: 5.6

Типы данных: double

Это свойство доступно только для чтения.

Длина файла в секундах, заданная как числовой скаляр.

Типы данных: double

Это свойство доступно только для чтения.

Число видеокадров в секунду, указанное как числовой скаляр. Для видео с переменной частотой кадров, FrameRate - средняя частота кадров.

Примечание: Для OS X Yosemite (версия 10.10) и более поздних версий MPEG-4/H.264 файлы написаны с помощью VideoWriter воспроизводиться правильно, но отображать неточную частоту кадров.

Типы данных: double

Это свойство доступно только для чтения.

Высота видеокадра в пикселях, заданная как числовой скаляр.

Типы данных: double

Это свойство доступно только для чтения.

Имя файла, указанное как вектор символа или скаляр строки.

Типы данных: char | string

Это свойство доступно только для чтения.

Количество кадров в видеопотоке, указанное как числовой скаляр.

Примечание

Для видео определенной длины значение NumFrames свойство недоступно сразу. Чтобы получить NumFrames свойство, тип v.NumFrames в командной строке.

Типы данных: double

Это свойство доступно только для чтения.

Полный путь к видеофайлу, связанному с объектом чтения, указанный как вектор символов или скаляр строки.

Типы данных: char | string

Общий текст, заданный как вектор символа или скаляр строки.

Пример: 'Experiment 109'

Типы данных: char | string

Пользовательские данные, указанные как значения любого типа данных.

Это свойство доступно только для чтения.

MATLAB-представление видеоформата, заданного как вектор символа или скаляр строки.

Один из этих типов файлов, за исключением файлов Motion JPEG 2000 VideoFormat значения.

Формат видео

Значение VideoFormat

файлы AVI или MPEG-4 с RGB24 видео

'RGB24'

файлы AVI с индексированным видео

'Indexed'

AVI-файлы с видео в градациях серого

'Grayscale'

Файлы Motion JPEG 2000, имеют один из следующих VideoFormat значения.

Формат данных изображения

Значение VideoFormat

Однополосный uint8'Mono8'
Однополосный int8'Mono8 Signed'
Однополосный uint16'Mono16'
Однополосный int16'Mono16 Signed'
Трёхполосный uint8'RGB24'
Трёхполосный int8'RGB24 Signed'
Трёхполосный uint16'RGB48'
Трёхполосный int16'RGB48 Signed'

Типы данных: char | string

Это свойство доступно только для чтения.

Ширина видеокадра в пикселях, заданная как числовой скаляр.

Типы данных: double

Функции объекта

hasFrameОпределите, доступен ли видеокадр для чтения
readЧтение одного или нескольких видеокадров
readFrameЧтение следующего видеокадра
VideoReader.getFileFormatsФорматы файлов, VideoReader поддержки

Примеры

свернуть все

Создать VideoReader объект для файла примера фильма xylophone.mp4.

v = VideoReader('xylophone.mp4');

Считывайте все кадры из видео, по одному кадру за раз.

while hasFrame(v)
    frame = readFrame(v);
end

Отображение информации о последнем кадре, возвращенном readFrame.

whos frame
  Name         Size                Bytes  Class    Attributes

  frame      240x320x3            230400  uint8              

Создайте объект видеопривода и считывайте видеокадры, начиная с определенного времени.

Создание объекта для чтения файла примера фильма xylophone.mp4.

v = VideoReader('xylophone.mp4');

Укажите, что чтение начинается через 2,5 секунды с начала видео.

v.CurrentTime = 2.5;

Создайте объект-ось для отображения рамки. Затем продолжайте считывать и отображать видеокадры до тех пор, пока больше не будут доступны для считывания кадры.

currAxes = axes;
while hasFrame(v)
    vidFrame = readFrame(v);
    image(vidFrame, 'Parent', currAxes);
    currAxes.Visible = 'off';
    pause(1/v.FrameRate);
end

Создание объекта видеопривода и чтение одного или нескольких видеокадров с использованием индексов кадров.

Создать VideoReader объект для файла примера фильма xylophone.mp4.

v = VideoReader('xylophone.mp4');

Считывание только первого видеокадра.

frame = read(v,1);

Считывание только последнего видеокадра.

frame = read(v,Inf);

Считывание кадров с 5 по 10.

frames = read(v,[5 10]);

Считывание из 50-го кадра в конец видеофайла.

frames = read(v,[50 Inf]);

Считывание кадра из видео путем указания индекса кадра, а затем считывание оставшихся кадров видео по одному кадру за раз.

Создать VideoReader и отобразить значение CurrentTime собственность. Для этого видео нулевое значение для CurrentTime свойство указывает, что кадры не были прочитаны из видео.

vidObj = VideoReader('xylophone.mp4');
vidObj.CurrentTime
ans = 0

Прочтите 20-й кадр из видео, указав индекс кадра. Затем отобразите значение CurrentTime собственность. read метод автоматически обновляет CurrentTime свойство, отражающее считывание 20-го кадра. На этом шаге вызов readFrame функция возвращает 21-й кадр.

frame20 = read(vidObj,20);
vidObj.CurrentTime
ans = 0.6667

Прочтите оставшиеся кадры видео с помощью readFrame способ. readFrame метод возвращает кадр, соответствующий времени в CurrentTime собственность. Например, этот код считывает и отображает кадры, начиная с 21-го кадра, и продолжается до тех пор, пока больше не будет кадров для чтения.

while(hasFrame(vidObj))
    frame = readFrame(vidObj);
    imshow(frame);
    title(sprintf('Current Time = %.3f sec', vidObj.CurrentTime));
    pause(2/vidObj.FrameRate);
end

Figure contains an axes. The axes with title Current Time = 4.700 sec contains an object of type image.

Авторское право 2019 The MathWorks, Inc.

Ограничения

  • Для некоторых файлов AVI, MOV или MP4 в Windows ® используйте readFrame функция чтения всех кадров в файле может привести к количеству кадров, отличному от значения, возвращаемого NumFrames имущества VideoReader объект.

Совет

  • Платформа macOS больше не поддерживает некоторые старые форматы видеофайлов. Чтение таких файлов с помощью VideoReader:

    • Откройте видеофайл с помощью проигрывателя QuickTime. Если проигрыватель обнаруживает, что файл имеет более старый формат, то он автоматически преобразует файл в более новый формат.

    • Сохраните вновь преобразованный видеофайл.

    • Использовать VideoReader для чтения этого вновь преобразованного видеофайла.

Расширенные возможности

..
Представлен в R2010b