Любой способ редактировать метаданные файлов MKV (без перекодирования)?

14

При просмотре MKV-файла из Интернета в VLC строка заголовка (см. «# 1» на рисунке ниже), похоже, извлекается из метаданных, а не из имени файла.

Если вы откроете панель «Get Info» в VLC, вы можете изменить заголовок («# 2»), а затем нажать «Сохранить метаданные» («# 3»), но когда файл повторно открывается, старая информация показано на рисунке.

Я не нашел других приложений для Mac, которые могли бы редактировать метаданные MKV. Некоторые предлагают редактировать метаданные mp4, но это не то, что мне нужно.

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

Ти Джей Луома
источник

Ответы:

15

Я нашел способ сделать это с помощью mkvpropeditкоторый является частью mkvtoolnix .

mkvpropedit "foo.mkv" -e info -s title="This Is The Title"

Для этого приложения есть оболочка с графическим интерфейсом и другие инструкции по установке Mac, доступные на официальном сайте .

Ти Джей Луома
источник
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
Это в ОП. Он сказал, что это не сработало.
Тецудзин
1
Я попробовал это с помощью VLC на Mac, и это работает. Вам просто нужно обязательно нажать кнопку «Сохранить метаданные» в окне информации о мультимедиа. Это не самая простая вещь, чтобы найти.
Ascii Dude
1
Я думаю, что может произойти, если вы измените его, он сохранит, но если вы просто удалите его, это не так.
Тецудзин
@Tetsujin является правильным, если вы введете пустое значение, оно не примет его, оно будет выглядеть так, как будто оно работает, но при повторной проверке старое значение все еще там, поэтому легко предположить, что оно «не работает», и в Я думаю, что это не так. Короче говоря, вы не можете удалить, просто измените на что-то другое.
pzkpfw
1

MKVToolNixGUI образом:

  1. В меню выберите редактор заголовков.

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

  1. Откройте mkvфайл.

  2. Под segment informationесть titleназвание пункта, изменение , как вы хотите.

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

  1. Там нет кнопки сохранения, используйте главное меню, чтобы сохранить изменения.

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

Xaqron
источник
Это работает, но по одному - см. Apple.stackexchange.com/questions/367737/… для массового метода.
Тецудзин
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
SLCH000
источник
-3

MetaX для Windows будет помечать файлы MKV (а также MP4, M4V, WMV и AVI). Он также ищет в Интернете информацию, которую можно использовать для пометки (обложки, актеры, ...)

Дэн
источник