Name is required.
Email address is required.
Invalid email address
Answer is required.
Exceeding max length of 5KB

Waterfall No Compatible Creatives causes player to crash


Hi,

I am using JWPLayer 7.1.4. I have followed your example waterfall code at http://support.jwplayer.com/customer/en/portal/articles/1665150-ad-tag-waterfalling and I use the same player configuration:

file: "http://content.bitsontherun.com/videos/bkaovAYt-640.mp4",
autostart: true,
aspectratio: '16:9',
width: '80%',
advertising: {
client: "vast",
schedule: {
adbreak1: {
offset: "pre",
tag: vastTagUrl
},
adbreak2: {
offset: '50%',
tag: vastTagUrl
}

}
}


I added a 'schedule' param so a midroll ad will also play.

My waterfall array is the same as in your example page but I added an extra url that does not provide an advert:

var waterfallTagChrome45VASTArray = [
"adtag1.xml",
"adtag2.xml",
"//ad4.liverail.com/?LR_PUBLISHER_ID=137758&LR_SCHEMA=vast2-vpaid&LR_PARTNERS=827760&cb=__random-number__&LR_URL=http://www.youmotorcycle.com/&LR_AUTOPLAY=1&LR_VIDEO_ID=TO_BE_REPLACED&LR_TITLE=TO_BE_REPLACE&LR_TIMEOUT_ADSOURCE=2",
"//www.adotube.com/php/services/player/OMLService.php?avpid=oRYYzvQ&platform_version=vast20&ad_type=linear&groupbypass=1&HTTP_REFERER=http://www.longtailvideo.com&video_identifier=longtailvideo.com,test"
];

The preroll waterfall runs as expecte:
a) VAST could not be loaded
b) VAST could not be loaded
c) No Compatible Creatives
d) play ad

The midroll causes the player to stop:
a) VAST could not be loaded
b) VAST could not be loaded
c) No Compatible Creatives
d) Uncaught TypeError: Cannot read property 'load' of null

I thought perhaps because d) is VAST-only and c) is VPAID that perhaps this is the cause of the bug?

Many thanks
Jeremy


23 Community Answers

Alex

JW Player Support Agent  
0 rated :

Hi, Jeremy.

Can you please give me a link to a page where you have the affected player installed?

jeremy

User  
0 rated :

Hi Alex,

It's not live or available on a website. But here's my entire file:

<!DOCTYPE html>
<html>
<head lang="en">
<script type="application/javascript">
var waterfall = [
"adtag1.xml",
"adtag2.xml",
"//ad4.liverail.com/?LR_PUBLISHER_ID=11111&LR_SCHEMA=vast2-vpaid&LR_PARTNERS=66666&cb=__random-number__&LR_URL=http://cnn.com/&LR_AUTOPLAY=1&LR_VIDEO_ID=TO_BE_REPLACED&LR_TITLE=TO_BE_REPLACE&LR_TIMEOUT_ADSOURCE=2",
"//www.adotube.com/php/services/player/OMLService.php?avpid=oRYYzvQ&platform_version=vast20&ad_type=linear&groupbypass=1&HTTP_REFERER=http://www.longtailvideo.com&video_identifier=longtailvideo.com,test"
];

</script>
<script src="//your-path-here/jw7_1_4/jwplayer.js"></script>
<script>jwplayer.key = "your-key";</script>
</head>
<body>
<div id="wrapper" style="width:300px;z-index: 100">
<div id='container1'>Player loading...</div>
</div>
<script>
var playerIns = null;

function getPlayerConfObj() {
return {
file: "http://content.bitsontherun.com/videos/bkaovAYt-640.mp4",
autostart: true,
aspectratio: '16:9',
width: '80%',
advertising: {
client: "vast",
schedule: {
adbreak1: {
offset: "pre",
tag: waterfall
},
adbreak2: {
offset: '50%',
tag: waterfall
}

}
}
};
}

function loadPlayer() {
var player = jwplayer("container1").setup(getPlayerConfObj());

player.on('playlistItem', function(event) {
rmDebug("queuing video index " + event.index);
});
player.on('adError', function (event) {
rmDebug("ad error - " + event.message + " - using tag: " + event.tag);
});
player.on("adImpression", function (event) {
rmDebug("-- about to play ad for position: " + event.adposition + ", using tag: " + event.tag);
});
return player;
}

function rmDebug(text) {
console.log(text);
}

playerIns = loadPlayer();
</script>
</body>
</html>

You need to add a) the path to your jwplayer.js version 7.1.4 and b) your jwplayer license key.

Load the page in Chrome, open the console tab and you will see the player error on the midroll when it makes a 2nd attempt to load your test ad.

Thanks

Alex

JW Player Support Agent  
1 rated :

Hi, Jeremy.

This appears to be related to the fact that you are not forcing the player to be in Flash-mode. Since your first ad tag is VPAID1, it serves a Flash creative so the player needs to be rendered in Flash in order for it to work.

