SDWebImageVideoCoder
用途
这只是一个用于 SDWebImage 的玩具编码器插件。旨在提供如何将 Animated Image View 和 Player 结合使用来演示 SDWebImage 的使用,使其适用于通用用途和自定义。
重要:该项目仅是一个玩具,这意味着它不提供任何生产就绪功能,性能非常慢。
对于现实世界中的短视频文件(如Imgur 的 GIFV 格式)。您应该始终优先使用视频播放器和渲染组件,如 AVKit 的AVPlayerViewController .
此编码器插件支持以下视频格式的动画加载
- MP4 (MPEG/4)
- M4V (Apple iTunes 电影)
- MOV (QuickTime 电影)
要求
- iOS 9+
- macOS 10.11+
- tvOS 9+
安装
CocoaPods
SDWebImageVideoCoder可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中
pod 'SDWebImageVideoCoder'
Carthage
SDWebImageVideoCoder可以通过Carthage获取。
github "SDWebImage/SDWebImageVideoCoder"
Swift包管理器(Xcode 11+)
SDWebImageVideoCoder可以通过Swift包管理器获取。
let package = Package(
dependencies: [
.package(url: "https://github.com/SDWebImage/SDWebImageVideoCoder.git", from: "0.2.0")
]
)
使用方法
加载视频地址
关于编码器插件的使用,请参阅Wiki - Coder 使用
- Objective-C
// register coder
[SDImageCodersManager.sharedCoder addCoder:SDImageVideoCoder.sharedCoder];
// load URL
SDAnimatedImageView *imageView;
NSURL *videoURL = [NSURL URLWithString:@"https://i.imgur.com/FY1AbSo.mp4"];
[imageView sd_setImageWithURL:videoURL];
- Swift
// register coder
SDImageCodersManager.shared.addCoder(SDImageVideoCoder.shared)
// load URL
let imageView: SDAnimatedImageView
let url = URL(string: "https://i.imgur.com/FY1AbSo.mp4")
imageView.sd_setImage(url: url)
AVAsset播放器使用
有关播放器的使用,请参阅Wiki - 动画图像播放器
- Objective-C
// AVAsset
AVAsset *asset;
AVAssetImageGenerator *generator = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset];
generator.appliesPreferredTrackTransform = YES;
generator.requestedTimeToleranceBefore = kCMTimeZero;
generator.requestedTimeToleranceAfter = kCMTimeZero;
// player
SDAnimatedImagePlayer *player = [SDAnimatedImagePlayer playerWithProvider:generator];
player.animationFrameHandler = ^(NSUInteger index, UIImage * frame) {
// frames
};
[player seekToFrameAtIndex:5 loopCount:0];
[player play];
- Swift
let asset: AVAsset
let generator = AVAssetImageGenerator(asset: asset)
generator.appliesPreferredTrackTransform = true
generator.requestedTimeToleranceBefore = .zero
generator.requestedTimeToleranceAfter = .zero
// Player
let player = SDAnimatedImagePlayer(provider: generator)
player.animationFrameHandler = { (index, frame) in
// frames
}
player.seekToFrame(at: 5, loopCount: 0)
player.play()
示例
要运行示例项目,请克隆仓库,然后首先从示例目录运行pod install
。
这个演示MP4视频来自Imgur。您也可以尝试您自己的短视频文件。
作者
DreamPiggy, [email protected]
许可证
SDWebImageVideoCoder遵循MIT许可证。更多信息请参阅LICENSE文件。