У меня потенциально есть миллионы потоковых видео HLS, которые можно создать из обложек и mp3. Очевидно, я хотел бы свести результирующую пропускную способность к минимуму. Я пробовал различные флаги ffmpeg, специально предложенные для этой задачи, и даже некоторые из них в медиа-сегментере Apple, который утверждал, что помещает обложку в каждый сегмент (мета-файл/мета-тип). У меня было много проблем с тем, чтобы Chrome отображал обложку при воспроизведении с использованием HTML5, несмотря на то, что он работал в VLC. Я получил рабочую командную строку, подобную этой.
ffmpeg -loop 1 -i 1k_image.jpg -i song_219kbs.mp3 -c:v libx264 -pix_fmt yuv420p -profile:v baseline -c:a aac -strict experimental -b:a 64k -r 1 -shortest song_64k_2fps_baseline.mp4
Профиль -pix_fmt
и базовый уровень казались ключевыми. Ты видишь, что я делаю ненужное? Есть ли лучший способ достичь моей цели?
Кроме того, я просматриваю несколько коммерческих решений для транскодирования в облаке и не вижу, как их настроить для этого. Я пропустил варианты?
Если вы просто хотите вставить обложку, вы можете сохранить результат в формате mp3, например:
ffmpeg -i original.mp3 -i cover.png -map 0:0 -map 1:0 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" -id3v2_version 3 -write_id3v1 1 result.mp3
Если вы создаете mp4, например, для YouTube, то я предлагаю разделить процесс на два шага - сначала создать видеофильм без звуковой дорожки, длительность которого несколько больше , чем у аудио. Затем мультиплексируйте видео и аудио вместе с -shortest
опцией, которая обрезает видео до точной длительности аудио. С точки зрения времени эти два шага займут немного больше времени, чем один проход, но весь ваш рабочий процесс будет намного проще и управляемее.
Логан
Питер Кордес
libfdk_aac
. Он имеет лучшее качество на битрейт, чем встроенный в ffmpeg кодировщик AAC. Кроме того, не забудьте-movflags +faststart
поместить атом MOOV в начало файла (необходим для потоковой передачи).