add audio to a static image

조회 수: 3 (최근 30일)
Shae Morgan
Shae Morgan 2020년 6월 18일
댓글: SKP 2021년 7월 18일
I have an audio signal and a picture. I'm trying to output a video of the static image for the duration of the audio that's playing. I'm woefully unskilled with the computer vision toolbox (but I have it). Could someone help me with this seemingly simply task?
[xt,fs]=audioread('mywav.wav');
im=imread('myimage.png');
videoFWriter = vision.VideoFileWriter('newvideo.avi','AudioInputPort',true);
videoFrame = im;
step(videoFWriter,videoFrame,xt);
release(videoFWriter);
The output is a video file, but when I try to listen to the audio of it, it's been resampled and all sorts of crazy. Help!

채택된 답변

Pranjal Kaura
Pranjal Kaura 2020년 6월 19일
Hey,
The problem with your code seems to be that you’re not setting the frames per second parameter. If you don’t set it, the model assumes the FPS to be 30(default). Now when you add audio using the step command, its rushed/played quickly, to finish within the time frame of numFrames/FPS.
Here’s my solution. Hope this helps.
[data, freq] = audioread('pathtoAudioFile');
img = imread('pathtoImage');
audioLength = length(data)/freq;%duration of audio file
writerObj = vision.VideoFileWriter('newvideo.avi', 'AudioInputPort',true, 'FrameRate', 1);%Setting FPS to 1. Now we need to add atleast
%audioLength number of frames
for i = 1:audioLength
parsedAudio = data((i-1)*length(data)/audioLength + 1:i*length(data)/audioLength);%parsing the audio into equally sized pieces(play for 1 sec)
% that can be added with each img frame
step(writerObj, img, parsedAudio);
end
release(writerObj);
  댓글 수: 4
Shae Morgan
Shae Morgan 2020년 6월 19일
Thank you! that helps a ton.
SKP
SKP 2021년 7월 18일
Thank you for this code.
I could successfully create .avi file using this code. However, I wanted a .mp4 file as output and therefore, I tried to modify one line in this code as below,
writerObj = vision.VideoFileWriter('Filename','newvideo.mp4','FileFormat', 'MPEG4','AudioInputPort',true,'FrameRate', 1); %
This was giving me a warning and error (shown below), which I am not able to resolve. Could you please help?
Warning: The AudioInputPort property is not relevant in this configuration of the System object.
Error using vision.VideoFileWriter/step
Too many input arguments. Expected 1 (in addition to System object), got 2.
Error in Audio_combine_evening (line 51)
step(writerObj, img, parsedAudio);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by