如何使用youtube-ios-player-helper库更改iOS中youtube视频的音量

问题描述 投票:0回答:2

我使用名为“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,也没有任何效果。

你知道怎么做这个吗?

ios objective-c swift youtube youtube-iframe-api
2个回答
1
投票

您还必须更改手机的音量:

试试这个:

#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视频的音量时,设备音量也会发生变化。

希望这可以帮助!


0
投票

我尝试使用另一种方式(向库https://github.com/hmhv/YoutubePlayer-in-WKWebView添加一个函数),它仍然无法正常工作。

此外,我发现这篇文章与某人有类似的问题,并没有设法解决它:Youtube API setvolume not working on iOS?

因此,当youtube阅读器嵌入iOS WebView时,iFrame Youtube API的setVolume()函数似乎无效。

© www.soinside.com 2019 - 2024. All rights reserved.