Cライブラリパラメータをラップする方法(X264 .NETラッパーの作成)

StackOverflow https://stackoverflow.com/questions/3223107

質問

SO DLLでは、x264_param_t Structure \ Objectとx264_param_apply_profileを設定する機能があります。 cでは、そのようなコード

を設定するための

x264_param_t param;
x264_param_default_preset(&param, "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(&param, "baseline");
.

私はそのようなもののためにラッパーを作成したいです。だから私はlibx264.dllとVisual Studio 2010 Proを持っています。

.NET C#ラッパーを作成する方法は?

私はP \ Invoke Shubeの初心者ですので、たくさん入りません...

私が安全をしたいのはx264での作業のフレームです...今私は符号化部分だけが必要です...そしてcでそれをするための必要なサンプルコードはすべて次に、1つのイメージをH264にエンコードします。 X264 C API?。だから私はそこに言及されたもののためだけにラッパーを書く必要があります...だから私は尋問しています - パラメータとthap paramを設定するラッパーを作成する方法。そして私はそのラッパーをC#から戻す方法を見たいです。だからあなたがサポートにコードを提供することができれば私はそれを見るのがうれしいです。

役に立ちましたか?

解決

これを試してみる代わりに、自分で試してみると、素晴らしいMegui ?C#で開発され、C#または他の.NETプロジェクトで使用する準備ができているX264のすべてをサポートしています。ラッパーは必要ありません、彼らはすでにあなたのためにそのすべてをしました。

C#を使用してC#を使用してCライブラリ関数を呼び出すのはひどく難しくないが、あなたがそれをすべてやりたい場合は http://pinvoke.net 。これはあなたにこれを自分で行う方法をたくさん与えます。

他のヒント

驚くべきことに、これらの年々すべてでは、libx264のための最も単純な.NETラッパーでさえも構築され共有していないようです。だから私は最近私が "x264net"と呼び、Githubにそれを置くものを構築しました。 https://github.com/ BP2008 / X264NET

ラッパーは現時点で非常に単純化されているため、.NET言語からCライブラリにアクセスする方法の良い例です。私はそれがそれを使うのが難しいと思うので、私はP / Invokeを使用しませんでした。代わりに、Interoperabilityレイヤを作成するために "C ++ / CLI"という言語を使用しました。C ++ / CLIは、ネイティブC / C ++ライブラリにアクセスできるC ++に基づく言語であり、それ自体は.NETコードによってアクセス可能です。それで、それはP / Invokeのように管理対象とネイティブコードの間のギャップを埋めます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top