Не удалось найти тег для кодека h264 в кодеке stream # 0 (преобразование ffmpeg flac в alac)

#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"' {} ;