Zel*_*lko 7 video movie ios watchkit watchos
WKInterfaceMovie - 一个界面元素,可让您在watchOS应用程序中播放视频和音频内容.
按预期工作.视频播放.如何缩放它以填满屏幕?
func setVideoGravity(_ videoGravity: WKVideoGravity)
电影的大小调整选项.有关可能值的列表,请参阅WKVideoGravity类型.
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
@IBOutlet weak var movieView: WKInterfaceMovie!
override func awake(withContext context: Any?) {
super.awake(withContext: context)
setupVideoPlayer()
}
func setupVideoPlayer() {
guard let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") else {
return
}
movieView.setMovieURL(videoURL)
movieView.setVideoGravity(.resizeAspectFill)
}
}
Run Code Online (Sandbox Code Playgroud)
Xcode中的基本设置.轻触播放按钮时视频加载.加载后播放.不填充屏幕.
WKVideoGravity
表示视频内容外观的常量.
case resizeAspectFill
Run Code Online (Sandbox Code Playgroud)
调整内容的大小以完全填充边界矩形,同时保留内容的原始宽高比.此选项会导致视频边缘超出其裁剪范围.
那很完美.我们来试试吧.
它不起作用.
无论videoGravity
(在故事板或代码中),视频播放都会调整大小以适应,只有在我点按两次时才会填满屏幕.
我错过了什么?
另外,如果我presentMediaPlayerController
使用Media Player Options 探索该方法,我会注意到一种奇怪的行为:
• WKMediaPlayerControllerOptionsAutoplayKey
✅
• WKMediaPlayerControllerOptionsStartTimeKey
✅
• WKMediaPlayerControllerOptionsVideoGravityKey
(失败并回退到默认行为)
总的来说,它似乎已被打破.如果有人有想法,我会喜欢解决方法.
手表上的 Apple API 有问题,这显然不起作用,如果您愿意,可以打开雷达。
另一种方法是使用 WKInterfaceInlineMovie ?您可以将视频格式化为所需的宽高比(使用 ffmpeg 或其他工具),请参阅此处修改自 Apple 示例的代码。
class MovieDetailController: WKInterfaceController {
@IBOutlet var inlineMovie :WKInterfaceInlineMovie!
@IBOutlet var tapGestureRecognizer :WKTapGestureRecognizer!
var playingInlineMovie :Bool = false
override func awake(withContext context: Any?) {
super.awake(withContext: context)
// Setup the `inlineMovie` interface object with the URL to play.
inlineMovie.setMovieURL(movieURL!)
// Provide a poster image to be displayed in the inlineMovie interface object prior to playback.
inlineMovie.setPosterImage(WKImage (imageName: "Ski1"))
inlineMovie.setVideoGravity(.resize)
// Movie playback starts
playingInlineMovie = false
}
@IBAction func inlineMovieTapped(sender : AnyObject) {
if playingInlineMovie == false {
inlineMovie.play()
} else {
inlineMovie.pause()
}
playingInlineMovie = !playingInlineMovie
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
301 次 |
最近记录: |