Конвертация файлов m4a и mp3 в m4a с помощью ffmpeg на android

Список разделов Другое Аудиоформаты

Описание: Аудиоформаты, конвертация и другие связанные вопросы

Сообщение #1 George Smith » 19.03.2020, 23:11

Доброго времени суток.
Исходные параметры: телефон с ОС android 7.1, termux, ffmpeg, отсутствие ПК, куча музыки в формате m4a, mp3 (битрейт от 128 до 320 кбит/с).
Задача: уменьшить объем музыки.

Решение:
На ПК у меня всё отлажено: в foobar2000 есть предмет конвертирования, который сжимает музыку в aac truevbr q27 (битрейт около 64 кбит/с). Мне хочется что-то подобное замутить на телефоне, но нативные андроидовские приложения не дают возможности тонкой настройки, автоматизации процесса и пакетной обработки.
Поэтому я решил попробовать ffmpeg через termux.
Проблема в том, что я не совсем понимаю принцип работы кодера aac в ffmpeg: как перенести метаданные, как поставить режим truevbr?
Хочется сжать музыку с такими же настройками, с какими я сжимаю ее на ПК.
Надеюсь на вашу помощь.
George Smith
Автор темы, Мастер
Репутация: 58
С нами: 6 лет 8 месяцев

Сообщение #2 Azaza » 20.03.2020, 02:18

Месье знает толк в извращениях.

У ffmpeg'овского AAC кодера нет нормального VBR режима. И, вообще, кодер существенно уступает кодеру от Apple. Если ffmpeg собран с кодером FDK, то лучше использовать FDK. ( http://wiki.hydrogenaud.io/index.php?title=AAC#En ... ders_.28Supported_Platforms.29 , см. таблицу справа. )
Официальный мануал по кодированию в AAC через ffmpeg - https://trac.ffmpeg.org/wiki/Encode/AAC

Теги, во всяком случае основные, ffmpeg копирует по умолчанию .
Аудиофилия - это болезнь,поражающая головной мозг.Набор профилактически-превентивных мер против аудиофилии крайне скуден - техническое образование, умение мыслить логически и наличие здравого смысла.
Azaza M
Мастер
Аватара
Репутация: 209
С нами: 4 года 1 месяц

Сообщение #3 George Smith » 20.03.2020, 07:29

Azaza, т.е. гораздо лучше передать в тот же opus?
Насчёт извращений - блин, нет ПК под рукой, а место на карте памяти телефона уже кончается.
George Smith
Автор темы, Мастер
Репутация: 58
С нами: 6 лет 8 месяцев

Сообщение #4 VEG » 20.03.2020, 10:37

Согласно тесту, у Opus действительно лучшие результаты на 64kbps:

listening_test_results.png


Правда, я не в курсе, используется ли libopus в ffmpeg.
С наилучшими пожеланиями, Евгений
VEG M
Администратор
Аватара
Возраст: 33
Откуда: Минск, Беларусь
Репутация: 174
С нами: 8 лет 5 месяцев

Сообщение #5 postED » 20.03.2020, 15:04

VEG писал(а):Правда, я не в курсе, используется ли libopus в ffmpeg.
Есть он там. Главное указать это командой, -c:a libopus.

George Smith, если libopus в тестах диапазона 64-96 лучше qaac, то он лучше и fdkaac, и уж явно лучше той реализации, которая в ffmpeg по-умолчанию. Да и ffmpeg с поддержкой fdkaac нужно собирать самому.

К слову, там же есть родные аудио-конвертеры на андроид. Неужели среди них не найдется юзабельного решения?..
FLAC -8 // Storage
Opus --bitrate 96 // Portable
postED M
Бывалый
Аватара
Откуда: Криворіжжя
Репутация: 82
С нами: 10 лет 11 месяцев

Сообщение #6 George Smith » 20.03.2020, 23:02

VEG, спасибо за информацию.
postED, к сожалению, конвертеры под Андроид либо не умеют обрабатывать пакетно, либо имеют очень бедные настройки выходного формата. Лично мне нет проблем написать один раз команду в termux, чтобы затем ffmpeg шустренько конвертнул все файлы.
Ещё такой вопрос: а встроенные картинки перенесутся?
George Smith
Автор темы, Мастер
Репутация: 58
С нами: 6 лет 8 месяцев

Сообщение #7 Azaza » 21.03.2020, 16:13

George Smith писал(а):а встроенные картинки перенесутся?
Похоже, что ffmpeg вообще не умеет вшивать картинки в opus. Например, команда
Код: Выделить всё
ffmpeg -i "C:\01. Grimm & Bear It.flac" -map 0:0 -map 0:1 -c:v copy -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" "C:\01. Grimm & Bear It.mp3
успешно переносит вшитую картинку при конвертации из FLAC'а в mp3. С opus'ом этот фокус не прокатывает:
Код: Выделить всё
[opus @ 00aada80] Unsupported codec id in stream 1
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:0 --
Команда вида
Код: Выделить всё
ffmpeg -i "C:\01. Grimm & Bear It.mp3" -i C:\20190614-162635.jpg -c:a copy -c:v copy -map 0:0 -map 1:0 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (front)" "C:\01. Grimm & Bear It-artwork.mp3"
успешно вшивает картинку в mp3, но не в opus.
Аудиофилия - это болезнь,поражающая головной мозг.Набор профилактически-превентивных мер против аудиофилии крайне скуден - техническое образование, умение мыслить логически и наличие здравого смысла.
Azaza M
Мастер
Аватара
Репутация: 209
С нами: 4 года 1 месяц

Сообщение #8 George Smith » 22.03.2020, 14:16

Azaza, спасибо.
Вшитые картинки для меня важны, поэтому, судя по всему, буду конвертить в mp3.
George Smith
Автор темы, Мастер
Репутация: 58
С нами: 6 лет 8 месяцев


Вернуться в Аудиоформаты