3
在Linux下運行Matlab R2011b,我正在使用VideoWriter生成視頻。我的代碼如下所示:在導出視頻時Axes背景顏色渲染不正確
h_fig = figure();
set(h_fig, 'Visible', 'on')
set(h_fig, 'Position', [300,200,898,720]);
h_axs = axes('Parent', h_fig);
set(h_axs,'nextplot','replacechildren');
vidObj = VideoWriter('leadfollow3.avi');
...
for i = 1:n
h_axs_a = subplot(3,2,[1 2]);
plot(h_axs_a, x, a_mag_lead, x, a_mag_follow, 'r');
...
該圖由幾個子圖組成。第一個子圖呈現良好,但對於其餘的圖形,軸背景保持灰色而不是白色。更糟的是,對於某些幀,它會切換到白色,導致視頻中出現惱人的閃爍(see example video here)。視頻編寫器循環外部的單個繪圖不顯示此工件。什麼可能是解決這個問題的最佳策略?
編輯:在我有機會在Windows上嘗試此代碼後,似乎該問題僅限於Linux。儘管如此,我仍然非常想知道一個可能的解決方案,因爲我沒有經常訪問可以進行計算的Windows框。
在Linux上,我更喜歡將每個幀導出爲png,並使用ffmpeg進行壓縮。 – Memming 2012-03-08 14:06:57
這似乎是一個常見的主題......我簡單地嘗試了這種方法,它有點慢,導致幀率不正確;我想我會再試一次。 – 2012-03-08 20:30:12
我更喜歡保存爲jpge,並使用滑稽命令'cat * .jpg> out.mjpeg'創建mjpeg - 然後您可以使用ffmpeg將其轉換爲您想要的。與@Memming同樣的故事,但我用mjpeg開頭的ffmpeg比嘗試傳遞瘋狂的參數更好。 – alexplanation 2012-07-11 15:27:06