2013-05-05 67 views
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但stringconst 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個名稱「視頻」就是這樣。

回答

1

根據this,存在這樣做的功能。

const char* av_get_media_type_string(enum AVMediaType media_type) 
+0

我使用了這個功能,但我只在名字上得到我的列表。我正在用代碼更新我的問題。 – 2013-05-05 22:44:02

+0

更新我的問題請看看它。謝謝。 – 2013-05-05 22:48:21

+0

我沒有看到'avm'在任何地方發生變化,所以我不明白你是如何期待字符串變化的:o – 2013-05-05 22:54:05