matlab判斷視訊是否損壞並存為視訊/圖片
阿新 • • 發佈:2019-02-14
批量處理視訊時,經常需要事先判斷視訊是否損壞,並且將視訊幀儲存為圖片。
這裡使用matlab做一個簡單的判斷。
主要用到VideoReader
和VideoWriter
兩個方法。
1 準備工作
matlab如果遇到下面這個錯誤:
Could not read file due to an unexpected error. Reason: Unable to initialize the video obtain properties
只需要執行下面命令安裝相關依賴項即可解決(對Ubuntu 14有效,其他版本效果未知):
wget http://ppa.launchpad.net/mc3man/gstffmpeg-keep/ubuntu/pool/main/g/gstreamer0.10-ffmpeg/gstreamer0.10-ffmpeg_0.10.13-5ubuntu1~trusty2.1_amd64.deb
sudo dpkg -i gstreamer0.10-ffmpeg_0.10.13-5ubuntu1~trusty2.1_amd64.deb
2 主要程式碼
try
obj = VideoReader('filename'); %% 讀取視訊幀
numFrames = obj.NumberOfFrames;
writerObj=VideoWriter('output_video_filename'); %%開啟一個視訊,準備寫入
open(writerObj);
for k = 1: numFrames % 遍歷所有幀
frame = read(obj,k);
if (mod(k,10)==1) %%隔10幀存一次
imwrite(frame,'output_frame_filename','png');% 儲存幀
end
writeVideo(writerObj,frame); % 把影象存入視訊檔案中
end
close(writerObj);
catch
display(’got an error‘);
end
3 實現更多
基本的程式碼邏輯如上,至於兩個函式更加詳細的用法,還要藉助matlab的help