對不起,我的英語不好:(希望你們能理解我的問題。(MATLAB R2013a)保存視頻使用VideoWriter但無法保存標籤和標題
拳,這是我的一個雙擺的代碼模擬。
close all;clear all; clc;
theta1 = -pi;
dtheta1 = -5;
theta2 = pi/2;
dtheta2 = 10;
m1 = 1;
m2 = 1.7;
r1 = 1.3;
r2 = 1;
g = 9.8;
duration = 5;
y0 = [theta1;dtheta1;theta2;dtheta2;m1;m2;r1;r2;g];
[t,y] = ode45(@eqns,[0 duration],y0);
theta1 = wrapToPi(y(:,1));
dtheta1 = y(:,2);
theta2 = wrapToPi(y(:,3));
dtheta2 = y(:,4);
fps = round(length(theta1)/duration);
X = zeros(length(theta1),3);
Y = zeros(length(theta1),3);
for i=1:length(theta1)
X(i,:)=[0,r1*sin(theta1(i)),r1*sin(theta1(i))+r2*sin(theta2(i))];
Y(i,:)=[0,-r1*cos(theta1(i)),-r1*cos(theta1(i))-r2*cos(theta2(i))];
end
mov = VideoWriter('Double Pendulum','MPEG-4');
set(mov,'FrameRate',fps,'Quality',100);
open(mov)
h = plot(0,0,'MarkerSize',30,'Marker','.','LineWidth',1.4);
range = 1.25*(r1+r2);axis([-range range -range range]); axis square;
xlabel('x');ylabel('y');title('Double Pendulum');
set(gca,'nextplot','replacechildren');
textlocation = range * 0.7;
hold on
for i=2:length(theta1)
set(h,'XData',X(i,:),'YData',Y(i,:));
plot([X(i-1,3) X(i,3)],[Y(i-1,3) Y(i,3)],'r')
plot(X(i,2),Y(i,2),'g')
frame = getframe;
writeVideo(mov,frame);
end
close(mov);
這裏是結果, https://www.dropbox.com/s/7pyagcnhca6khb3/Double%20pendulum%20result.PNG
出於某種原因,標籤和標題都不會被記錄下來,我也認識到,顏色是從我在Matlab看到真正的不同我試着用'未壓縮的AVI'而不是'MPEG-4'在顏色和質量方面給了我最好的結果,但文件大小爲50MB,'MPEG-4'文件大小僅爲560KB。
我想知道,是否有任何設置會給我一個更好的coulor(更接近我在Matlab中看到的)較低的文件大小(我對此mp4質量很滿意),並且標籤將被記錄下來。
非常感謝。
時的默認畫質更換
frame = getframe
爲MPEG-4視頻('VideoWriter.getProfiles()')僅設置爲75/100。你有沒有試過把它設置爲100?它會稍微增加文件大小,但顏色準確性可能會提高。不幸的是,MPEG-4/h.264並不是大多數視頻的Matlab數字編解碼器(有更好的h.264版本/配置文件,但Matlab似乎使用端口設置)。您可以嘗試Motion JPEG 2000.或者,如果您不介意QuickTime,請嘗試我的['QTWriter'](http://stackoverflow.com/a/16827218/2278029),該編解碼器非常適合Matlab類型圖形。從那裏你可以轉換爲其他格式。 – horchler我使用「set(mov,'FrameRate',fps,'Quality',100)」將我的質量設置爲100,但顏色仍然非常糟糕。感謝您的建議,我會嘗試你的QTWriter :) – SamC