ios swift5 视频播放 播放视频失败 无法播放HEVC (H.265) 格式的视频 H.264格式的可以播放

发布于:2024-06-29 ⋅ 阅读:(248) ⋅ 点赞:(0)

1.问题

Main thread blocked by synchronous property query on not-yet-loaded property (PreferredTransform) for HTTP(S) asset. This could have been a problem if this asset were being read from a slow network.

Asset is not playable

   @objc func buttonClicked() {

       guard let localVideoURL = Bundle.main.url(forResource: "sample1", withExtension: "mp4") else {
           MyPrint("Invalid URL")
           return
       }

       // 创建AVPlayer
       player = AVPlayer(url: localVideoURL)

       // 创建AVPlayerViewController并设置player
       playerViewController = AVPlayerViewController()
       playerViewController.player = player
       present(playerViewController, animated: true) { [self] in
           player.play()
       }

   }

2.原因:iOS swift AVPlayerViewController无法播放HEVC (H.265) 格式的视频

3.解决方法用第三方框架MobileVLCKit来播放

vlc - github

pod 'MobileVLCKit'
pod install
import UIKit
import MobileVLCKit

class PlayerViewController: UIViewController {
    var mediaPlayer: VLCMediaPlayer?

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 设置媒体播放器
        mediaPlayer = VLCMediaPlayer()
        guard let mediaPlayer = mediaPlayer else { return }

        // 设置视频URL
        let url = URL(string: "https://path/to/your/video.mp4")
        mediaPlayer.media = VLCMedia(url: url!)
        
        // 设置媒体播放器的显示区域
        mediaPlayer.drawable = self.view
        
        // 开始播放
        mediaPlayer.play()
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        
        // 停止播放
        mediaPlayer?.stop()
    }
}

4.用MobileVLCKit写的播放器

4.1 两个oc版本的

iosMobileVLCKitDemo - gitee
WeLSee - github

4.2 两个swiftUI版本的

swiftui-vlc-video-player - github video MP4视频播放数据
VLCKitPlayer - github

5.苹果是支持HEVC (H.265) 格式的视频,是硬件那边在压缩视频的时候参数的设置有问题,需要硬件压缩视频的时候做一些调整

我用剪映导出的HEVC (H.265)的视频,用苹果电脑自带的播放器和safira浏览器是可以正常播放的。但是我们硬件那边产生的视频用苹果电脑自带的播放器和safira浏览器无法播放


网站公告

今日签到

点亮在社区的每一天
去签到