FLAC를 OPUS 파일로 변환하는 대규모 스크립트가 있는데 특정 문제로 어려움을 겪고 있습니다. 표지 이미지를 변환하여 복사하려고 하면 오류가 발생합니다. 프롤로그, 변환을 처리하는 스크립트 부분은 다음과 같습니다.
find $DIRECTORY -type f \
\( -iname "*${EXTENSIONS[0]}" $(if [ ${#EXTENSIONS[@]} -gt 1 ]; \
then printf -- '-o -iname *%s ' "${EXTENSIONS[@]:1}"; fi) \) \
-print0 | \
xargs -0 -P $THREADS -I {} \
ffmpeg -i "{}" \
$(if [ ! $VERBOSE ]; then echo "-loglevel warning"; fi) \
-map 0:a \
-c:a libopus -map_metadata 0 -map_metadata:s:a 0:s:a \
-b:a $BITRATE \
-map 0:v \
-c:v copy -map_metadata 0 -map_metadata:s:v 0:s:v -disposition:v:1 attached_pic \
-y "{}.opus"
다음 오류가 발생합니다.
Stream mapping:
Stream #0:0 -> #0:0 (flac (native) -> opus (libopus))
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[opus @ 0x562a9db664c0] Unsupported codec id in stream 1
[out#0/opus @ 0x562a9db64580] Could not write header (incorrect codec parameters ?): Invalid argument
[aost#0:0/libopus @ 0x562a9db68540] Error initializing output stream:
그러나 이것은 여기서 작동합니다.
ffmpeg -i "{}" \
$(if [ ! $VERBOSE ]; then echo "-loglevel warning"; fi) \
-map 0:a \
-c:a libopus -map_metadata 0 -map_metadata:s:a 0:s:a \
-b:a $BITRATE \
-y "{}.opus"
그리고 이것은 여기 있습니다:
ffmpeg -i "{}" \
$(if [ ! $VERBOSE ]; then echo "-loglevel warning"; fi) \
-map 0:a \
-map_metadata 0 -map_metadata:s:a 0:s:a \
-b:a $BITRATE \
-map 0:v \
-c:v copy -map_metadata 0 -map_metadata:s:v 0:s:v -disposition:v:1 attached_pic \
-y "{}.mp3"
유일한 차이점은 후자는 영상을 복사하지 않거나 작품 대신 MP3를 출력한다는 점이다. 따라서 ffmpeg 명령 자체는 정확해야 합니다. 왜냐하면 비디오 스트림(OPUS 및 MP3에)을 포함하지 않으면 이미지가 복사되지 않기 때문입니다.
이것은 매우 이상한 동작이며 지금 당장 어떻게 고칠 수 있는지 전혀 모르겠습니다. 이 내용이 어딘가에 문서화되어 있습니까? 리보푸스 문제인 것 같은데 왜 리보푸스는 영상까지 보고, 그렇지 않다면 왜 오류가 발생하는 걸까요?
추신: ffprobe가 유용할 수 있다는 것을 깨달았습니다.썸네일이 포함된 OPUS 파일의 경우(Kid3으로 제작) 및같은 노래의 flac 파일의 경우
PPS: 누군가가 저를 능가하기 전에, 그렇습니다. 저는 for 루프를 사용하여 이 작업을 수행할 수 있습니다. 두 가지 모두가 가능한 유용한 스크립트보다는 도전을 원합니다. 예, 수동으로 할 수 있습니다. 매달 적어도 하나의 앨범을 구입합니다. 수동으로 하고 Jellyfin에 flac를 추가하고 싶지 않습니다.
답변1
현재 FFMPEG는 OGG 컨테이너의 커버 아트를 지원하지 않습니다.ogg/opus 메타데이터에 포함된 앨범 표지 아트 이미지 작성 지원 - 댓글 11
매개변수를 사용하여 이미지를 표지 아트로 수동으로 추가할 수 있습니다 -metadata:s:a METADATA_BLOCK_PICTURE=...
.
수동 해결 방법은 다음을 참조하세요.OGG 오디오 파일에 예술적인 커버 추가슈퍼유저