簡體   English   中英

如何從各種視頻文件格式提取元數據?

[英]How can I extract meta data from various video file formats?

如何從各種視頻文件格式中提取元數據,尤其是分辨率和所用編解碼器的類型。 (還有其他所有東西,例如作者)。 我無法為此找到一個庫。

我找到了MediaInfo ,它提供了有關視頻或音頻文件的許多技術和標簽信息。

我發現subs4me的源代碼樹中有一個用於MediaInfo的JNI包裝器,我認為它非常有用。

以下是一些代碼片段,顯示了如何從媒體文件中提取一些信息:

File file         = new File("path/to/my/file");
MediaInfo info    = new MediaInfo();

info.open(file);

String format     = info.get(MediaInfo.StreamKind.Video, i, "Format", 
                             MediaInfo.InfoKind.Text,
                             MediaInfo.InfoKind.Name);

int bitRate       = info.get(MediaInfo.StreamKind.Video, i, "BitRate", 
                             MediaInfo.InfoKind.Text,
                             MediaInfo.InfoKind.Name);

float frameRate   = info.get(MediaInfo.StreamKind.Video, i, "FrameRate", 
                             MediaInfo.InfoKind.Text, 
                             MediaInfo.InfoKind.Name);

short width       = info.get(MediaInfo.StreamKind.Video, i, "Width", 
                             MediaInfo.InfoKind.Text, 
                             MediaInfo.InfoKind.Name);

int audioBitrate  = info.get(MediaInfo.StreamKind.Audio, i, "BitRate", 
                             MediaInfo.InfoKind.Text, 
                             MediaInfo.InfoKind.Name);

int audioChannels = info.get(MediaInfo.StreamKind.Audio, i, "Channels", 
                             MediaInfo.InfoKind.Text, 
                             MediaInfo.InfoKind.Name);

vikiiii解決方案有效,但是我發現:

  • 要使所有內容都在我的桌面上運行,仍需要一些工作。 (下載DLL,提取代碼,瀏覽文件...)
  • 我們不知道可用的常數(例如“ BitRate”)

結果,我安裝了Windows MediaInfo應用程序並搜索了可用於創建一些Java Enum和簡化用法的鍵。

我在github https://github.com/clun/movies-metadata上創建了一個存儲庫,以將所有內容都放在同一位置。 只需在示例項目上運行mvn:test即可獲取有關示例MP4,OGG,AVI,FLV,WEBM和MKV的信息。

這是測試的示例代碼:

  MovieMetadata movieMedataData = new MovieMetadata("./src/test/resources/small.mkv");
    movieMedataData.get(General.FORMAT);
    movieMedataData.get(Video.DURATION_STRING);
    movieMedataData.get(Video.WIDTH_STRING);
    movieMedataData.get(Video.HEIGHT_STRING);
    movieMedataData.get(Video.BITRATE_STRING);
    movieMedataData.get(Audio.COMPRESSION_RATIO);
    //...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM