在macOS中显示HDR视频

问题描述

我正在做一个macOS应用。它具有显示HDR视频的功能

  1. 我使用AVAssetReader解码HDR视频
fun main(){
        val regex = Regex(pattern = """for\s\w:=\d|\w\sto\s\w|\d\sdo\nwrite(\w|\d);|writeln(\w|\d);""")
        val matched = regex.containsMatchIn(input = "for i:=1 to n do\n write(n);")
        if(matched) println("True")
        else println("False")}
    
  1. 获得formatType为“ kCVPixelFormatType_30RGB”的CVPixelBuffer后,获得纹理数据如下
   try 
    { 
        org.jsoup.nodes.Document doc = org.jsoup.Jsoup.connect
        ("https://elegant-jones-f4e94a.netlify.com/valid_doc.html").get();
        
         String title = doc.title(); 
         } catch 
    
    (Exception e)
     {
         System.out.println(title);
         }
    
    
    textview1.setText(title);
  1. MTKView和RenderPipleState的设置如下
        self.asset = AVURLAsset(url: fileName)
        
        do{
            self.reader = try AVAssetReader(asset: self.asset)
            let timeRange = CMTimeRangeFromTimetoTime(start: startTime,end: endTime)
            self.reader.timeRange = timeRange
            
            guard let track  = self.asset.tracks(withMediaType: .video).first else{
                fatalError("error")
            }
            self.track = track
            
            let videoDecompressionSettings: [String: AnyObject] = [
                String(kCVPixelBufferPixelFormatTypeKey): NSNumber(value: kCVPixelFormatType_30RGB)
            ]
            self.videoOutput = AVAssetReaderTrackOutput(track: self.track,outputSettings: videoDecompressionSettings)
            self.videoOutput.supportsRandomAccess = true
            
           if self.reader.canAdd(self.videoOutput) {
                self.reader.add(self.videoOutput)
            }
            
            self.reader.startReading()
        
        }
        catch{
            print("Error setting up asset reader: \(error)")
            fatalError("error")
        }
 
    var texture: CVMetalTexture? = nil
    let status = CVMetalTextureCacheCreateTextureFromImage(kcfAllocatorDefault,textureCache!,self,nil,MTLPixelFormat.rgb10a2Unorm,width,height,&texture)
    guard status == kCVReturnSuccess else {
        return nil
    }
    guard let mtlTexture = CVMetalTextureGetTexture(texture!) else {
        return nil
    }
  1. 1〜3步后,显示如下(第一张图片是QuickTime播放器,第二张图片是我的应用程序)
    first
    second

我在哪里错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...