无法创建音频压缩器过滤器
Unable to create audio compressor filter
函数将一个字符串作为输入,即视频的名称。它使用 vision.VideoFileReader
函数读取视频,并使用 vision.VideoFileWriter
函数读取同一视频 returns。输出视频都有音频的输入视频。处理一个大约 6 MB 的视频,我有一个超过 1 GB 的视频输出。该功能没有错误,但我必须压缩。使用 VideoCompressor
,可以将视频压缩到 350 MB,我会使用 AudioCompressor
,但会出现错误。
这是我的代码,下面是返回的错误。
function [ nFrames ] = showMovie( video )
v = VideoReader(video);
videoFReader = vision.VideoFileReader(video);
videoFWriter = vision.VideoFileWriter('FrameRate',v.FrameRate,'AudioInputPort',1,'VideoCompressor', 'MJPEG Compressor','AudioCompressor','MJPEG Compressor');
[audio,fs] = audioread(video);
op=floor(fs/v.FrameRate);
nFrames = 0;
while ~isDone(videoFReader)
nFrames=nFrames+1;
frame=step(videoFReader);
audios=audio( (nFrames-1)*op + 1 : nFrames*op , : );
step(videoFWriter,frame,audios);
end
release(videoFReader);
release(videoFWriter);
end
我无法使用 属性 AudioCompressor
。我尝试了 Compressor MJPEG
和 DV Video Encoder
值,但出现此错误:
Error using VideoFileWriter / step
Unable to create audio compressor filter
Error in showMovie (line 15)
step (videoFWriter, frame, audios);
您正在尝试为音频指定 video 压缩器,这导致了错误。不同的压缩算法用于音频和视频组件。您需要指定一个有效的 audio 压缩器。
要获取您机器上可用选项的列表,您可以在命令 window:
中使用制表符完成
videoWriter.AudioCompressor = ' % <tab> key
正如 Rotem 所指出的,此列表可以还 包括视频压缩算法,但它还应该包括您安装了正确编解码器的任何有效音频压缩算法。
我的系统中唯一可用的 AudioCompressor 压缩器是:'None (uncompressed)'
我在 64 位版本的 Matlab (R2014b) 上试过了。
原因是我的 Windows 系统缺少 Matlab 支持的 x64(64 位)音频编解码器。
注意:64 位 Matlab 需要 x64 编解码器,32 位 Matlab 需要 x86 编解码器。
当我像 Suever 提到的那样使用 videoWriter.AudioCompressor = ' % <tab> key
时,
当我使用 32 位版本的 Matlab (R2013b) 尝试相同的代码时,我得到以下列表:
- AC-3 ACM 编解码器
- AC-3 ACM 可扩展
- CCITT A 法
- CCITT U-Law
- GSM 6.10
- IMA ADPCM
- 微软 ADPCM
- None(未压缩)
注意:64 位版本中显示的视频编解码器在 32 位 Matlab 中不显示。
我想在 AudioCompressor
中显示视频编解码器是一个 Matlab 错误。
仅作记录,在 Suever 提出答案之前,我尝试了 <tab> key
。
我在 Matlab 文档中读到了它:http://www.mathworks.com/help/vision/ref/vision.videofilewriter-class.html
To launch the tab completion functionality, type the following up to the open quote.
y.VideoCompressor='
A list of compressors available on your system will appear after you press the Tab key
以下代码示例在系统中有效:
video = 'xylophone.mpg';
v = VideoReader(video);
videoFReader = vision.VideoFileReader(video);
videoFWriter = vision.VideoFileWriter('FrameRate',v.FrameRate,'AudioInputPort',1,'VideoCompressor', 'MJPEG Compressor','AudioCompressor', 'None (uncompressed)');
[audio,fs] = audioread(video);
op=floor(fs/v.FrameRate);
nFrames = 0;
while ~isDone(videoFReader)
nFrames=nFrames+1;
frame=step(videoFReader);
audios=audio( (nFrames-1)*op + 1 : min(nFrames*op, length(audio)) , : );
%Handle last audio sample.
if (length(audios) < op)
audios = [audios; audios(1:op - length(audios), :)];
end
step(videoFWriter,frame,audios);
end
release(videoFReader);
release(videoFWriter);
我在网上搜索适用于 Matlab 的免费 x64 音频编解码器,但找不到。
函数将一个字符串作为输入,即视频的名称。它使用 vision.VideoFileReader
函数读取视频,并使用 vision.VideoFileWriter
函数读取同一视频 returns。输出视频都有音频的输入视频。处理一个大约 6 MB 的视频,我有一个超过 1 GB 的视频输出。该功能没有错误,但我必须压缩。使用 VideoCompressor
,可以将视频压缩到 350 MB,我会使用 AudioCompressor
,但会出现错误。
这是我的代码,下面是返回的错误。
function [ nFrames ] = showMovie( video )
v = VideoReader(video);
videoFReader = vision.VideoFileReader(video);
videoFWriter = vision.VideoFileWriter('FrameRate',v.FrameRate,'AudioInputPort',1,'VideoCompressor', 'MJPEG Compressor','AudioCompressor','MJPEG Compressor');
[audio,fs] = audioread(video);
op=floor(fs/v.FrameRate);
nFrames = 0;
while ~isDone(videoFReader)
nFrames=nFrames+1;
frame=step(videoFReader);
audios=audio( (nFrames-1)*op + 1 : nFrames*op , : );
step(videoFWriter,frame,audios);
end
release(videoFReader);
release(videoFWriter);
end
我无法使用 属性 AudioCompressor
。我尝试了 Compressor MJPEG
和 DV Video Encoder
值,但出现此错误:
Error using VideoFileWriter / step
Unable to create audio compressor filter
Error in showMovie (line 15)
step (videoFWriter, frame, audios);
您正在尝试为音频指定 video 压缩器,这导致了错误。不同的压缩算法用于音频和视频组件。您需要指定一个有效的 audio 压缩器。
要获取您机器上可用选项的列表,您可以在命令 window:
中使用制表符完成videoWriter.AudioCompressor = ' % <tab> key
正如 Rotem 所指出的,此列表可以还 包括视频压缩算法,但它还应该包括您安装了正确编解码器的任何有效音频压缩算法。
我的系统中唯一可用的 AudioCompressor 压缩器是:'None (uncompressed)'
我在 64 位版本的 Matlab (R2014b) 上试过了。
原因是我的 Windows 系统缺少 Matlab 支持的 x64(64 位)音频编解码器。
注意:64 位 Matlab 需要 x64 编解码器,32 位 Matlab 需要 x86 编解码器。
当我像 Suever 提到的那样使用 videoWriter.AudioCompressor = ' % <tab> key
时,
当我使用 32 位版本的 Matlab (R2013b) 尝试相同的代码时,我得到以下列表:
- AC-3 ACM 编解码器
- AC-3 ACM 可扩展
- CCITT A 法
- CCITT U-Law
- GSM 6.10
- IMA ADPCM
- 微软 ADPCM
- None(未压缩)
注意:64 位版本中显示的视频编解码器在 32 位 Matlab 中不显示。
我想在 AudioCompressor
中显示视频编解码器是一个 Matlab 错误。
仅作记录,在 Suever 提出答案之前,我尝试了 <tab> key
。
我在 Matlab 文档中读到了它:http://www.mathworks.com/help/vision/ref/vision.videofilewriter-class.html
To launch the tab completion functionality, type the following up to the open quote.
y.VideoCompressor='
A list of compressors available on your system will appear after you press the Tab key
以下代码示例在系统中有效:
video = 'xylophone.mpg';
v = VideoReader(video);
videoFReader = vision.VideoFileReader(video);
videoFWriter = vision.VideoFileWriter('FrameRate',v.FrameRate,'AudioInputPort',1,'VideoCompressor', 'MJPEG Compressor','AudioCompressor', 'None (uncompressed)');
[audio,fs] = audioread(video);
op=floor(fs/v.FrameRate);
nFrames = 0;
while ~isDone(videoFReader)
nFrames=nFrames+1;
frame=step(videoFReader);
audios=audio( (nFrames-1)*op + 1 : min(nFrames*op, length(audio)) , : );
%Handle last audio sample.
if (length(audios) < op)
audios = [audios; audios(1:op - length(audios), :)];
end
step(videoFWriter,frame,audios);
end
release(videoFReader);
release(videoFWriter);
我在网上搜索适用于 Matlab 的免费 x64 音频编解码器,但找不到。