#macos #ffmpeg #flac
#macos #ffmpeg #flac
Вопрос:
Я пытаюсь преобразовать аудиофайл flac в аудиофайл alac. Я использую команду ffmpeg в терминале mac os после установки ffmpeg с помощью команды brew install ffmpeg.
После выполнения следующей команды
for name in *.flac; do ffmpeg -nostdin -i "$name" -acodec alac "${name%.*}.m4a"; done
Я получаю следующую ошибку:
Stream mapping:
Stream #0:1 -> #0:0 (mjpeg (native) -> h264 (libx264))
Stream #0:0 -> #0:1 (flac (native) -> alac (native))
[ipod @ 0x7fa5c6800000] Frame rate very high for a muxer not efficiently supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync 2
[libx264 @ 0x7fa5c5804a00] using SAR=1/1
[libx264 @ 0x7fa5c5804a00] MB rate (77760000) > level limit (16711680)
[libx264 @ 0x7fa5c5804a00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7fa5c5804a00] profile High, level 6.2
[libx264 @ 0x7fa5c5804a00] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[ipod @ 0x7fa5c6800000] Could not find tag for codec h264 in stream #0, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:1 --
Conversion failed!
Проблема находится в потоке # 0: 1?
Должен ли я использовать
-c:a alac
вместо
-acodec alac
Комментарии:
1. Поделитесь полным журналом.
2. Я обнаружил, что мне пришлось использовать параметры «-c: a alac -c: v copy», поэтому он скопировал видеопоток обложки альбома и перекодировал аудиопоток! Проблема устранена, но, возможно, я хочу сохранить это здесь, чтобы кто-то другой мог счесть это полезным?
Ответ №1:
что я сделал, так это
for name in *.flac; do ffmpeg -nostdin -i "$name" -c:a alac -c:v copy "${name%.*}.m4a"; done
Комментарии:
1. Спасибо за это! Но почему эта команда устраняет проблему?
Ответ №2:
for name in *.flac; do ffmpeg -i "$name" -select_streams a:0 -c:a alac -c:v copy "${name%.*}.m4a"; done
вы можете использовать -select_streams a: 0, чтобы конкретно настроить таргетинг на первый аудиопоток.
Комментарии:
1.
-select_streams a:0
есть вариант дляffprobe
. Использование его сffmpeg
приведет кUnrecognized option 'select_streams'.
. Вероятно, вы имели в виду использовать-map
опцию.2. Кроме того, с -map a: 0 вам все еще нужна копия -c: v? Команда, которая работала лучше всего для меня, это
find -name "*.flac" -exec bash -c ffmpeg -nostdin -i "{}" -map a:0 -c:a alac "${0/.flac}.m4a"' {} ;