W jakikolwiek sposób edytować metadane plików MKV (bez ponownego kodowania)?

14

Podczas oglądania pliku MKV z Internetu w VLC, pasek tytułowy (patrz „nr 1” na obrazku poniżej) wydaje się ściągany z metadanych, a nie nazwy pliku.

Jeśli otworzysz panel „Uzyskaj informacje” w VLC, możesz zmienić tytuł („# 2”), a następnie kliknąć „Zapisz metadane” („# 3”), ale po ponownym otwarciu pliku stare informacje są pokazane.

Nie znalazłem żadnych innych aplikacji Mac, które mogłyby edytować metadane MKV. Kilka oferuje edycję metadanych MP4, ale nie tego potrzebuję.

Zrzut ekranu z komentarzem VLC

TJ Luoma
źródło

Odpowiedzi:

6

Jako dodatek można użyć mkvpropeditskryptu bash do ustawienia tytułu wszystkich plików mkv w katalogu. (Podana nazwa pliku to pożądany tytuł).

#!/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
jeż
źródło
3

Wystarczy otworzyć plik w odtwarzaczu VLC, Ctrl + I, wybrać żądane metadane, tytuł itp., Zmienić, a następnie na dole kliknąć „Zapisz dane”. To wszystko.

Nie jest potrzebny żaden inny zewnętrzny edytor.

Pomocnik Bathinda
źródło
2
To jest w PO. Powiedział, że to nie działa.
Tetsujin
1
Próbowałem tego za pomocą VLC na komputerze Mac i działa. Musisz tylko kliknąć przycisk „Zapisz metadane” w oknie Informacje o multimediach. Nie jest to najłatwiejsze do znalezienia.
Ascii Dude
1
Myślę, że może się zdarzyć, jeśli go zmienisz, to zapisze, ale jeśli po prostu go usuniesz, nie zmieni się.
Tetsujin
@ Tetsujin jest poprawny, jeśli wpiszesz pustą wartość, nie przyjmie jej, będzie wyglądać, jakby działała, ale kiedy ponownie sprawdzisz, stara wartość nadal tam jest, więc łatwo założyć, że „nie działa”, i w tak chyba nie. Krótko mówiąc, nie możesz usunąć, po prostu zmień na coś innego.
pzkpfw
2

Sposób MKVToolNixGUI:

  1. Z menu wybierz edytor nagłówków.

wprowadź opis zdjęcia tutaj

  1. Otwórz mkvplik.

  2. Poniżej segment informationznajduje się titlepozycja, zmień tytuł, jak chcesz.

wprowadź opis zdjęcia tutaj

  1. Nie ma przycisku Zapisz, użyj menu głównego, aby zapisać zmiany.

wprowadź opis zdjęcia tutaj

Xaqron
źródło
To działa, ale działa pojedynczo - metoda masowa znajduje się na stronie apple.stackexchange.com/questions/367737/ ...
Tetsujin
0

Pobrałem pętlę plików, z których wiele miało tytuł ***, ponieważ rozszerzenie innej odpowiedzi stworzyło mój własny skrypt.

Zmienia tytuł dla wszystkich .mkvplików w katalogu (i jego podkatalogach), prosząc o odpowiednie działanie. Działania to „Zachowaj nazwę? [1] / Wpisz nową nazwę? [2] / Użyj nazwy pliku jako nazwy filmu? [3]”.

Może zaktualizuję to później na github , oto co jest na teraz:

#!/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
źródło
-3

MetaX dla Windows oznaczy pliki MKV (a także MP4, M4V, WMV i AVI). Przeszukuje również Internet w celu znalezienia informacji do oznaczenia (okładka, aktorzy, ...)

Dan
źródło