簡體   English   中英

嘗試編譯 untrunc 時出現“錯誤:'avcodec_open' 未在此范圍內聲明”

[英]"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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM