avconv에서 특정 MKV 메타데이터 읽기

avconv에서 특정 MKV 메타데이터 읽기

MKV에서 특정 메타데이터를 추출하여 변환된 파일의 파일 이름으로 사용하고 싶습니다.

예를 들어, 내가 실행하면avconv -i MyFile.mkv

나는 다음과 같은 결과를 얻습니다.

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
...

저는 원합니다 Metadata -> title. 이 경우에는 "UK Songs"입니다. 이 특정 메타데이터를 읽고 이를 변수로 사용하는 방법에 대한 정보를 볼 수 없습니다.libav 문서

현재는 다음을 사용하여 파일을 변환하고 있습니다.

avconv -i MyFile.mkv -acodec copy MyFile.ac3"

이렇게 하면 "MyFile.ac3"이라는 파일이 생성되는 반면, 저는 "UK Songs.ac3"이라는 파일을 원합니다.

답변1

그러면 제목 메타데이터만 출력됩니다.

echo "$(avconv -i MyFile.mkv | grep '^\s*title\s*:' | sed 's/[[:space:]]*title[[:space:]]*:[[:space:]]//')"

그러면 원하는 파일 이름으로 변환됩니다.

avconv -i MyFile.mkv -acodec copy "$(avconv -i MyFile.mkv | grep '^\s*title\s*:' | sed 's/[[:space:]]*title[[:space:]]*:[[:space:]]//').ac3"

적어도 Bash를 사용하는 내 OS X에서는 작동하지만 sed가 Ubuntu에서 크게 다른지 100% 확신할 수는 없습니다.

답변2

, , 등이 필요 ffprobe하지 않은 경우에만 제목을 얻을 수 있습니다 . 그럴 수 있을지 매우 의심스럽습니다.grepsedawkavprobe

$ ffprobe -v error -show_entries format_tags=title -of default=nw=1:nk=1 in.mkv
  UK Songs

이 예제를 선호하는 스크립트/셸/명령에 적용할 수 있습니다.

관련 정보