I’ve created a test page with your ad waterfall and ad schedule, with the player rendering in Flash. For the pre-roll ad, the VPAID tag plays successfully. For the mid-roll tag, I altered the URL of the first ad tag to cause it not to work and move on to the second tag, and it does that successfully.

Test Page – http://qa.jwplayer.com/~abussey/62473-ad-waterfall.html

Please let me know if you need any more help or have any other questions.

Thank you!

jeremy

User  
0 rated :

Ok, so the player defaulted to 'html5' mode since i didn't specify a 'primary' attribute.

1. How do you know the 1st tag is VPAID1?
2. VPAID1 is flash only?
3. The 2nd test tag is VAST?


Alex

JW Player Support Agent  
1 rated :

Hi, Jeremy.

1. I know the ad tag is VPAID because it’s in the URL. Also, if you look at the response from the tag in the Network tab of the Chrome Developer Tools, you can see the XML shows the following for a MediaFile:

<MediaFile delivery="progressive" width="640" height="480" scalable="1" type="application/x-shockwave-flash" apiFramework="VPAID"><![CDATA[http://vox-static.liverail.com/swf/v4/admanager.swf?LR_PUBLISHER_ID=11111&LR_PARTNERS=66666&cb=949447643011808400&LR_URL=http%3A%2F%2Fcnn.com%2F&LR_AUTOPLAY=1&LR_VIDEO_ID=TO_BE_REPLACED&LR_TITLE=TO_BE_REPLACE&LR_TIMEOUT_ADSOURCE=2]]></MediaFile>

2. All VPAID1 ads are Flash-based. The newly supported VPAID2 format is JavaScript-based.

3. Both ad tags are VAST.

I hope this helps. Thanks!

jeremy

User  
0 rated :

In your test link in Chrome 46.0, the pre-roll test ad only plays for 1 second and then the bunny video plays! Why?

Alex

JW Player Support Agent  
1 rated :

Hi, Jeremy.

Can you try the link again? I made the player a little bit taller to see if you’re having issues because of Chrome’s auto-blocking of Flash content less than 400px wide or 300px tall. http://qa.jwplayer.com/~abussey/62473-ad-waterfall.html

jeremy

User  
0 rated :

Hi Alex,

4. For the VAST response below that provides a html5 .mp4 advert there is no "apiFramework" attribute in this XML above, we know it's not VPAID so what is it called?

<MediaFile delivery="progressive" bitrate="600" width="640" height="360" type="video/mp4">
<![CDATA[
http://creative.js.adotube.com/creatives/dev_test/pre1_video1_html5.mp4
]]>
</MediaFile>

jeremy

User  
0 rated :

5. Chrome auto-blocks ads that are less than 400px wide or 300px tall? They are played for ~1 sec and then stopped?!

Alex

JW Player Support Agent  
1 rated :

Hi, Jeremy.

VPAID ad tags are a sub-section of VAST. This means VPAID ad tags are VAST, but there are also other ad tags that are VAST, but not VPAID. Your second ad tag is just a plain ol’ VAST ad tag.

As for your issue not being able to play the ad on my test page, is your browser’s console showing any errors?

jeremy

User  
0 rated :

Thank you so much for your fast replies - this is helping me understand what kind of VAST XML responses will work with the player in each mode (html5/flash).

My browser now plays your test player. I think it was the size of the player as you mentioned that caused the ad to stop!

6. I googled this restriction that Chrome auto-blocks ads less than 400px wide or 300px tall and I can't find anything. Do you have a link for this? I thought Chrome auto-blocked ANY flash ads...

Thanks for the explanation of VAST and VPAID.

7. If the player is in HTML5 mode, it can play VPAID 2 (Javascript) and regular ol' :) VAST (.mp4) ?

8. I set your test player to - primary: "html5" - mode and used your pre-roll set of tags also in the mid-roll which results in:
a) VPAID 1 XML response. Player says "No Compatible Creatives"
b) VAST XML response. Player says "playing ad"

c) VPAID 1 XML response. Player says "No Compatible Creatives"
d) VAST XML response. Player breaks with my original error of "ncaught TypeError: Cannot read property 'load' of null"

So, back to my original question now that I understand what the player can handle in its different modes - in html5 mode with waterfall, NEVER use ad provider tags that provide VPAID1 ads, correct?

jeremy

User  
0 rated :

Sorry for all my questions above, but it came full circle so please please can you answer them?

jeremy

User  
0 rated :

My question came full-circle after your explanations so please can you answer them and then this questions can be closed :)

Alex

JW Player Support Agent  
0 rated :

Hi, Jeremy.

My apologies for the delay. I was out most of last week with a bad cold. But, let’s see if I can help you out.

6. We actually have a good blog post on our website about Chrome’s Flash blocking, which you can find here: http://www.jwplayer.com/blog/chrome-power-saving/

7. Correct – VPAID1 tags require Flash so they will not work if you set primary: “flash”

Hope that helps!

jeremy

User  
0 rated :

Hi Alex,

