在MATLAB中将音频和视频合并为视频文件
我想结合音频和视频作为视频文件在MATLAB中。我编写了以下代码: 但它给了我错误!?!有人能指引我吗在MATLAB中将音频和视频合并为视频文件,matlab,audio,video,video-processing,matlab-cvst,Matlab,Audio,Video,Video Processing,Matlab Cvst,我想结合音频和视频作为视频文件在MATLAB中。我编写了以下代码: 但它给了我错误!?!有人能指引我吗 [filename pathname]=uigetfile({'*.*'},'Video Selector'); fulpathname=strcat(pathname,filename); videoFReader = vision.VideoFileReader(fulpathname); [AUDIO,Fs] = audioread(fulpathname); videoFWriter
[filename pathname]=uigetfile({'*.*'},'Video Selector');
fulpathname=strcat(pathname,filename);
videoFReader = vision.VideoFileReader(fulpathname);
[AUDIO,Fs] = audioread(fulpathname);
videoFWriter = vision.VideoFileWriter('myFile.avi','FrameRate',videoFReader.info.VideoFrameRate);
for i=1:50
videoFrame = step(videoFReader);
step(videoFWriter, videoFrame,AUDIO);
end
release(videoFReader);
release(videoFWriter);
使用“videoFReader.SampleRate”而不是“videoFReader.info.VideoFrameRate”将删除错误如果要使用vision.VideoFileWriter同时写入音频和视频,则应将AudioInputPort选项设置为true。这在默认情况下为false,对象只需要视频数据输入。如果设置为true,则可以将视频和音频作为输入发送到step method。当Navan回答时,必须先将AudioInputPort添加到true。您的视频帧必须是帧的结构。音频也必须是与视频帧数相同长度的结构。您的音频采样率将明显超过帧数。 为此,我建议您将音频采样数除以帧速率,然后对该值进行四舍五入。
这些步骤对我很有用。编写音频和视频的示例
% It is assumed that audio is stored in "data" variable
% Idea is simple: Just divide length of the audio sample by the number of frames to be written in the video frames. ( it is equivalent to saying that what audio you % want to have with that particular frame)
% First make AudioInputPort property true (by default this is false)
writerObj = vision.VideoFileWriter('Guitar.avi','AudioInputPort',true);
% total number of frames
nFrames = 250;
% assign FrameRate (by default it is 30)
writerObj.FrameRate = 20;
% length of the audio to be put per frame
val = size(data,1)/nFrames;
% Read one frame at a time
for k = sf : nFrames
% reading frames from a directory
Frame=(imread(strcat('frame',num2str(k),'.jpg')));
% adding the audio variable in the step function
step(writerObj,Frame,data(val*(k-1)+1:val*k,:)); % it is 2 channel that is why I have put (:)
end
% release the video
release(writerObj)
哪个错误?(您似乎正在将音频读入“y”中,然后却没有对其进行任何处理——“音频”从何而来?)我为这个错误感到抱歉。音频是需要与视频结合的音频文件。在这里,我只想知道如何在MATLAB中组合音频和视频。@阿米尔:错误到底是什么?@MohammadIzady使用vision.VideoFileWriter/step时出错输入参数太多;预期为1(除对象句柄外),得到2。在这些情况下,添加一个实际示例总是有帮助的。为什么?他犯了什么错?这应该是评论而不是回答。