Closed birdmichael closed 7 months ago
应该是 DisplayEnum 加一个?
iina或vlc支持吗?
不支持... 一般播放器应该都不支持... 主要如果可以这样,这个库就可以拿来播动画了..无敌
这个直接用透明的gif动图,可以实现吗?如果可以实现的话,那不是会更简单吗?
gif和png序列播放起来都有点丢针
我发现我有点严重依赖你这个项目了~~哈哈我有3个项目都在用这个库
那你可以发一下有透明度的视频给我下。你刚发的 afx_16s.mp4 好像是没有透明度的
他不是透明度... 他是左边是mask区域,右边是资源区域... 你可以看下这个 https://smartprogram.baidu.com/docs/design/resource/animationVideo/#%E9%80%8F%E6%98%8E%E8%A7%86%E9%A2%91%E8%AE%BE%E8%AE%A1%E8%B5%84%E6%BA%90%E7%A4%BA%E4%BE%8B
我在改DisplayModel 一直没实现😄
https://www.jianshu.com/p/3a0512e2706f 这个对你有没有帮助
那这个不好实现。视频格式是支持rgba的。如果能够导出一个rgba的视频的话,那我理解这个视频就是支持透明的了。你这个是相当于要对原视频进行修改变成另外一个视频,视频的宽高都完全不一样了。这个属于视频编辑合成了。不知道是否有这样的filter。
private func setupPlayerItem() {
guard let playerItem = playerItem else { return }
let tracks = playerItem.asset.tracks
guard tracks.count > 0 else {
print("no tracks")
return
}
let videoSize = CGSize(width: tracks[0].naturalSize.width * 0.5, height: tracks[0].naturalSize.height)
guard videoSize.width > 0 && videoSize.height > 0 else {
print("video size is zero")
return
}
let composition = AVMutableVideoComposition(asset: playerItem.asset, applyingCIFiltersWithHandler: { request in
let sourceRect = CGRect(origin: .zero, size: videoSize)
let alphaRect = sourceRect.offsetBy(dx: sourceRect.width, dy: 0)
let filter = AlphaFrameFilter()
filter.inputImage = request.sourceImage.cropped(to: alphaRect)
.transformed(by: CGAffineTransform(translationX: -sourceRect.width, y:0))
filter.maskImage = request.sourceImage.cropped(to: sourceRect)
return request.finish(with: filter.outputImage!, context: nil)
})
composition.renderSize = videoSize
playerItem.videoComposition = composition
playerItem.seekingWaitsForVideoCompositionRendering = true
}
改一下 就支持水平的了 这个方便移植到ksplayer吗?
看了下,这个是用AVPlayer来进行播放的。我的项目里面有KSAVPlayer。这个比较少维护了。你可以对KSAVPlayer进行修改下,让他支持 filter。这样应该就可以了
我就是打算用KSMEPlayer.. 不然里面好几个播放器 不好控制
而且他这个应该在Metal 就是DisplayModel部分,小改一下就实现了 只是我不知道咋怎么搞
好的,我尝试下
感觉思路应该是在Shaders.metal 里面增加一个新的displayTexture。应该就可以了。
类似这种https://smartprogram.baidu.com/docs/design/resource/animationVideo/#%E9%80%8F%E6%98%8E%E8%A7%86%E9%A2%91%E8%AE%BE%E8%AE%A1%E8%B5%84%E6%BA%90%E7%A4%BA%E4%BE%8B
有办法支持吗?