從 avconv 讀取特定的 MKV 元數據

從 avconv 讀取特定的 MKV 元數據

我想從 MKV 中提取特定的元資料並將其用作轉換後的檔案名稱。

例如,如果我運行avconv -i MyFile.mkv

我得到以下輸出

avconv version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
  built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Input #0, matroska,webm, from 'MyFile.mkv':
  Duration: 00:06:49.05, start: 0.000000, bitrate: 9062 kb/s
    Chapter #0.0: start 0.000000, end 409.057000
    Metadata:
      title           : UK Songs
    Stream #0.0: Video: h264 (High), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
    Metadata:
      title           : x264   1280x720   Bitrate=7843 kb/s
...

我想要Metadata -> title- 在這種情況下是“英國歌曲”。我看不到任何有關讀取此特定元數據並將其用作變量的信息libav 文檔

目前,我正在使用轉換文件

avconv -i MyFile.mkv -acodec copy MyFile.ac3"

這給了我一個名為「MyFile.ac3」的文件,而我想要一個名為「UK Songs.ac3」的文件

答案1

這將只輸出標題元資料:

echo "$(avconv -i MyFile.mkv | grep '^\s*title\s*:' | sed 's/[[:space:]]*title[[:space:]]*:[[:space:]]//')"

這將轉換為您想要的檔案名稱:

avconv -i MyFile.mkv -acodec copy "$(avconv -i MyFile.mkv | grep '^\s*title\s*:' | sed 's/[[:space:]]*title[[:space:]]*:[[:space:]]//').ac3"

至少在我使用 Bash 的 OS X 上是這樣,不能 100% 確定 sed 在你的 Ubuntu 上是否有顯著差異。

答案2

您可以單獨獲得標題ffprobe(不需要grepsedawk等)。我對此非常懷疑avprobe

$ ffprobe -v error -show_entries format_tags=title -of default=nw=1:nk=1 in.mkv
  UK Songs

您可以將此範例改編成您最喜歡的腳本/shell/命令。

相關內容