Quiero extraer una parte específica de metadatos de un MKV y usarla como nombre de archivo de un archivo convertido.
Ejemplo, si corroavconv -i MyFile.mkv
Obtengo el siguiente resultado
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
...
Quiero Metadata -> title
- en este caso "Canciones del Reino Unido". No puedo ver ninguna información sobre cómo leer estos metadatos específicos y usarlos como una variable en eldocumentación libav
Por el momento, estoy convirtiendo el archivo usando
avconv -i MyFile.mkv -acodec copy MyFile.ac3"
Esto me da un archivo llamado "MyFile.ac3", mientras que quiero un archivo llamado "UK Songs.ac3".
Respuesta1
Esto solo generará metadatos del título:
echo "$(avconv -i MyFile.mkv | grep '^\s*title\s*:' | sed 's/[[:space:]]*title[[:space:]]*:[[:space:]]//')"
Y esto hará la conversión al nombre de archivo que deseas:
avconv -i MyFile.mkv -acodec copy "$(avconv -i MyFile.mkv | grep '^\s*title\s*:' | sed 's/[[:space:]]*title[[:space:]]*:[[:space:]]//').ac3"
Al menos lo hace aquí en mi OS X usando Bash, no estoy 100% seguro si sed difiere significativamente en su Ubuntu.
Respuesta2
Puede obtener el título ffprobe
solo (no se necesitan grep
, sed
, awk
, etc.). Dudo mucho que eso avprobe
pueda.
$ ffprobe -v error -show_entries format_tags=title -of default=nw=1:nk=1 in.mkv
UK Songs
Puede adaptar este ejemplo a su script/shell/comando favorito.