⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dopreciseseektests.m

📁 Video IO toolbox for matlab. 用directshow做的
💻 M
字号:
function doPreciseSeekTests(varargin)%DOPRECISESEEKTESTS(...)%  Performs a set of tests on a video file that are designed to succeed only if%  precise seeking actually works on that file.  Note that if a file has a small%  number of frames and/or only a small variance in bitrate between frames, it%  may pass the precise seek tests when other files using the same codec may %  not.%%  Any arguments given are passed directly to the videoReader constructor.%%Examples:%  doPreciseSeekTests%  doPreciseSeekTests ffmpegPopen2  % linux & similar%  doPreciseSeekTests ffmpegDirect  % ...if system's gcc is compatible w/ Matlab's%  doPreciseSeekTests DirectShow    % Windows%%Copyright (c) 2006 Gerald Dalley%See "MIT.txt" in the installation directory for licensing details (especially%when using this library on GNU/Linux). ienter('>>> doPreciseSeekTests(''%s'',...)', varargin{1});images = doFullRead(varargin{:});%%% test seek and step %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%vr = videoReader(varargin{:});% make sure first two frames have different data (makes sure next is% working)vrassert any(any(images(:,:,1) ~= images(:,:,2)));% step back one frame to 1st framevrassert next(vr);                      % -1 -> 0vrassert next(vr);                      % 0 -> 1vrassert step(vr, -1);                  % 1 -> 0img = getframe(vr); img = img(:,:,1);vrassert all(all(img(:,:,1) == img));% seek backward to 1st framevrassert next(vr);                      % 0 -> 1vrassert seek(vr, 0);                   % 1 -> 0img = getframe(vr); img = img(:,:,1);vrassert all(all(images(:,:,1) == img));% step nowherevrassert step(vr, 0);                   % 0 -> 0img = getframe(vr); img = img(:,:,1);vrassert all(all(images(:,:,1) == img));% step back one framevrassert next(vr);                      % 0 -> 1vrassert next(vr);                      % 1 -> 2vrassert step(vr, -1);                  % 2 -> 1img = getframe(vr); img = img(:,:,1);vrassert all(all(images(:,:,2) == img));% seek back one framevrassert next(vr);                      % 1 -> 2vrassert seek(vr, 1);                   % 2 -> 1img = getframe(vr); img = img(:,:,1);vrassert all(all(images(:,:,2) == img));% step back 2 framesvrassert next(vr);                      % 1 -> 2vrassert next(vr);                      % 2 -> 3vrassert step(vr, -2);                  % 3 -> 1img = getframe(vr); img = img(:,:,1);vrassert all(all(images(:,:,2) == img));% seek back 2 framesvrassert next(vr);                      % 1 -> 2vrassert next(vr);                      % 2 -> 3vrassert seek(vr, 1);                   % 3 -> 1img = getframe(vr); img = img(:,:,1);vrassert all(all(images(:,:,2) == img));% step forward 2 framesvrassert step(vr, 2);                   % 1 -> 3img = getframe(vr); img = img(:,:,1);vrassert all(all(images(:,:,4) == img));% seek forward 2 framesvrassert seek(vr, 5);                   % 3 -> 5img = getframe(vr); img = img(:,:,1);vrassert all(all(images(:,:,6) == img));if (size(images,3)>30*7)  % step forward > 5 seconds  vrassert seek(vr,0);  vrassert step(vr,6*30);  img = getframe(vr); img = img(:,:,1);  vrassert all(all(images(:,:,6*30+1) == img));  % seek forward > 5 seconds  vrassert seek(vr,0);  vrassert seek(vr,6*30);  img = getframe(vr); img = img(:,:,1);  vrassert all(all(images(:,:,6*30+1) == img));end% random seeks info = getinfo(vr);for f=floor(rand(1,100)*(info.numFrames-1))  vrassert seek(vr,f);  img = getframe(vr); img = img(:,:,1);  vrassert all(all(images(:,:,f+1) == img));endclose(vr);iexit('<<< doPreciseSeekTests(''%s'',...)', varargin{1});%-------------------------------------------------------------function dispResults(images, img, f)% Little helper function to show results when precise seeks don't work% as expectedsubplot(311); imshow(images(:,:,f+1)); title(sprintf('linearly-read frame %d', f));subplot(312); imshow(img); title('read via seeking');subplot(313);imshow(double(images(:,:,f+1)) - double(img), []);colorbar;title('diff image');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -