C# - 使用QTLibrary控件来获取m4p元数据问题

时间:2016-07-05 13:28:54

标签: c# winforms quicktime

尝试从m4p文件中提取元数据时,我遇到了使用Apple Quicktime Control表单的问题。

我有一个字符串数组,用于保存单个文件的文件路径,然后按如下方式循环显示:

foreach (string file in files)
{
    axQTControl1.URL = file;

    // Create new movie object
    QTOLibrary.QTMovie mov = new QTOLibrary.QTMovie();
    mov = axQTControl1.Movie;

    string title = mov.get_Annotation((int)QTAnnotationEnum.qtAnnotationFullName);
} 

但是,我遇到的问题是,我可以从我的QTMovie对象调用的唯一真实方法包括get_Dimensionsget_Rectangle

根据this tutorial, however,,我应该可以使用get_Annotation来提取元数据。

我很难找到关于此的任何文档,而该教程是关于我得到的唯一帮助。如果有任何想法或链接让我朝着正确的方向前进,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。这适用于m4a和m4p文件,可能还有其他文件,但我还没有测试过m4b等。

using QTOLibrary;

foreach (string file in files)
{
    axQTControl1.URL = file;

    // Create new movie object
    QTOLibrary.QTMovie mov = new QTOLibrary.QTMovie();
    mov = axQTControl1.Movie;

    string title = mov.Annotation[(int)QTAnnotationsEnum.qtAnnotationFullName];
    string artist = mov.Annotation[(int)QTAnnotationsEnum.qtAnnotationArtist];
    string album = mov.Annotation[(int)QTAnnotationsEnum.qtAnnotationAlbum];
    songs.Add(new Song(title, album, artist, file));
    WriteLine("Evaluated " + title);
}

// Make sure the previous file is not in use
// This will prevent an IOException when the file is in use and cannot be moved
axQTControl1.URL = "";