我有一個Delphi 6應用程序,可以從機器人傳入的視頻和音頻流中創建電影。 PC將視頻流作爲一系列JPEG幀接收,將音頻作爲PCM音頻數據塊接收。我正在使用Windows AVIFile函數(AVIStreamCreate等)來創建電影。對於視頻壓縮器的選擇,我使用AVISaveOptions()功能,並讓用戶從系統中可用的壓縮器中選擇一臺。例如:Microsoft Video 1,Radius的Cinepak Code等。注意其他一些可用的,如Microsoft H.263或H.261會因AVIERR_BADFORMAT錯誤而失敗,因此我無法使用它們進行測試。音頻使用GSM 6.10壓縮器進行壓縮。使用Windows AVIFile函數的Delphi 6應用程序提高壓縮率?
問題是我似乎無法獲得接近壓縮比率的信息,我可以使用Adobe Premiere等工具進行比較。請注意,我知道Premiere正在使用與我的不同的整體流程進行壓縮,並使用不同的文件格式,如MPEG或Quicktime等。但是,如果可以,我希望獲得可比的壓縮比率。無論我從AVISaveOptions()中選擇哪種壓縮器,無論壓縮器的可用壓縮質量設置如何低(例如,Microsoft Video 1壓縮質量的時間質量比&),都需要一分鐘的時間視頻最終會創建一個大小約爲14MB的AVI文件。爲了便於比較,我可以使用Adobe Premiere創建的文件尺寸小於1 MB,並且質量看起來差不多(換句話說,對於我的目的來說已經足夠了,我並不在乎實際的質量損失。) 。
如果我檢查我使用Windows AVI API的輸出文件,我發現沒有使用壓縮器更改的設置會影響幀速率。它始終與輸入幀速率相同。現在,如果有必要的話,我可以在輸入端放置幀,但這會有點麻煩,因爲它與音頻同步,如果可以,我想避免這種情況。
但更重要的是數據速率。無論壓縮機設置如何低,我都無法達到約2.3 kbps以下的速度。我用Premiere創建的視頻以及其他播放的視頻具有健壯的文件大小和持續時間比例,都大約爲1.2 kbps。
總的來說,我的AVI文件的文件大小和我用Premiere或其他人創建的文件大小之間的差異已經發送給我,壓縮好的是10到1。因此,我的壓縮比是其他視頻文件的10倍,而其他文件的視頻質量沒有不愉快的差異。
我能做些什麼來獲得可比的壓縮比率?
UPDATE:David Heffernan的回覆包含一個快速解決方案,適合我。我強調這一點,因爲它也包含重要許可警告。對於像我這樣的人,爲了讓用戶儘可能方便地使用XVid編解碼器,請閱讀下面的文章。它包含有關如何再利用用戶的壓縮機的選擇,與他們所選擇的壓縮配置選擇一起,在將來的會話的指令,而無需再次打擾用戶:
http://msdn.microsoft.com/en-us/magazine/hh580739.aspx
對於好奇,在尺寸變化從我之前輸出的AVI文件大小到使用XVid編解碼器創建的文件是12.231 MB到632 KB並且視頻質量更合理。
謝謝大衛。我可以在安裝程序中爲用戶安裝嗎?還是因用戶權限等原因需要手動執行?另外,你的新頭像照片背後的故事是什麼?這是一個Android的東西? –
我不確定分發XVID。我知道我們不這樣做,只是建議我們的用戶這樣做。這對我們來說從來都不是問題。我相信這是GPL授權。阿凡達?這是一個叫Oddie的混蛋。 –
謝謝,感謝小費。 –