新しいバージョンのffmpegがavpriv_io_delete関数を見つけられないという問題を解決します

問題の原因を分析します

開発中に「ファイルが定義されていません」というエラーが発生することがよくあります。
ここに画像の説明を挿入

上の図のように、ffmpegの開発を学んでいるときは、ビデオを段階的に追っていきました。先生のビデオはとてもスムーズでしたが、自分で操作したコードはとにかくコンパイルできませんでした。エラーは上記のとおりです。

私のffmpegのインストール手順について話させてください;1。http://ffmpeg.org/download.htmlを開き
ます

2.クローンされたgitコードのアドレスを公式ウェブサイトのダウンロードホームページに直接コピーし、コンパイルしてインストールします

ここに画像の説明を挿入

すべてのコマンドライン操作は問題ありません。

C言語を使用してファイルを操作するffmpegを開発する場合、問題があります。

元のコードは次のとおりです。

zh@zh-lpc:~/project/ffmpeg$ cat ff.c
#include <stdio.h>
#include <libavutil/log.h>
//#include <libavformat/avio.h>
#include <libavformat/avformat.h>


int main()
{
    
    

        char *fileName="./test.txt";

        int ret;
        ret=avpriv_io_delete(fileName);

        if(ret < 0)
        {
    
    
                av_log(NULL,AV_LOG_ERROR,"Fail to delete file %s \n",fileName);
                return -1;
        }

        return 0;
}
zh@zh-lpc:~/project/ffmpeg$

コンパイル時に遭遇:
ここに画像の説明を挿入

ffmpegのインストールディレクトリを調べて、この関数を含むファイルがあるかどうかを確認してください。

結果として、どちらも

zh@zh-lpc:~/project/ffmpeg$ grep -nr "avpriv_io_delete" /usr/local/ffmpeg
zh@zh-lpc:~/project/ffmpeg$
zh@zh-lpc:~/project/ffmpeg$
zh@zh-lpc:~/project/ffmpeg$ cat /usr/local/ffmpeg/include/libavformat/avformat.h |grep "avpriv_io_delete"
zh@zh-lpc:~/project/ffmpeg$

ネチズンが「avpriv_io_delete」関数がavio.hファイルにあると言ったのを見て、私はそれを検索しましたが、結果はまだありません。

zh@zh-lpc:~/project/ffmpeg$ cat /usr/local/ffmpeg/include/libavformat/avio.h |grep "avpriv_io_delete"
zh@zh-lpc:~/project/ffmpeg$

很无奈,就猜想是自己编译的代码肯定存在问题的。

想着ffmpeg这么正规,肯定有很详细的api文档,或者其他文档说明。
公式サイトを検索したところです。

ここに画像の説明を挿入

案の定、APIドキュメントの列を見ました。

表示したいバージョンのAPIを表示できます。

バージョン4.1を確認しました:http:
//ffmpeg.org/doxygen/4.1/index.html

ここに画像の説明を挿入

ここに画像の説明を挿入

avformat.hファイルで調べましたが、そこにはありませんでした。
ここに画像の説明を挿入

avio.hファイルを開いたところ:
ここに画像の説明を挿入
検索され、関連する関数が十分に存在することを確認します:
ここに画像の説明を挿入

解決

この関数はバージョン4.1に存在するため、バージョン4.1のコードを再ダウンロードしてから、再コンパイルしてインストールする必要があります。

这样还是挺麻烦的,因为是git,可以利用切换分支来解决版本的问题。

ブランチを切り替える場合は、最初にバージョン4.1のIDを確認する必要があります。

公式ウェブサイトでダウンロードインターフェースを再度開き、gitでブラウズインターフェースに入ります
ここに画像の説明を挿入

アドレス:
https ://git.ffmpeg.org/gitweb/ffmpeg.git

4.1.xのバージョンを直接選択して、コミットを入力します
ここに画像の説明を挿入

ここで、コミットのコミットIDを確認できます。

commit	4521700f295f35da4768f88b570e0836a858ce7b
tree	53e22f7d49cc946c635373d32abfa556961067ed
parent	2f54cd9548e2a8fe0ecba9a345b66f0798dd243e

ここに画像の説明を挿入

次に、独自のffmpegストレージディレクトリを入力し、次のコマンドを使用してブランチを切り替えます。

git switch -c 2f54cd9548e2a8fe0ecba9a345b66f0798dd243e

切り替え後、git logを使用して、切り替えが成功したかどうか、および現在どこにあるかを確認できます。
ここに画像の説明を挿入

次に、再コンパイルしてインストールします。

以前に書かれたものを参照できます:
https ://truedei.blog.csdn.net/article/details/120188699

確認

今あることがわかります

zh@zh-lpc:~/project$ cat /usr/local/ffmpeg/include/libavformat/avformat.h |grep "avpriv_io_delete"
zh@zh-lpc:~/project$
zh@zh-lpc:~/project$
zh@zh-lpc:~/project$ cat /usr/local/ffmpeg/include/libavformat/avio.h |grep "avpriv_io_delete"
int avpriv_io_delete(const char *url);
zh@zh-lpc:~/project$

再コンパイルと実行も成功しました:

zh@zh-lpc:~/project/ffmpeg$ gcc -g ff.c -o ff -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavutil
zh@zh-lpc:~/project/ffmpeg$
zh@zh-lpc:~/project/ffmpeg$
zh@zh-lpc:~/project/ffmpeg$ ls
ff  ff.c  ffmpeg_file.c  hello  helloword.c
zh@zh-lpc:~/project/ffmpeg$
zh@zh-lpc:~/project/ffmpeg$ touch test.txt
zh@zh-lpc:~/project/ffmpeg$
zh@zh-lpc:~/project/ffmpeg$ ls
ff  ff.c  ffmpeg_file.c  hello  helloword.c  test.txt
zh@zh-lpc:~/project/ffmpeg$
zh@zh-lpc:~/project/ffmpeg$ ./ff
zh@zh-lpc:~/project/ffmpeg$
zh@zh-lpc:~/project/ffmpeg$ ls
ff  ff.c  ffmpeg_file.c  hello  helloword.c
zh@zh-lpc:~/project/ffmpeg$

テスト後、ヘッダーファイルに「libavformat/avio.h」と「libavformat/avformat.h」を書き込むことができます。

avio.hヘッダーファイルがavformat.hに含まれているためです。

#include <stdio.h>
#include <libavutil/log.h>
//#include <libavformat/avio.h>
#include <libavformat/avformat.h>


int main()
{
    
    

        char *fileName="./test.txt";

        int ret;
        ret=avpriv_io_delete(fileName);

        if(ret < 0)
        {
    
    
                av_log(NULL,AV_LOG_ERROR,"Fail to delete file %s \n",fileName);
                return -1;
        }

        return 0;
}
~

おすすめ

転載: blog.csdn.net/qq_17623363/article/details/120235481