Будь-який спосіб редагувати метадані файлів MKV (без повторного кодування)?


14

Переглядаючи файл MKV з Інтернету у VLC, назви рядка (див. "# 1" на зображенні нижче), здається, витягнуті з метаданих, а не з імені файлу.

Якщо ви відкриєте панель "Отримати інформацію" у VLC, ви можете змінити заголовок ("# 2") і натиснути "Зберегти метадані" ("# 3"), але коли файл буде знову відкрито, стара інформація показано.

Я не знайшов жодного іншого додатка для Mac, який міг би редагувати метадані MKV. Кілька пропонують редагувати mp4 метадані, але це не те, що мені потрібно.

VLC занотований скріншот

Відповіді:



6

Як додаток, можна використовувати mkvpropeditв скрипті bash для встановлення заголовка всіх mkv-файлів у каталозі. (Враховуючи ім'я файлу - бажаний заголовок.)

#!/bin/bash

# This script takes all mkv files in the current directory and sets the filename
# (without .mkv) as its title in metadata

for mkvfile in *.mkv; do
    mkvpropedit "$mkvfile" -e info -s title="${mkvfile::-4}"
done

3

Просто відкрийте файл у програвачі VLC, Ctrl + I, виберіть потрібні метадані, заголовок тощо, змініть, а потім знизу натисніть «Зберегти дані». Це все.

Жоден інший зовнішній редактор не потрібен.


2
Тобто в ОП. Він сказав, що це не працює.
Tetsujin

1
Я спробував це за допомогою VLC на mac, і це працює. Вам просто потрібно обов’язково натиснути кнопку "Зберегти метадані" у вікні Інформація про медіа. Це не найпростіше знайти.
Ascii Dude

1
Я думаю, що може статися, якщо ви зміните його, це збереже, але якщо ви просто видалите його, це не стане.
Tetsujin

@Tetsujin вірно, якщо ви введете порожнє значення, воно не прийме його, воно буде схоже на те, що воно працює, але коли ви ще раз перевірте, старе значення все ще є, тому легко припустити, що воно не працює, і в спосіб, я думаю, це не так. Словом, ви не можете видалити, просто перейдіть на щось інше.
pzkpfw

2

MKVToolNixGUI чином:

  1. У меню виберіть редактор заголовків.

введіть тут опис зображення

  1. Відкрийте mkvфайл.

  2. Під пунктом segment informationє titleпункт, змінюйте назву, як хочете.

введіть тут опис зображення

  1. Немає кнопки збереження, використовуйте головне меню для збереження змін.

введіть тут опис зображення


Це працює, але це одна за одною - дивіться apple.stackexchange.com/questions/367737/… про масовий метод.
Tetsujin

0

Завантажив цикл файлів, у багатьох з яких було заголовок ***, як розширення іншої відповіді зроблений мій власний сценарій.

Він змінює заголовок для всіх .mkvфайлів у каталозі (і це підкаталоги), вимагаючи відповідних дій. Дії: "Зберегти ім’я? [1] / Введіть нове ім'я? [2] / Використовуйте ім'я файлу як ім'я фільму? [3]".

Можливо, оновіть його пізніше на github , ось що зараз є:

#!/bin/sh

# This script takes all mkv files in the (sub)directory and sets it's Movie name/Title
# Requires mkvtools (mkvpropedit) and mediainfo installed
#
# param1 Starting directory (defaults to current)
# param2 Default action to do with files
# (Keep the name?[1] / Type a new name?[2] / Use the filename as a movie name?[3])
# Be carefaul with param2 since this script doesn't (atm) back up the existing movie names.

IFS=$'\n'; set -f

updateTitle() {
    mkvpropedit "${1}" -e info -s title="${2}"
    echo "✅ Updated to \"${2}\"";
}

getMovieTitle() {
    echo "$(mediainfo ${1} | grep "Movie name" | sed 's/^.*: //')";
}

parseFilename() {
    filename=${1##*/}
    filename=${filename%.*}
    echo ${filename}
}

chooseAction() {
    f="${1}"
    curFilename="${2}"
    defaultAction="${3}"

    if [[ -n "${defaultAction}" ]]; then
        ans="${defaultAction}"
    else
        read -p "Keep the name?[1] / Type a new name?[2] / Use the filename as a movie name?[3] : " -n 1 ans
        echo
    fi

    case "${ans}" in

    1)
        echo "Keeping the old name"
        ;;
    2)
        read -p "New movie name: " newName
        updateTitle ${f} ${newName}
        ;;
    3)
        updateTitle ${f} ${curFilename}
        ;;
    *)
        echo "Invalid char \"${ans}\""
        chooseAction $@
        ;;
    esac
    echo
}

renameMovies() {
    for f in $(find ${1} -name '*.mkv'); do
        curTitle="$(getMovieTitle ${f})"
        curFilename="$(parseFilename ${f})"

        echo "File location - ${f}"
        echo "File name     - ${curFilename}"
        echo "Movie name    - ${curTitle}"

        chooseAction ${f} ${curFilename} ${2}
    done
    echo "Done"

}

renameMovies ${1:-$(pwd)} ${2}

unset IFS; set +f

-3

MetaX для Windows додасть теги до MKV-файлів (а також MP4, M4V, WMV та AVI). Він також шукає в Інтернеті інформацію, яку використовувати для тегування (обкладинка, актори, ...)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.