视频无法在 Android (chrome) 和 iOS (safari) 上播放
video not playing on Android (chrome) and iOS (safari)
你好,我有一些视频不能在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
这里是 在 Android 和 Chrome 上播放的另一个视频的 ffprobe 输出:
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 使其播放?
谢谢!
根据空中对我上面问题的评论,我将我的视频重新编码如下:
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 [=14 所述=]
你好,我有一些视频不能在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
这里是 在 Android 和 Chrome 上播放的另一个视频的 ffprobe 输出:
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 使其播放? 谢谢!
根据空中对我上面问题的评论,我将我的视频重新编码如下:
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 [=14 所述=]