Привет, у меня есть несколько видео, которые не воспроизводятся в Android (напрямую в Chrome) и на iOS (напрямую в Safari), но воспроизводятся в Windows, Mac и Linux в любом браузере.
Вот вывод ffprobe
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'intro_sequence_01.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
date : 2018-10-08T08:15:57.948731
encoder : Lavf58.18.104
Duration: 00:00:08.00, start: 0.000000, bitrate: 259 kb/s
Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 1920x1080, 257 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
а вот выход ffprobe другого видео, которое играет на Android и Chrome:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Torcia_960x540.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
creation_time : 2017-02-10T16:14:10.000000Z
Duration: 00:00:11.52, start: 0.000000, bitrate: 10585 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv), 960x540 [SAR 1:1 DAR 16:9], 10576 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default)
Metadata:
creation_time : 2017-02-10T16:14:10.000000Z
handler_name : Mainconcept MP4 Video Media Handler
encoder : AVC Coding
Оба формата .mp4 и используют кодек h264
. Насколько я вижу, я замечаю разницу в профиле кодека h264 (High 4:4:4 Predictive)
и Video: h264 (Main)
и yuv444p
против yuv420p(tv)
и в разделе метаданных.
Я попытался перекодировать первое видео с помощью ffmpeg, но безуспешно. Кто-нибудь знает, почему video1 не совместимо с Android и iOS и как повторно настроить его, чтобы оно воспроизводилось? Спасибо!
Согласно воздушному комментарию на мой вопрос выше, я перекодировал свое видео следующим образом:
ffmpeg -i original.mp4 -vcodec libx264 -acodec copy -vprofile main -pix_fmt yuv420p reencoded.mp4
и теперь он воспроизводит на Android и iOS тоже.
Ключевые переключатели являются -vprofile main
и наиболее важными -pix_fmt yuv420p
поскольку Android/iOS не поддерживает профиль Hi444PP
как заявляет aergistal.