0

Openh264 ライブラリを使用しています。以前、Linux 環境でこのライブラリを使用しました。しかし、Xcode で openh264 ライブラリをリンクするための実用的なドキュメントは見つかりませんでした。

Xcode に .a または .so ライブラリ ファイルを追加する他のソリューションを試しました。i) C++ ライブラリを Xcode Objective C プロジェクトにインポートする方法は? ii) Objective C で共有ライブラリ (.so) をリンクまたはロードする方法は?

しかし残念なことに、私は毎回失敗しました。このリンクから OpenH264 を取得しました: https://github.com/cisco/openh264。Openh264 ライブラリによって提供されるデモ エンコーダー デコーダー プロジェクトを実行できますが、このライブラリーを自分のプロジェクトにリンクするには助けが必要です。前もって感謝します。

4

1 に答える 1

0

OpenH264 ライブラリを任意の Xcode プロジェクトに統合する手順は次のとおりです。

  1. 次のリンクから OpenH264 ライブラリをダウンロードまたは複製します: https://github.com/cisco/openh264
  2. IOS アプリケーション、Objective C、およびその他の必須オプションを選択して、Xcode プロジェクトを作成します。
  3. OpenH264 ライブラリをすべてのファイルとフォルダーと共にプロジェクトのルート ディレクトリに配置します。たとえば、私の IOS アプリケーションはディレクトリ/user/rajib/HelloApp/HelloApp.xcodeprojにあり、OpenH264 ライブラリは/user/rajib/HelloApp/OpenH264Libraryに保持されています。
  4. ターミナルを開き、ルートモードを有効にします。
  5. OpenH264Library が保存されているディレクトリに移動し、次のコマンドで作成します: ->sudo make OS=ios ARCH=amrv7 install
  6. Project Build Setting に移動し、Header Search Path属性を見つけます。次のヘッダー パスを別の行に追加して、その属性に追加します。 $(inherited) , "$(SRCROOT)/OpenH264Library/codec/encoder/core/inc" , "$(SRCROOT)/OpenH264Library/codec/processing/interface" , "$(SRCROOT)/OpenH264Library/codec/common/inc" ""$(SRCROOT)/OpenH264Library/codec/api/svc"
  7. ここで、HelloApp プロジェクト内にcommon.xcodeprojprocessing.xcodeprojwelsenc.xcodeprojという名前の 3 つの Xcode プロジェクトをさらに統合する必要があります。これらの .xcodeproj ファイルはすべて、OpenH264Library 内にあります。OpenH264Library 内でその名前の .xcodeproj ファイルを見つけ、これらのファイルを HelloApp プロジェクト内にドラッグ アンド ドロップするだけです。
  8. Project Build Phase に移動し、Target Dependencies属性を見つけます。ワークプレイスからwelsencprocessingcommonプロジェクトを追加します。
  9. このプロジェクトをビルドしてみると、これら 3 つのプロジェクトがコンパイルおよび実行され、作業場所に 3 つの静的ライブラリが見つかります。
  10. ここで、プロジェクトのビルド フェーズに再び移動し、Link Binary with Libraries属性を見つけます。職場から libwelsenc.a、libprocessing.a、libcommon.a 静的ライブラリを追加します。

以上、openh264ライブラリのビルドとリンクの手順でした。これで、openh264 ライブラリ関数を簡単に呼び出すことができます。ここでは、OpenH264 ライブラリ関数を呼び出すエンコーダー初期化の簡単な作業コードを示しています。

//Adding Header files
#include "codec_api.h"
#include "codec_def.h"

//Calling OpenH264 Library function to initialize Encoder
- (IBAction)EncoderTestBtn:(id)sender {
    NSLog(@"Inside EncoderTestBtn");
    ISVCEncoder *pEncoder = NULL;
    int iRet = -1;
    iRet = WelsCreateSVCEncoder(&pEncoder);
    if(iRet == 0)
    {
        NSLog(@"Rajib_Check: Encoder Initialization SUCCESSFUL");
    }
    else
    {
        NSLog(@"Rajib_Check: ERROR--> iRet returned with = %d", iRet);
    }

}
于 2015-10-07T09:19:13.307 に答える