微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在 iOS 14模拟器和设备上使用 VideoPlayer 播放 HEVC 正在使用的 h.264 流编解码器信息

如何解决无法在 iOS 14模拟器和设备上使用 VideoPlayer 播放 HEVC 正在使用的 h.264 流编解码器信息

我正在制作一款应用,可以播放来自电视频道的直播视频。一些频道采用 HEVC 格式,一些采用 h.264。 H.264 播放得很好,但 HEVC 不会。我在真实设备(带有 iOS 14 的 iPhone 6s 和 iPhone 8)和模拟器(带有 iOS 14 的 iPhone 8、11、12)上都进行了尝试。我在互联网上看到,只有 iPhone 7 及更高版本支持 HEVC,所以它在 iphone 6s 上不起作用也就不足为奇了。
HLS 通过 HTTPS 提供实时流。 HEVC 和 h.264 在 VLC(媒体 -> 开放网络流)中播放,因此流不应该是问题。
由于我无法提供流的 url(仅供内部使用),我将提供 VLC 的屏幕截图。
这是网址的样子:https://domain.example.com/api/stream/some_token/10
建立连接后,它重定向到:http://1xx.xx.xx.xx:85/stream/some_token/stream.m3u8
我在 Info.plist (https://stackoverflow.com/a/32817873/4798218)

中允许 HTTP

正在使用的 h.264 流编解码器信息

Working H.264 Codec info

Working H.264 statistics

不工作的 HEVC 流编解码器信息

Not working HEVC Codec info

Not working HEVC statistics

现在是我试图让它工作的代码。我在 AVPlayerVideoController 和 VideoPlayer(来自 AVKit,ios14+)中尝试过,但没有播放 HEVC。

import SwiftUI
import AVKit

struct SUIVideoPlayer: View {
    private let player = AVPlayer(url: URL(string: "https://domain.example.com/api/stream/some_token/10")!)
    
    var body: some View {
        VideoPlayer(player: player)
            .onAppear() {
                player.play()
            }
            .ondisappear() {
                player.pause()
            }
    }

}

我在尝试播放 HEVC 或 h.264 流时没有收到任何错误。一种有效,另一种无效。

解决方法

找到答案了。 TS 文件在 iOS 上不支持也不支持。您必须使用 fMP4。 苹果在其论坛中的官方回复:https://developer.apple.com/forums/thread/132291

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?