Решение проблем с аудиофайлами FLA C с помощью ffmpeg - PullRequest
0 голосов
/ 14 января 2020

Я получил набор файлов FLA C (аудио) от друга. Я скопировал их в мою библиотеку Sonos musi c и получил возможность насладиться прекрасным альбомом. К сожалению, Sonos не будет воспроизводить файлы. В результате я узнал ffmpeg.

Жалоба Sonos с файлами FLA C состояла в том, что она была "закодирована с неподдерживаемой частотой дискретизации" . С закатыванием глаз и тряской головой отмечу, что бесплатный VL C медиаплеер с удовольствием воспроизводит эти файлы, но продукт, за который я заплатил (Sonos), - нет. Но я отвлекся ...

ffprobe показал, что файлы FLA C содержат как Audio канал , так и a Video канал:

$ ffprobe -hide_banner  -show_streams "/path/to/Myaudio.flac"


    Duration: 00:02:23.17, start: 0.000000, bitrate: 6176 kb/s  
    Stream #0:0: Audio: flac, 176400 Hz, stereo, s32 (24 bit)  
    Stream #0:1: Video: mjpeg (Progressive), yuvj444p(pc, bt470bg/unknown/unknown), 450x446 [SAR 72:72 DAR 225:223], 90k tbr, 90k tbn, 90k tbc (attached pic)  
    Metadata:  
      comment         : Cover (front)  

Круто! Я угадаю как некоторые аудиоплееры могут отображать «обложку альбома» при воспроизведении песни? Также обратите внимание, что поток Audio сообщается в 176400 Hz! Видимо, я не на связи; Я думал, что частота дискретизации 44,1 кГц эффективно удаляет все «артефакты дискретизации», которые мы могли слышать. Так или иначе, я узнал, что Sonos будет поддерживать максимальную частоту дискретизации 48 кГц, и это (частота 176,4 кГц) - то, чем Sonos был недоволен. Я использовал ffmpeg, чтобы «ошарашить» их:

$ ffmpeg -i "/path/to/Myaudio.flac" -sample_fmt s32 -ar 48000 "/path/to/Myaudio48K.flac"

Это сработало - по крайней мере, я получил файл FLA C, который Sonos будет воспроизводить. Однако я также получил что-то вроде предупреждения :

[swscaler @ 0x108e0d000] устаревший формат пикселей, убедитесь, что вы правильно установили диапазон
[ fla c @ 0x7feefd812a00] Очень высокая частота кадров для мультиплексора, который не поддерживает его.
Пожалуйста, рассмотрите возможность указания более низкой частоты кадров, другого мультиплексора или -vsyn c 2

Бит было проведено больше исследований этого ответа , который я не совсем понимаю, а затем в комментарии говорится: "не беспокоиться" - по крайней мере, в части swscaler предупреждения.

И это (наконец) подводит меня к моим вопросам:

1.a. Какие framerate, muxer и другие спецификации делают графический c совместимым с большинством программ, использующих графический c?

1.b. Как мне использовать ffmpeg для изменения канала Video для установки этих спецификаций (ссылка Q 1.a.)?

2.a. Как удалить канал Video из аудиофайла .flac?

2.b. Как мне добавить канал Video в файл .flac?

РЕДАКТИРОВАТЬ:

Я задал вышеупомянутые (4) вопросы после неудачного выполнения sh ' прямого ' преобразования (одна команда ffmpeg) из FLA C при 176,4 кГц до ALA C (.m4a) при 48 кГц (максимум поддерживается Sonos). Я рассуждал, что «1075 * инкрементальный » подход через серию преобразований может привести меня туда. Теперь, имея преимущество в ретроспективе, я вижу, что должен был опубликовать свое первоначальное неудачное заклинание прямого обращения ... мы живем и учимся.

При этом принятый ниже ответ соответствует моей конечной цели: преобразовать файл FLA C, кодированный с частотой 176,4 кГц, в ALA C (.m4a) с частотой 48 кГц, и сохранить обложку / видеоканал .

1 Ответ

3 голосов
/ 14 января 2020

Какая частота кадров, мультиплексор и другие характеристики делают графический c совместимым с большинством программ, использующих графический c?

Обложка представляет собой один кадр поэтому частота кадров не имеет значения в этом случае. Однако вам не нужен видеопоток, он должен оставаться одним изображением, поэтому следует добавить -vsync 0. Muxer - это просто определенный термин c для упаковщика, используемый в обработке медиа-файлов. Это определяется выбором формата, например, FLA C, WAV..et c. Что важно, так это код c для обложки; обычно это PNG или JPEG. Для FLA C PNG является кодом по умолчанию c.

Как удалить канал видео из аудиофайла .fla c

ffmpeg -i "/path/to/Myaudio.flac" -vn -c copy "/path/to/Myaudio48K.flac"

(все, что нужно, это пропустить любое видео на входе и скопировать все остальное)

Как добавить канал видео в файл .fla c?

Чтобы добавить обложку к форматам только для аудио, таким как MP3, FLA C .. et c, видеопоток должен иметь расположение прикрепленного изображения. Итак,

ffmpeg -i "/path/to/Myaudio.flac" -i coverimage -sample_fmt s32 -ar 48000 -disposition:v attached_pic -vsync 0 "/path/to/Myaudio48K.flac"

Для прямого преобразования в ALA C используйте

ffmpeg -i "/path/to/Myaudio.flac" -i coverimage -ar 48000 -c:a alac -disposition:v attached_pic -vsync 0 -c:v png "/path/to/Myaudio48K.m4a"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...