我有一个电源中断的摄像机录制的视频。结果,正在制作的带有H.264编解码器的MP4文件已损坏。我想在Ubuntu 14.04.1。中修复此文件。我已经看到一种建议的方法是使用untrunc。我正在尝试编译它,但是遇到了一个我不知道如何解决的错误。到目前为止,我所做的如下:
sudo apt-get install libavformat-dev libavcodec-dev libavutil-dev
git clone https://github.com/ponchio/untrunc.git
cd untrunc/
g++ -o untrunc file.cpp main.cpp track.cpp atom.cpp mp4.cpp -L/usr/local/lib -lavformat -lavcodec -lavutil
在尝试编译时,出现以下错误:
track.cpp: In member function 'void Track::parse(Atom*, Atom*)':
track.cpp:217:47: error: 'avcodec_open' was not declared in this scope
if(avcodec_open(codec.context, codec.codec)<0)
您能否提出解决此错误的方法?
avcodec_open
被淘汰avcodec_open2
。例如参见本说明。通读的文档avcodec_open
,看来替换的方法是转换:
avcodec_open(a,b);
至
avcodec_open2(a,b,NULL);
此修补程序与建议的修补程序相似,但未在untrunc库本身(此处)中进行过验证。
我试图验证该修复程序有效。实际上,它是track.cpp中的单行修改。采取:
if(avcodec_open(codec.context, codec.codec)<0)
并替换为
if(avcodec_open2(codec.context, codec.codec, NULL)<0)
(在提交3c708a上,此更改在第218行上)。注意:我只验证了代码已编译,而不验证它是否按预期的方式工作(我没有损坏的m4v可以测试)。让我知道它是否有效,或者您是否遇到任何其他问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句