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


0

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-이 경우 "영국의 노래". 이 특정 메타 데이터를 읽고 libav 설명서 에서 변수로 사용하는 방법에 대한 정보를 볼 수 없습니다

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

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

이것은 "MyFile.ac3"이라는 파일을 제공하는 반면 "UK Songs.ac3"이라는 파일을 원합니다.


왜 이것을 ffmpeg 태그로 설정했는지 잘 모르겠습니다 . ffmpegavconv같지 않음 그리고 당신이 모두를 사용하지 않는 별도의 태그를 보증 할만큼 다르다.
llogan

"Cunningham 's Law":-)
테렌스 에덴

답변:


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 % 확실하지 않습니다.


avconv는 stderr로 출력되므로 grep이 작동하려면 다음이 필요합니다 avconv -i in.mkv 2>&1 | grep -m 1 ...( -m 1첫 번째 결과 만 가져옵니다)
Terence Eden

1

당신과 타이틀을 얻을 수 있습니다 ffprobe(NO 혼자 grep, sed, awk필요 등). 나는 avprobe할 수있는 것이 매우 의심 스럽다 .

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

이 예제를 자주 사용하는 스크립트 / 쉘 / 명령에 적용 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.