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)
}
}
Xcode中的基本设置。点击播放按钮即可加载视频。加载后播放。没有填满屏幕。
WKVideoGravity
指示视频内容出现的常量。
case resizeAspectFill
调整内容大小以填充边界 完全保留矩形,同时保留 内容。此选项将裁切视频中的边缘 它超过的轴。
那太完美了。试试吧。
它不起作用。
无论videoGravity
(在情节提要或代码中)如何,视频都会播放调整大小以适合,并且只有在我双击时才会填充屏幕。
我想念什么?
另外,如果我使用Media Player选项探索presentMediaPlayerController
方法,则会发现一种奇怪的行为:
•WKMediaPlayerControllerOptionsAutoplayKey
✅
•WKMediaPlayerControllerOptionsStartTimeKey
✅
•WKMediaPlayerControllerOptionsVideoGravityKey
(失败并恢复为默认行为)
总体而言,它似乎已损坏。如果有人有主意,我将提供解决方法。
答案 0 :(得分:0)
手表上的Apple API有问题,显然这是行不通的,您可以根据需要打开雷达。
一种替代方法是使用WKInterfaceInlineMovie吗?您可以使用所需的长宽比(使用ffmpeg或其他工具)格式化视频,请参阅从Apple示例here修改的代码。
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
}
}
答案 1 :(得分:-1)
您不应以编程方式设置视频重力值。当他们在属性检查器中提供它时。
将视频引力设置为调整长宽比
您的属性检查器应如下图所示。
您的代码将如下所示。
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)
}}