Sorry to hear you were sick! Glad you are back with us :)

Can you answer question 8? :)

Alex

JW Player Support Agent  
0 rated :

Hey, Jeremy.

Sorry about that. Can you give me a link to a test page where you have those players embedded?

Thanks.

jeremy N/A

User  
0 rated :

I have no web link, but here's the page's code, It's a copy of your test page, but I changed the midroll waterfall tag to be the same as the preroll waterfall tag. This causes the player to break in the midroll:

<!DOCTYPE html>
<html>
<head lang="en">
<script src="___YOUR PATH__/jw714/jwplayer.js"></script>
<script>jwplayer.key = "____YOUR KEY___";</script>
</head>
<body>
<div id="wrapper" style="width:300px;z-index: 100">
<div id='container1'>Player loading...</div>
</div>
<script>
var playerIns = null;

function getPlayerConfObj() {
return {
file: "http://content.bitsontherun.com/videos/bkaovAYt-640.mp4",
aspectratio: "16:9",
primary: "html5",
advertising: {
client: "vast",
schedule: {
adbreak1: {
offset: "pre",
tag: ["//ad4.liverail.com/?LR_PUBLISHER_ID=11111&LR_SCHEMA=vast2-vpaid&LR_PARTNERS=66666&cb=__random-number__&LR_URL=http://cnn.com/&LR_AUTOPLAY=1&LR_VIDEO_ID=TO_BE_REPLACED&LR_TITLE=TO_BE_REPLACE&LR_TIMEOUT_ADSOURCE=2", "http://www.adotube.com/php/services/player/OMLService.php?avpid=oRYYzvQ&platform_version=vast20&ad_type=linear&groupbypass=1&HTTP_REFERER=http://www.longtailvideo.com&video_identifier=longtailvideo.com"]
},
adbreak2: {
offset: "50%",
tag: ["//ad4.liverail.com/?LR_PUBLISHER_ID=11111&LR_SCHEMA=vast2-vpaid&LR_PARTNERS=66666&cb=__random-number__&LR_URL=http://cnn.com/&LR_AUTOPLAY=1&LR_VIDEO_ID=TO_BE_REPLACED&LR_TITLE=TO_BE_REPLACE&LR_TIMEOUT_ADSOURCE=2", "http://www.adotube.com/php/services/player/OMLService.php?avpid=oRYYzvQ&platform_version=vast20&ad_type=linear&groupbypass=1&HTTP_REFERER=http://www.longtailvideo.com&video_identifier=longtailvideo.com"]
}
}
}
};
}

function loadPlayer() {
var player = jwplayer("container1").setup(getPlayerConfObj());

player.on('ready', function () {
rmDebug('provider mode: ' + player.getProvider().name);
});

player.on('playlistItem', function(event) {
rmDebug("queuing video index " + event.index);
});
player.on('adError', function (event) {
rmDebug("ad error - " + event.message + " - using tag: " + event.tag);
});
player.on("adImpression", function (event) {
rmDebug("-- about to play ad for position: " + event.adposition + ", using tag: " + event.tag);
});
return player;
}

function rmDebug(text) {
console.log(text);
}

playerIns = loadPlayer();
</script>
</body>
</html>

Alex

JW Player Support Agent  
1 rated :

Hi, Jeremy.

I’ve been racking my brain around this. I’m not sure why there’s a JavaScript error being thrown when the second ad tag is loaded. It looks like the browser is requesting the ad tag and getting a valid response, but something in it is returning a null value. Oddly enough, it has to do with the fact that it is in a waterfall, because if you just have one tag listed per ad break, it works as expected.

I’m going to have to escalate this to our Engineering team to see what they say. As soon as I hear back, I will let you know.

jeremy N/A

User  
0 rated :

Hi Alex,

Thank you so much for this :)

Can I subscribe to this post instead of checking it throughout the day?

Alex

JW Player Support Agent  
1 rated :

Hi, Jeremy.

Unfortunately, there doesn’t look to be a way to subscribe to a forum post. In the future, we suggest emailing us at support@jwplayer.com, as any correspondence from us in that channel will result in you receiving an email.

As for your issue, I have heard back from our Engineering team that they plan on have a fix for this rolled out in our next update, 7.2.0, which should be released in the next week or so. You can keep an eye on our JW 7 Release Notes page as we post release notes and bug fixes with every new update.

Please let me know if you need any more help or have any other questions.

Thank you!

jeremy N/A

User  
0 rated :

Thanks so much for this.

jeremy N/A

User  
0 rated :

I don't see this in the release notes for 7.2.0. Can you please confirm it's in it?

Alex

JW Player Support Agent  
1 rated :

Hey, Jeremy.

I believe the release notes only contain what has been fixed up to that point and I also know that it does not contain every fix that we implemented. With that being said, I looked it up in our bug reporting database and it looks like it was fixed in the new build that the Engineers finished yesterday, so it should definitely make the final release.

Please let me know if you need any more help or have any other questions.

Thank you!

This question has received the maximum number of answers.