gpt4 book ai didi

c# - 用于 webm 视频转换的 API

转载 作者:太空狗 更新时间:2023-10-29 17:51:20 33 4
gpt4 key购买 nike

有人知道用于将视频转换为谷歌新的 WebM 视频格式的任何(原型(prototype))c# API 吗?

最佳答案

快速谷歌搜索说:不。但是 example encoder看起来应该可以使用 P/Invoke 轻松将其翻译成 C#。 Encoder Algorithm Interface看起来很容易管理。如果其他一切都失败了,总有 C++/CLI。谁启动了 codeplex 项目? :-)

更新:截至目前,有一个 hackish、基本的工作原型(prototype) .NET API。给你:

#include "vpx_codec.h"

#define VPX_CODEC_DISABLE_COMPAT 1
#include "vpx_encoder.h"
#include "vp8cx.h"

#define vp8iface (&vpx_codec_vp8_cx_algo)

using namespace System;

namespace WebM
{
namespace VP8
{
namespace Native
{
public ref class VP8Codec
{
private:
vpx_codec_ctx_t* ctx;

VP8Codec(vpx_codec_ctx_t* ctx)
{
this->ctx = ctx;
}

public:
~VP8Codec()
{
vpx_codec_destroy(ctx);
delete ctx;
}

property String^ LastError
{
String^ get()
{
return gcnew String(vpx_codec_error(ctx));
}
}

property String^ LastErrorDetail
{
String^ get()
{
return gcnew String(vpx_codec_error_detail(ctx));
}
}

int Encode()
{
// TODO: do actual encoding
return
vpx_codec_encode(ctx, NULL, 0, 1, 0, VPX_DL_REALTIME);
}

static VP8Codec^ CreateEncoder() // TODO: add 'config' argument
{
vpx_codec_ctx_t* ctx;
vpx_codec_enc_cfg_t cfg;

if(vpx_codec_enc_config_default(vp8iface, &cfg, 0))
{
return nullptr; // TODO: throw exception
}

ctx = new vpx_codec_ctx_t;

if (vpx_codec_enc_init(ctx, vp8iface, &cfg, 0))
{
delete ctx;
return nullptr; // TODO: throw exception
}

return gcnew VP8Codec(ctx);
}

static property int Version
{
int get()
{
return vpx_codec_version();
}
}

static property String^ VersionString
{
String^ get()
{
return gcnew String(vpx_codec_version_str());
}
}

static property String^ BuildConfig
{
String^ get()
{
return gcnew String(vpx_codec_build_config());
}
}

static String^ GetErrorDescription(int errorCode)
{
return gcnew String(
vpx_codec_err_to_string((vpx_codec_err_t)errorCode));
}

static property String^ IfaceName
{
String^ get()
{
return gcnew String(vpx_codec_iface_name(vp8iface));
}
}
};
}
}
}

您应该能够将此链接到来自 libvpx Windows buildvpxmtd.lib .我无法摆脱一个警告,但到目前为止它似乎有效。不过,我的 C++/CLI 有点生疏,因此代码中可能存在一些内存泄漏。

测试程序:

namespace WebM.VP8
{
using System;

using WebM.VP8.Native;

public class Program
{
public static void Main()
{
using (var encoder = VP8Codec.CreateEncoder())
{
Console.WriteLine(encoder.Encode());
}
}
}
}

关于c# - 用于 webm 视频转换的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2874140/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com