Объедините аудиофайлы с помощью ffmpeg

Я пытаюсь объединить ac3 и aac с помощью ffmpeg.

ffprobe из jpn_op.m4a:

      Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'jpn_op.m4a':
Metadata:
major_brand     : M4A 
minor_version   : 512
compatible_brands: M4A isomiso2
encoder         : Lavf58.76.100
Duration: 00:01:17.28, start: 0.000000, bitrate: 224 kb/s
Stream #0:0(jpn): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 224 kb/s (default)
Metadata:
  handler_name    : SoundHandler
  vendor_id       : [0][0][0][0]
Side data:
  audio service type: main

ffprobe из eng_nop.m4a

      Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'eng_nop.m4a':
Metadata:
major_brand     : M4A 
minor_version   : 512
compatible_brands: M4A isomiso2
encoder         : Lavf58.76.100
Duration: 00:22:09.26, start: 0.023000, bitrate: 41 kb/s
Stream #0:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 39 kb/s (default)
Metadata:
  handler_name    : SoundHandler
  vendor_id       : [0][0][0][0]

Я пробовал это:

      ffmpeg -f concat -i concat_files.txt -c copy final.m4a -y

concat_files.txt содержит:

      file 'jpn_op.m4a'
file 'eng_nop.m4a'

ffprobe из final.m4a

      Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'final.m4a':
Metadata:
major_brand     : M4A 
minor_version   : 512
compatible_brands: M4A isomiso2
encoder         : Lavf58.76.100
Duration: 00:23:26.50, start: 0.000000, bitrate: 51 kb/s
Stream #0:0(jpn): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 224 kb/s (default)
Metadata:
  handler_name    : SoundHandler
  vendor_id       : [0][0][0][0]
Side data:
  audio service type: main

Но вместо 2-го файла в final.m4a есть тишина.

1 ответ

Форматы и атрибуты должны быть одинаковыми для работы демультиплексора concat. Перекодируйте один из файлов, чтобы он соответствовал другому, а затем объедините.

Или используйте вместо него фильтр concat :

      ffmpeg -i jpn_op.m4a -i eng_nop.m4a -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" final.mp4
Другие вопросы по тегам