我正在尝试从视频中提取音频并使用matlab将其存储在文件中
file = 'E:\test\Kepler1.avi';
file1 = 'E:\test\audiofile.wav';
hmfr = video.MultimediaFileReader(file,'AudioOutputPort',true,'VideoOutputPort',false);
hmfw = video.MultimediaFileWriter(file1,'AudioInputPort',true,'VideoInputPort',false,'FileFormat','WAV');
while ~isDone(hmfr)
audioFrame = step(hmfr);
step(hmfw,audioFrame);
end
release(hmfw);
release(hmfr);
audio_samples = wavread(file1);
我面临的问题是:
问题的可能解决方案是什么?在matlab中有没有其他方法可以做到这一点?
P.S。:我正在使用matlab R2012a 版本。
答案 0 :(得分:0)
对于第一个问题,此链接应该有用-https://www.mathworks.com/matlabcentral/answers/323911-how-to-get-the-audio-signal-from-a-video
第二个问题-这是采样率问题。在读取wav和其他音频格式时,MATLAB返回与wav文件相同的采样率。但是,这里似乎并非如此。使用https://www.mathworks.com/help/matlab/ref/audioinfo.html获取原始文件的采样率(可以通过读取与视频相对应的音频文件来获取)。然后,当您将音频“写入”外部格式时,可以使用-
audiowrite(filename,y,Fs)
其中Fs是采样频率。如果它与您的源文件相同,则输出将具有相同的长度,并且不会“加速”。