1. 程式人生 > >matlab判斷視訊是否損壞並存為視訊/圖片

matlab判斷視訊是否損壞並存為視訊/圖片

批量處理視訊時,經常需要事先判斷視訊是否損壞,並且將視訊幀儲存為圖片。

這裡使用matlab做一個簡單的判斷。

主要用到VideoReaderVideoWriter兩個方法。

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