Как объединить файлы AAC с AVCONV CONCAT, используя входной текстовый файл?
У меня есть несколько файлов AAC, и я хочу объединить их в один файл AAC. Когда я делаю это с AVCONV в командной строке, и я конкретно с именами файлов, это работает. Когда я пытаюсь сделать это с помощью текстового файла, содержащего список файлов, происходит сбой. Что привело меня сюда, так это учебная страница FFMPEG в разделе Конкатенация медиафайлов. Я получаю различные результаты в зависимости от того, что я пытаюсь, и я не могу найти никакой информации о том, что я делаю неправильно с синтаксисом.
Мой список файлов (list.txt в том же каталоге)...
file 'sr_program_2015_03_23_05_44_01.aac'
file 'sr_program_2015_03_23_07_44_58.aac'
Когда я следую примеру на странице, которую я упомянул выше, я получаю сообщение об ошибке. Я включил использование ffmpeg и avconv, но результаты одинаковы.
FFmpeg...
ffmpeg -f concat -i list.txt -c copy output
ffmpeg version 0.8.17-6:0.8.17-1, Copyright (c) 2000-2014 the Libav developers
built on Mar 15 2015 17:00:31 with gcc 4.7.2
The ffmpeg program is only provided for script compatibility and will be removed
in a future release. It has been deprecated in the Libav project to allow for
incompatible command line syntax improvements in its replacement called avconv
(see Changelog for details). Please use avconv instead.
Unknown input format: 'concat'
avconv...
avconv -f concat -i list.txt -c copy output
avconv version 0.8.17-6:0.8.17-1, Copyright (c) 2000-2014 the Libav developers
built on Mar 15 2015 17:00:31 with gcc 4.7.2
Unknown input format: 'concat'
Когда я удаляю "-f" и напрямую использую имена файлов, это работает. Понятия не имею почему. Полученный файл также воспроизводится, как и ожидалось.
avconv -i concat:sr_program_2015_03_23_05_44_01.aac\|sr_program_2015_03_23_07_44_58.aac -c copy output.aac
avconv version 0.8.17-6:0.8.17-1, Copyright (c) 2000-2014 the Libav developers
built on Mar 15 2015 17:00:31 with gcc 4.7.2
[aac @ 0xcb6cc0] channel element 3.5 is not allocated
[aac @ 0xcb4b20] max_analyze_duration reached
[aac @ 0xcb4b20] Estimating duration from bitrate, this may be inaccurate
Input #0, aac, from 'concat:sr_program_2015_03_23_05_44_01.aac|sr_program_2015_03_23_07_44_58.aac':
Duration: 01:58:34.29, bitrate: 65 kb/s
Stream #0.0: Audio: aac, 44100 Hz, stereo, s16, 65 kb/s
Output #0, adts, to 'output.aac':
Metadata:
encoder : Lavf53.21.1
Stream #0.0: Audio: aac, 44100 Hz, stereo, 65 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press ctrl-c to stop encoding
size= 57148kB time=7315.03 bitrate= 64.0kbits/s
video:0kB audio:57148kB global headers:0kB muxing overhead 0.000000%
Заметив, что в рабочем подходе не используется опция -f, я попытался сделать это снова с первой попыткой и получил совершенно другую ошибку.
avconv concat -i list.txt -c copy output.aac
avconv version 0.8.17-6:0.8.17-1, Copyright (c) 2000-2014 the Libav developers
built on Mar 15 2015 17:00:31 with gcc 4.7.2
Unable to find a suitable output format for 'concat'
Причина, по которой я хочу обрабатывать эти "битые потоки" aac-файлов из списка файлов в файле, заключается в том, что я хочу создать список из сценария / кода, а затем обработать его как часть ежедневного автоматизированного процесса. Когда потоки разорваны, появляются многочисленные файлы с одинаковой датой. Когда все идет хорошо, есть только один файл. Это происходит каждую неделю или около того. Я хочу автоматизировать исправление, которое я обычно делаю вручную. По иронии судьбы, я уже завершил создание списка целевых файлов из примеров на той же странице, упомянутой выше, когда застрял в этом странном поведении.
Я также хочу знать, что я делаю неправильно. Я вижу пример, который я использовал сначала везде. Я пробовал это на двух разных машинах, работающих под управлением Debian, но на разных архитектурах (arm и x86) и получил одинаковые результаты.
Кроме того, чтобы убедиться, что у меня установлена последняя версия ffmeg, я скомпилировал ее на каждой системе, используя эту страницу... Скомпилируйте FFmpeg в Ubuntu, Debian или Mint
Спасибо за ваше время.
1 ответ
У вас есть две версии ffmpeg
установлен в вашей системе.
Когда вы вводите ffmpeg
в командной строке запускается старая программа. Вы можете увидеть это в своем выводе:
ffmpeg version 0.8.17-6:0.8.17-1
0.8.17
это старая ветка, которая может не включать дематер concat.
Чтобы убедиться, что вы запускаете правильную версию, используйте полный путь к ffmpeg
Вы скомпилировали себя в своем домашнем каталоге.
/home/your-user/bin/ffmpeg -f concat ...
Если вы получили последний снимок, версия должна быть:
ffmpeg version 2.6.git