我使用名为“youtube-ios-player-helper”的iOS库在我的iOS应用中嵌入youtube视频。但是,我无法更改音量,并且库中似乎没有任何功能。所以我想添加这个功能。
我查看了库的主文件(YTPlayerView.m),试图知道如何做到这一点:https://github.com/youtube/youtube-ios-player-helper/blob/master/Classes/YTPlayerView.m
在这个文件中有一些调用javascript函数,这是由谷歌在他们的Youtube API中制作的。给出的参考是https://developers.google.com/youtube/iframe_api_reference#setVolume我在这个参考文献中发现有一个改变音量的功能,即
player.setVolume(volume:Number):Void
使用描述:“设置音量。接受0到100之间的整数。”
我几乎不知道Objective-C,但是使用YTPlayerView.m中的其他函数的复制粘贴(特别是函数seekToSeconds),我添加了以下函数,它应该调用Youtube API javascript函数。
- (void)setVolume:(int)volume {
NSString *command = [NSString stringWithFormat:@"player.setVolume(%d);", volume];
NSLog(@"%@",command); // for debugging
[self stringFromEvaluatingJavaScript:command];
}
我还在库.h文件中添加了对函数的引用:
- (void)setVolume:(int)volume;
然后我用我的swift代码调用它
@IBOutlet weak var youtubeView: YTPlayerView!
override func viewDidLoad() {
youtubeView.setVolume(Int32(20))
videoID = "QDYfEBY9NM4"
let playerVars: [AnyHashable: Any] =
["playsinline" : 1,
"origin": "https://www.youtube.com"]
self.youtubeView.load(withVideoId: videoID, playerVars: playerVars)
youtubeView.setVolume(Int32(20)) // called twice just in case
}
@IBAction func playButtonClicked(_ sender: Any) {
youtubeView.playVideo()
}
尝试减少视频的音量,默认为100。修改整个手机的音量并没有解决我的问题,因为我同时在应用程序中播放其他声音,我想要的是相对于其他声音减少youtube声音。
代码运行,我调用的函数被调用(我知道感谢NSLog),但是视频的声音没有减少,即使我将值设置为零而不是20,也没有任何效果。
你知道怎么做这个吗?
您还必须更改手机的音量:
试试这个:
#import <MediaPlayer/MediaPlayer.h>
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
musicPlayer.volume = 0; // min volume (mute)
希望这可以帮助!
编辑1:
我添加了你的帮助函数,使它更容易使用。
- (void)setVolume:(int)volume {
NSString *command = [NSString stringWithFormat:@"player.setVolume(%d);", volume];
NSLog(@"%@",command); // for debugging
[self stringFromEvaluatingJavaScript:command];
#import <MediaPlayer/MediaPlayer.h> // JUST MAKE SURE THIS IS IMPORTED
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
musicPlayer.volume = volume; // min volume (mute)
}
这也会改变设备音量。因此,每当您更改YouTube视频的音量时,设备音量也会发生变化。
希望这可以帮助!
我尝试使用另一种方式(向库https://github.com/hmhv/YoutubePlayer-in-WKWebView添加一个函数),它仍然无法正常工作。
此外,我发现这篇文章与某人有类似的问题,并没有设法解决它:Youtube API setvolume not working on iOS?
因此,当youtube阅读器嵌入iOS WebView时,iFrame Youtube API的setVolume()函数似乎无效。