wmf sdk例程wmvcopy中的錯誤
wmvcopy是其乙個例程,實現了從頭部開始擷取n秒另存為檔案。
我曾對wmvcopy簡單修改,實現了從m秒到n秒的擷取。見:
windows media format sdk 切割wmv/wma檔案
但在使用中發現有些錯誤。
乙個是明顯的錯誤,不能處理大檔案,只能擷取214秒。見:
請問有大俠發現format sdk 例子 wmvcopy debug error麼?
wmvcopy 有個嚴重的debug error, 在**找了半天,沒有看到有誰提出來。 而且還有乙個很奇怪的問題,wmvcopy -i c:/input.wmv -o c:/output.wmv -d 214 沒有問題,能正常將input.wmv 剪下為214s output.wmv, 但是wmv -i c:/input.wmv -o c:/output.wmv -d 215 / 216 / 230 都不能正常剪下,output.wmv 就是input.wmv 的copy.
請哪位大俠解釋一下?
還有乙個是剛發現的,檔案儲存結束後,偶爾會崩潰。找個幾百k的大檔案,擷取頭部幾十秒試試。寫個批處理執行一百次,執行中啟動關閉一些其它程式,應該會有一兩個報錯誤出來。(省去一大堆的錯誤跟蹤過程。並且,vc的單步除錯可能不會出錯。)錯誤定位在ontime()的這一語句上:
hresult hr = m_preaderadvanced->delivertime( m_qwreadertime );
原來是複製結束後,m_preaderadvanced已釋放,而m_feof還未設定,所以出錯。
這樣可以讓你把錯誤看的更清楚點:
assert(m_preaderadvanced);
hresult hr = m_preaderadvanced->delivertime( m_qwreadertime );
粗略地檢視一下wmvcopy的邏輯,ontime()每次讓reader讀取1秒的資料,直到檔案結束。
實際情況是,指定了擷取的長度,一般都不會到達檔案尾部。
所以應該另設乙個標誌:m_fmaxduration,到達maxduration時就可以結束檔案的讀取,而不必一直讀到檔案尾。一可解決崩潰錯誤,二可提高效率。
Delphi 例程 字元操縱例程
字元操縱例程 1.chr函式 返回指定的ascii碼的字元 單元 system 原型function chr x byte char 描述chr返回位元組型別表示式x的順序值 ascii值 示例key chr vk back vk back 8 相應於 key 8 2.fillchar過程 用指定的...
halcon例程講解 halcon例程解讀2
例程解讀 二維物體識別 autobahn.hdev 關閉視窗自動更新 dev update window off 關閉影象視窗 dev close window 開啟指定大小的視窗 dev open window 0,0,768,575,black windowid 賦值。以後的網格線步長用到,後面...
Delphi 基礎(例程 例程返回值)
一 例程 delphi中獨有的稱呼,例程是將具體某個功能的 進行封裝表現形式 1 過程 2 函式 過程和函式的區別在於有沒有返回值 二 例程的作用 1 可以解決命名衝突問題 2 提高 的重複使用率 3 提高 可維護性 三 使用歷程 1 定義 1 procedure demo1 過程2 begin34...