如何强制 AVPlayer 尊重 EXIF 元数据

How to force AVPlayer respect EXIF metadata

我正在通过 AVPlayer 组件流式传输在线或本地下载的 mp4 视频。 一些 mp4 文件的方向错误,但 EXIF 元数据说明了视频在播放时应如何旋转。 然而,AVPlayer 似乎并不尊重这一点。

有没有办法让 AVPlayer 尊重 EXIF 元数据并相应地旋转视频。

[asset.tracks[0] preferredTransform] 给出了视频应该如何旋转的变换,但是如果应用于 UIView 或 CALayer 则它仍然没有正确旋转。

另一方面,Android 和 Web 客户端可以正确播放相同的视频,这意味着视频文件没有任何问题。

AVPlayer 在播放视频时已经考虑了 EXIF 元数据。这是 'broken' 的视频文件。它已经处于正确的旋转状态,但 EXIF-Rotation 元数据的值错误,从而导致 AVPlayer 为用户以错误的方向播放视频。

后来,我发现确实 Android 尊重 EXIF 元数据的播放器也会以错误的方向播放视频。 网络客户端的视频播放器不考虑 EXIF 元数据,因此它以适合用户的方向播放视频。