Cライブラリパラメータをラップする方法(X264 .NETラッパーの作成)
質問
SO DLLでは、x264_param_t
Structure \ Objectとx264_param_apply_profile
を設定する機能があります。 cでは、そのようなコード
x264_param_t param;
x264_param_default_preset(¶m, "veryfast", "zerolatency");
param.i_threads = 1;
param.i_width = width;
param.i_height = height;
param.i_fps_num = fps;
param.i_fps_den = 1;
// Intra refres:
param.i_keyint_max = fps;
param.b_intra_refresh = 1;
//Rate control:
param.rc.i_rc_method = X264_RC_CRF;
param.rc.f_rf_constant = 25;
param.rc.f_rf_constant_max = 35;
//For streaming:
param.b_repeat_headers = 1;
param.b_annexb = 1;
x264_param_apply_profile(¶m, "baseline");
.
私はそのようなもののためにラッパーを作成したいです。だから私はlibx264.dllとVisual Studio 2010 Proを持っています。
私はP \ Invoke Shubeの初心者ですので、たくさん入りません...
私が安全をしたいのはx264での作業のフレームです...今私は符号化部分だけが必要です...そしてcでそれをするための必要なサンプルコードはすべて次に、1つのイメージをH264にエンコードします。 X264 C API?。だから私はそこに言及されたもののためだけにラッパーを書く必要があります...だから私は尋問しています - パラメータとthap paramを設定するラッパーを作成する方法。そして私はそのラッパーをC#から戻す方法を見たいです。だからあなたがサポートにコードを提供することができれば私はそれを見るのがうれしいです。
解決
これを試してみる代わりに、自分で試してみると、素晴らしいMegui ?C#で開発され、C#または他の.NETプロジェクトで使用する準備ができているX264のすべてをサポートしています。ラッパーは必要ありません、彼らはすでにあなたのためにそのすべてをしました。
C#を使用してC#を使用してCライブラリ関数を呼び出すのはひどく難しくないが、あなたがそれをすべてやりたい場合は
他のヒント
驚くべきことに、これらの年々すべてでは、libx264のための最も単純な.NETラッパーでさえも構築され共有していないようです。だから私は最近私が "x264net"と呼び、Githubにそれを置くものを構築しました。 https://github.com/ BP2008 / X264NET
ラッパーは現時点で非常に単純化されているため、.NET言語からCライブラリにアクセスする方法の良い例です。私はそれがそれを使うのが難しいと思うので、私はP / Invokeを使用しませんでした。代わりに、Interoperabilityレイヤを作成するために "C ++ / CLI"という言語を使用しました。C ++ / CLIは、ネイティブC / C ++ライブラリにアクセスできるC ++に基づく言語であり、それ自体は.NETコードによってアクセス可能です。それで、それはP / Invokeのように管理対象とネイティブコードの間のギャップを埋めます。