Я хотел бы отправить несколько видео для моей подруги, но я бы позаботился о том, чтобы их можно было воспроизводить на ее мобильном телефоне. Я хочу выполнить задачи по кодированию на моем компьютере с Linux, потому что мой компьютер является низкоуровневым. Я могу использовать только ffmpeg или mencoder или другой инструмент CLI. Она может воспроизводить видео на YouTube, но я не хочу загружать такие видео на YouTube. Есть ли предустановки для конкретных мобильных телефонов? И когда она просто нажимает прямую ссылку на видео, она будет воспроизводиться непосредственно на мобильном телефоне или я должен встроить ее в html5 / flash-плеер, как на youtube?
1 ответ
Что поддерживает устройство
Согласно официальной документации Xperia U, это устройство может декодировать видео H.264, High profile, уровень 3.2 в контейнере MP4 с аудио AAC.
Пример команды ffmpeg
ffmpeg -i input -codec:v libx264 -crf 23 -preset medium -profile high -level 3.2 \
-pix_fmt yuv420p -movflags +faststart -codec:a aac -strict experimental out.mp4
Что делают эти варианты
-codec:v libx264
- Выберите видеокодерlibx264
для кодирования видео H.264.-crf 23
- Уровень качества видео на выходе .23
- значение по умолчанию, а более низкое значение - более высокое качество.-preset medium
- компромисс между скоростью кодирования и эффективностью сжатия. По умолчаниюmedium
.-profile high
- устанавливает высокий профиль видео H.264.-level 3.2
- устанавливает уровень видео H.264 на 3.2.-pix_fmt yuv420p
-ffmpeg
пытается минимизировать или избежать подвыборки цветности (в зависимости от входа, кодера, версииffmpeg
и т. д.). Технически это хорошая вещь, но может привести к выводу, который не могут обрабатывать игроки, не основанные на FFmpeg. Это обеспечивает совместимую схему подвыборки цветности.-movflags +faststart
- перемещает "атом moov" в начало файла, поэтому воспроизведение может начаться до полной загрузки файла в случае прогрессивной загрузки (например, просмотр через браузер).-codec:a aac -strict experimental
- кодировать аудио AAC, используя экспериментальный собственный кодер FFmpeg AAC. Это не худший кодер AAC, но если это звучит дерьмово, используйте более высокую скорость передачи битов с-b:a
(по умолчанию 128k).
Дополнительные примечания
Используйте последнюю версию
ffmpeg
. Старые версии не обеспечивают правильное количество контрольных кадров при использовании-level
(исправлена ошибка # 3307), но, поскольку вы используете Arch Linux, вам не нужно об этом беспокоиться.Пакет ffmpeg из репозитория Arch Linux Extra поддерживает только собственный кодировщик FFmpeg AAC. Перекомпилируйте из ABS с помощью
--enable-libfdk-aac --enable-nonfree
(с пакетом libfdk-aac как зависимым) или используйте пакет ffmpeg-git в AUR для получения поддержки кодирования с помощью libfdk_aac, который является лучшим кодером AAC, поддерживаемым FFmpeg. Если вы хотите попробовать это, рекомендуется использовать пакет ABS поверх пакета AUR.Если входное видео и / или аудио уже совместимы, вы можете просто скопировать их в потоковом режиме вместо перекодирования, например, с помощью
-codec:a copy
.Мобильное устройство может иметь дополнительные ограничения, о которых я не знаю, поэтому вам придется экспериментировать. Я также не уверен, что устройство будет работать с простой ссылкой на видео, но это было бы легко проверить.
См. Руководство по кодированию FFmpeg H.264 и Руководство по кодированию FFmpeg AAC для получения дополнительной информации.