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

时间:2019-03-26 22:18:55

标签: ios objective-c swift youtube youtube-iframe-api

我使用名为“ youtube-ios-player-helper”的iOS库将youtube视频嵌入到我的iOS应用中。但是,我无法更改音量,并且库中似乎没有执行此操作的功能。所以我想添加此功能。

我查看了库的主文件(YTPlayerView.m),以尝试了解如何做到这一点: https://github.com/youtube/youtube-ios-player-helper/blob/master/Classes/YTPlayerView.m

在此文件中,有一些对javascript函数的调用,这些函数是由google在其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;

然后我用

从我的快捷代码中调用它
@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,也没有产生任何效果。

您知道如何进行这项工作吗?

3 个答案:

答案 0 :(得分:1)

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

尝试一下:

require('./bootstrap');

window.Vue = require('vue');
import Vue from "vue";

// Vue.component('example-component', require('./components/ExampleComponent.vue'), default);

import VueTheMask from "vue-the-mask";
Vue.use(VueTheMask);

希望这会有所帮助!

编辑1:

我添加了您的助手功能,使其更易于使用。

#import <MediaPlayer/MediaPlayer.h>
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
musicPlayer.volume = 0; // min volume (mute)

这也会更改设备音量。因此,只要您更改YouTube视频的音量,设备的音量也会随之更改。

希望这会有所帮助!

答案 1 :(得分:0)

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

我也发现有人遇到类似问题并且没有设法解决这个问题: Youtube API setvolume not working on iOS?

因此,当将youtube阅读器嵌入iOS WebView时,iFrame Youtube API的setVolume()函数似乎无法正常工作。

答案 2 :(得分:0)

问题终于解决了!现在,我们可以在iOS上以编程方式更改youtube的音量:) 我将解决方案放在github上: https://github.com/nicokla/volumeYoutubeIosOk