YTPlayerView does not play Content on Simulator (Decoding failed with error code)

0

When I play a normal content, it loads perfectly fine on the simulator.

YTPlayerView parameters

@implementation SingleVideoViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  NSString *videoId = @"weRHyjj34ZE";

  // For a full list of player parameters, see the documentation for the HTML5 player
  // at: https://developers.google.com/youtube/player_parameters?playerVersion=HTML5
  NSDictionary *playerVars = @{
      @"controls" : @0,
      @"playsinline" : @1,
      @"autohide" : @1,
      @"showinfo" : @0,
      @"modestbranding" : @1
  };
  self.playerView.delegate = self;
  [self.playerView loadWithVideoId:videoId playerVars:playerVars];



  [[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(receivedPlaybackStartedNotification:)
                                               name:@"Playback started"
                                             object:nil];

}

But, If I have a HD Video in my playlist it gives below error and the code https://github.com/youtube/youtube-ios-player-helper

Code is available with the Git Project, just download it and change the videoId in the SingleVideoViewController.

Decoding failed with error code -1
Decoding: C0 0x01E00168 0x0000304A 0x22111100 0x00000000 6668
Options: 1x-1 [0000002D,01E0010F] 0001C060
Decoding failed with error code 7
Decoding: C0 0x01E00168 0x0000304A 0x22111100 0x00000000 773
Options: 1x-1 [0000002D,01E0010F] 0001C060
Decoding failed with error code -1
Decoding: C0 0x01E00168 0x0000304A 0x22111100 0x00000000 773
Options: 480x360 [FFFFFFFF,FFFFFFFF] 0001C060
ios
objective-c
youtube-api
ios-simulator
asked on Stack Overflow Nov 22, 2018 by andyPaul • edited Nov 22, 2018 by andyPaul

1 Answer

0

Try adding origin parameter to your playerVars dictionary, i.e

NSDictionary *playerVars = @{
      @"controls" : @0,
      @"playsinline" : @1,
      @"autohide" : @1,
      @"showinfo" : @0,
      @"modestbranding" : @1,
      @"origin":@"https://www.youtube.com"
  };

From YouTube API docs,

Origin: This parameter provides an extra security measure for the IFrame API and is only supported for IFrame embeds. If you are using the IFrame API, which means you are setting the enablejsapi parameter value to 1, you should always specify your domain as the origin parameter value.

You can read more about it here.

answered on Stack Overflow Nov 22, 2018 by PGDev

User contributions licensed under CC BY-SA 3.0