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

Свойства

расширить все

The 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

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

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

Типы данных: 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 свойство. The read метод автоматически обновляет CurrentTime свойство, отражающее, что считалась 20-ая система координат. На этом шаге вызов readFrame функция возвращает 21-ую систему координат.

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

Чтение остальных систем координат видео с помощью readFrame способ. The 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