[英]"error: 'avcodec_open' was not declared in this scope" on attempting to compile untrunc
我有一個由斷電的相機錄制的視頻。 因此,它制作的帶有 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 來測試)。 讓我知道它是否有效,或者如果您遇到任何其他問題。
不是您問題的確切解決方案(編譯錯誤),但可能是您主要問題的解決方案(損壞的 mp4): http : //untrunc.it/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.