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
答案1
我需要更仔细地阅读文档......
引自https://trac.ffmpeg.org/wiki/Encode/AAC#Progressivedownload:
默认情况下,MP4 复用器会在文件末尾的音频流(“mdat”原子)之后写入“moov”原子。这会导致用户需要完全下载文件才能播放。将此 moov 原子重新定位到文件开头可以在客户端完全下载文件之前方便播放。
您可以使用 -movflags +faststart 选项执行此操作:
ffmpeg -i input.wav -c:a libfdk_aac -movflags +faststart output.m4a 您还可以对现有的 MP4/M4A 文件使用此选项。由于音频只是被流复制,因此不会发生重新编码,只是重新混合,因此不会造成质量损失:
ffmpeg -i 输入.m4a -c:a 复制 -movflags +faststart 输出.m4a