回答:
mkvtoolnixのmkvpropedit
一部であるこれを使用してこれを行う方法を見つけました。
mkvpropedit "foo.mkv" -e info -s title="This Is The Title"
このアプリのGUIラッパーとその他のMacインストール手順は、公式Webサイトで入手できます。
さらに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
VLCプレーヤーでファイルを開き、Ctrl + Iを押して、目的のメタデータ、タイトルなどを選択し、変更してから、下部で[データの保存]をクリックします。それで全部です。
他の外部エディターは必要ありません。
MKVToolNix
GUIの道:
mkv
ファイルを開きます。
アイテムの下segment information
にtitle
、必要に応じてタイトルを変更します。
たくさんのファイルをダウンロードしましたが、その多くはタイトルに***が含まれていました。別の答えの拡張子が私自身のスクリプトを作成したためです。
.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