今天写了一段代码,打开一段视频,然后再使用CV::VideoWriter保存处理后视频,结果能够成功保存但是打不开。
保存的代码如下:
pVideoPro->SetOutput("output001.mp4");
函数的内容如下所示
/******************************保存视频****************************/
bool VideoProcessor::SetOutput(const string& filename, int codec, double framerate, bool isColor)
{
OutputFile = filename;
if (framerate == 0.0)
framerate = GetFrameRate();
char c[4];
if (codec == 0)
codec = GetCodec(c);
return MyWriter.open(OutputFile, codec, framerate, GetFrameSize(), isColor);
}
为什么我要保存成mp4呢,因为我打开的那个视频格式就是mp4格式的,运行程序以后,成功保存了视频,但是却打不开。
然后我就查看了GetCodec()函数的返回值,这个函数是要获取原视频的编码格式,具体代码如下:
int VideoProcessor::GetCodec(char codec[4])
{
union {
int value;
char code[4];
}returned;
returned.value = static_cast<int>(MyCapture.get(CAP_PROP_FOURCC));
codec[0] = returned.code[0];
codec[1] = returned.code[1];
codec[2] = returned.code[2];
codec[3] = returned.code[3];
return returned.value;
}
经过调试我发现返回值为:
说明我这里的原视频为avc1编码格式的,然后我有将open函数中的codec函数修改为了-1,想要获取可选的编码方式,得到的结果如下
可以看到,第二行就是之前我输入的avc1格式,可以看出来opencv是支持avc1这个编码格式的,但不知道为什么保存的视频就是打不开。
当我把保存文件的名称改为.avi格式以后
pVideoPro->SetOutput("output001.avi");
这时候保存的视频居然能够成功播放了,然后我又将open函数中的codec函数修改为了-1,发现.avi后缀可选的编码方式如下
可以看出来,avc1编码格式也可以保存为.avi的格式的,但不知道为什么.mp4就不行.
最后我在官方中文文档中找到了答案,如下
这里写的内容建立在你已经通过OpenCV读取视频输入和相似度测量教程的假设,你知道如何读取视频文件。要创建视频文件,您只需要创建一个cv :: VideoWriter类的实例。您可以通过构造函数中的参数或稍后通过cv :: VideoWriter :: open函数指定其属性。无论哪种方式,参数是相同的:1.在其扩展名中包含容器类型的输出的名称。目前只支持avi。我们从输入文件构造这个,添加到要使用的通道的名称,并使用容器扩展名完成它。
就是说目前VideoWriter 这个类只支持.avi的后缀并不支持别的后缀
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search