0
我有这个功能用C如何通过名称获得编解码器的ffmpeg列表?
int Encoder_GetCurrentCodecType()
{
if (current_codec != NULL)
return (int) current_codec->type;
return AVMEDIA_TYPE_UNKNOWN;
}
但函数返回每个编解码器类型的代码。 像:0,1,2,3,4,5,6,7
如果我做在功能测试I型:AVMediaType::
然后,我看到所有7编解码器的类型列表中有例如:
AVMEDIA_TYPE_AUDIO
所以我想做出这样的一个与INT但string
或const char*
将返回我的类型的名称,而不是代码的功能。
我该怎么办?
EDIT
在C文件我没有:
const char* Encoder_av_get_media_type_string(enum AVMediaType media_type)
{
switch (media_type) {
case AVMEDIA_TYPE_VIDEO: return "video";
case AVMEDIA_TYPE_AUDIO: return "audio";
case AVMEDIA_TYPE_DATA: return "data";
case AVMEDIA_TYPE_SUBTITLE: return "subtitle";
case AVMEDIA_TYPE_ATTACHMENT: return "attachment";
default: return NULL;
}
}
然后在C和C之间的连接头文件++我没有:
const char* Encoder_av_get_media_type_string(enum AVMediaType media_type);
然后在我做的C++头文件:
property List<String^> ^GetCodec
{
List<String^>^ get()
{
List<String^> ^l = gcnew List<String^>;
String ^s;
s = gcnew String(Encoder_av_get_media_type_string(avm));
l->Add(s);
return l;
}
}
然后在CSHARP我所做的:
for (int i = 0; i < f.GetCodec.Count; i++)
{
ss.Add(f.GetCodec[i]);
}
所以用C++,也许它不应该是财产我想做些什么,在CSHARP当我做f.GetCodec。那么它会向我显示所有编解码器类型名称的列表。
就像当我做f.GetCodec.Add看看属性列表,从而f.GetCodec像一个属性。(在这里,我将所有类型的名称的列表)
如果这是不可能的,然后只是在CSHARP中创建一个包含所有类型名称的列表。
但现在我只能得到1个名称“视频”就是这样。
我使用了这个功能,但我只在名字上得到我的列表。我正在用代码更新我的问题。 – 2013-05-05 22:44:02
更新我的问题请看看它。谢谢。 – 2013-05-05 22:48:21
我没有看到'avm'在任何地方发生变化,所以我不明白你是如何期待字符串变化的:o – 2013-05-05 22:54:05