Ich möchte bestimmte Metadaten aus einer MKV-Datei extrahieren und als Dateinamen einer konvertierten Datei verwenden.
Beispiel: Wenn ich laufeavconv -i MyFile.mkv
Ich erhalte die folgende Ausgabe
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
...
Ich möchte Metadata -> title
- in diesem Fall "UK Songs". Ich kann keine Informationen zum Lesen dieser spezifischen Metadaten und zur Verwendung als Variable in derlibav-Dokumentation
Im Moment konvertiere ich die Datei mit
avconv -i MyFile.mkv -acodec copy MyFile.ac3"
Dadurch erhalte ich eine Datei mit dem Namen „MyFile.ac3“, obwohl ich eine Datei mit dem Namen „UK Songs.ac3“ haben möchte.
Antwort1
Dadurch werden nur die Titelmetadaten ausgegeben:
echo "$(avconv -i MyFile.mkv | grep '^\s*title\s*:' | sed 's/[[:space:]]*title[[:space:]]*:[[:space:]]//')"
Und so wird die Konvertierung in den gewünschten Dateinamen durchgeführt:
avconv -i MyFile.mkv -acodec copy "$(avconv -i MyFile.mkv | grep '^\s*title\s*:' | sed 's/[[:space:]]*title[[:space:]]*:[[:space:]]//').ac3"
Zumindest funktioniert dies hier auf meinem OS X mit Bash. Ich bin nicht 100 % sicher, ob sich sed auf Ihrem Ubuntu erheblich unterscheidet.
Antwort2
Sie können den Titel ffprobe
allein mit erhalten (kein grep
, sed
, awk
, usw. erforderlich). Ich bezweifle stark, dass avprobe
das geht.
$ ffprobe -v error -show_entries format_tags=title -of default=nw=1:nk=1 in.mkv
UK Songs
Sie können dieses Beispiel an Ihr bevorzugtes Skript/Ihre bevorzugte Shell/Ihren bevorzugten Befehl anpassen.