ffmpeg создает M4A, который iTunes не может передавать в виде подкаста (приложение iOS Podcasts может)

522
Vitaly Zdanevich

iTunes может воспроизводить такие M4A только после загрузки. Я нашел еще один подкаст с M4A, и iTunes корректно транслирует эти эпизоды.

Моя команда

ffmpeg -i input.ogg output.m4a

Результат:

ffmpeg version 3.3.4-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2017 the FFmpeg developers built with gcc 6.4.0 (Debian 6.4.0-4) 20170820 configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg libavutil 55. 58.100 / 55. 58.100 libavcodec 57. 89.100 / 57. 89.100 libavformat 57. 71.100 / 57. 71.100 libavdevice 57. 6.100 / 57. 6.100 libavfilter 6. 82.100 / 6. 82.100 libswscale 4. 6.100 / 4. 6.100 libswresample 2. 7.100 / 2. 7.100 libpostproc 54. 5.100 / 54. 5.100 Input #0, ogg, from 'input.ogg': Duration: 00:00:04.12, start: 0.000000, bitrate: 40 kb/s Stream #0:0: Audio: vorbis, 22050 Hz, mono, fltp, 35 kb/s Stream mapping: Stream #0:0 -> #0:0 (vorbis (native) -> aac (native)) Press [q] to stop, [?] for help Output #0, ipod, to 'output.m4a': Metadata: encoder : Lavf57.71.100 Stream #0:0: Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 69 kb/s Metadata: encoder : Lavc57.89.100 aac size= 35kB time=00:00:04.13 bitrate= 69.5kbits/s speed=36.4x video:0kB audio:34kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 3.260525% [aac @ 0x56fc940] Qavg: 11478.364 
0

1 ответ на вопрос

1
Vitaly Zdanevich

Мне нужно более внимательно прочитать документацию ...

Цитата с https://trac.ffmpeg.org/wiki/Encode/AAC#Progressivedownload :

По умолчанию мультиплексор MP4 записывает атом 'moov' после аудиопотока (атом 'mdat') в конец файла. Это приводит к тому, что пользователю необходимо полностью загрузить файл перед воспроизведением. Перемещение этого атома moov в начало файла может облегчить воспроизведение до того, как клиент полностью загрузит файл.

Вы можете сделать это с опцией -movflags + faststart:

ffmpeg -i input.wav -c: libfdk_aac -movflags + faststart output.m4a Вы также можете использовать эту опцию в существующих файлах MP4 / M4A. Так как аудио просто копируется потоком, перекодирование не происходит, просто происходит повторное мультиплексирование, поэтому не происходит потери качества:

ffmpeg -i input.m4a -c: копия -movflags + fasttstart output.m4a

Похожие вопросы