• 0

[Javascript] Changing VideoJS url src on button click?


Question

I found the following code which is what I'm looking for but I need to modify it to work with dynamic urls which I'll fetch with php. How can I make that work, instead of loading local video files?

 

http://jsfiddle.net/swinginsam/NWbUG/

 

Ideally I want just a <a href> link to click which multiple videos. I'm not very good with javascript.

 

I tried changing 

$("video:nth-child(1)").attr("src",$content_path+$target+".mp4");

 

to 

 

$("video:nth-child(1)").attr("src","http://url1.mp4");
$("video:nth-child(1)").attr("src","http://url2.mp4");
$("video:nth-child(1)").attr("src","http://url3.mp4");
 
but it just loads the same video...

12 answers to this question

Recommended Posts

  • 0
  On 13/12/2013 at 01:03, DPyro said:

 

I found the following code which is what I'm looking for but I need to modify it to work with dynamic urls which I'll fetch with php. How can I make that work, instead of loading local video files?

 

http://jsfiddle.net/swinginsam/NWbUG/

 

Ideally I want just a <a href> link to click which multiple videos. I'm not very good with javascript.

 

I tried changing 

$("video:nth-child(1)").attr("src",$content_path+$target+".mp4");

 

to 

 

$("video:nth-child(1)").attr("src","http://url1.mp4");
$("video:nth-child(1)").attr("src","http://url2.mp4");
$("video:nth-child(1)").attr("src","http://url3.mp4");
 
but it just loads the same video...

 

 

I don't know why, but they are just assigning the same attribute src 3 times in a row in that example. The .webm one is the one that finally gets played in the end.

 

Anyways it works as follows: a click event handler is registered to occur if a button is clicked. Depending on which button you click a different movie is selected.

 

//Click event handler
$("input[type=button]").click(function() { ... }


//Video selector
var $target         = "testvid_"+$(this).attr("rel");


//Add the movie to the video element.
$("video:nth-child(1)").attr("src",$content_path+$target+".webm");
  • 0
  On 13/12/2013 at 03:58, DPyro said:

Ah, ok. How do I dynamically change the target variable with a different url.

 

Make the click button have some sort of unique id that is generated using php i.e. rel="http://myurl.com"

  • 0
  On 13/12/2013 at 04:04, snaphat (Myles Landwehr) said:

Make the click button have some sort of unique id that is generated using php i.e. rel="http://myurl.com"

 

Not quite sure what you mean...I tried this.

 

var $target         =  $(this).attr("rel");

 

$("video:nth-child(1)").attr("src",$target);

 

<input rel="http://url1.mp4" type="button" value="load video 1">

  • 0
  On 13/12/2013 at 04:54, DPyro said:

Not quite sure what you mean...I tried this.

 

var $target         =  $(this).attr("rel");

 

$("video:nth-child(1)").attr("src",$target);

 

<input rel="http://url1.mp4" type="button" value="load video 1">

 

That is what I meant: the PHP should be generating the value of rel and you should be assigning the value to the video element's src attribute upon click.

  • 0
  On 13/12/2013 at 05:27, snaphat (Myles Landwehr) said:

That is what I meant: the PHP should be generating the value of rel and you should be assigning the value to the video element's src attribute upon click.

 

I can't get it to work?

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<title>Dynamic Loading w/ video.js - jsFiddle demo by swinginsam</title>

	<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' video.js ></script>
	<link rel="stylesheet" type="text/css" href="http://vjs.zencdn.net/c/video-js.css">
	<script type='text/javascript' src="https://vjs.zencdn.net/c/video.js"></script>


	<style type='text/css'>
		.wrap            { margin:30px auto 10px; text-align:center }
		.container       { width:640px; height:360px; border:5px solid #ccc }
		p                { font: 10px/1.0em 'Helvetica',sans-serif; margin:20px }
	</style>

	<script type='text/javascript'>//<![CDATA[
	$(function(){
	var $target         = $(this).attr("rel");
	$("input[type=button]").click(function() {
		var $vid_obj        = _V_("div_video");

		// hide the current loaded poster
		$("img.vjs-poster").hide();

		$vid_obj.ready(function() {
		  // hide the video UI
		  $("#div_video_html5_api").hide();
		  // and stop it from playing
		  $vid_obj.pause();
		  // assign the targeted videos to the source nodes
		  $("video:nth-child(1)").attr("src",$target);
		  // reset the UI states
		  $(".vjs-big-play-button").show();
		  $("#div_video").removeClass("vjs-playing").addClass("vjs-paused");
		  // load the new sources
		  $vid_obj.load();
		  $("#div_video_html5_api").show();
		});
	});

	$("input[rel='01']").click();

	});//]]>

	</script>
</head>
<body>
	<section class="container wrap">
		<video id="div_video" class="video-js vjs-default-skin" controls preload="auto" width="640" height="360" data-setup="{}">
			<source src=""  type="video/mp4">
		</video>
	</section>

	<div class="wrap">
		<input rel="http://static.bouncingminds.com/ads/5secs/baileys_5sec.mp4" type="button" value="load video 1">
		<input rel="http://static.bouncingminds.com/ads/15secs/dogs_600.mp4" type="button" value="load video 2">
		<input rel="http://static.bouncingminds.com/ads/30secs/sexy_subaru_carwash.mp4" type="button" value="load video 3">
	</div>
</body>
</html>
  • 0
  On 13/12/2013 at 06:18, snaphat (Myles Landwehr) said:

http://jsfiddle.net/35VR2/1/ -- works for me on this example after I did those modifications

 

Weird, something in my code wasn't working right...only thing left is I need to change the mime type for certain videos. (type='application/x-mpegURL')

  • 0
  On 13/12/2013 at 06:28, DPyro said:

Weird, something in my code wasn't working right...only thing left is I need to change the mime type for certain videos. (type='application/x-mpegURL')

 

Figure it out? It definitely has to be something in the code or configuration

  • 0

So apparently desktop browsers don't support m3u8, yet I'm able to watch live streams on PS4 and ipod touch.  :s Still having issues with the ipod touch however using mimetype video/mp4. It plays both mp4 and m3u8 but only if I reload the page. ie. If I watch mp4 videos first the m3u8 stream won't work and need to reload, and vice versa.

  • 0
  On 13/12/2013 at 23:48, DPyro said:

So apparently desktop browsers don't support m3u8, yet I'm able to watch live streams on PS4 and ipod touch.  :s Still having issues with the ipod touch however using mimetype video/mp4. It plays both mp4 and m3u8 but only if I reload the page. ie. If I watch mp4 videos first the m3u8 stream won't work and need to reload, and vice versa.

 

It probably initializes something when you play the video the first time. There might be code you can do to reinitialize things from scratch upon click, but I dunno.

  • 0
  On 13/12/2013 at 23:52, snaphat (Myles Landwehr) said:

It probably initializes something when you play the video the first time. There might be code you can do to reinitialize things from scratch upon click, but I dunno.

 

It's weird because I don't have this problem on PS4, both types work initially without needing to reload the page or switch mimetype. I know a way to fix it by specifying the right mimetype for each filetype but need change it dynamically somehow.

 

EDIT: Actually, when I click the buttons it launches the video on ipod without needing to hit play so I dunno what it's doing. The error I get on ipod when trying a different filetype is 'The operation could not be completed'.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Trump announces a gold smartphone for $499 and new "T1 Mobile" 5G wireless service by Sagar Naresh Bhavsar The Trump Organization, spearheaded by President Trump's sons, Donald Trump Jr. and Eric Trump, has unveiled "T1 Mobile," a new mobile wireless service under the Trump Mobile brand. The service aims to offer affordable 5G services while competing with major telecom providers, with a patriotic twist. The announcement coincides with the 10th anniversary of Donald Trump's first presidential campaign launch. Trump Mobile is positioned as a wireless service that is meant to offer top-notch smartphone connectivity services for American people. One of the highlights of the wireless service plan is "The 47 Plan," priced at $47.45 per month, which gives a nod to Donald Trump being the 47th president of America. According to the official website, the plan includes: Unlimited talk time, messages, and internet Complete device protection 24/7 roadside assistance through Drive America Telehealth services, including virtual medical care, mental health support, and easy ordering and delivery for prescription medications Free International calling to more than 100 countries, including many with American military bases, to help honor the families who are bravely serving in our military abroad No contracts, no credit check Switching to Trump Mobile is simple. Customers would need to make a call to 888-TRUMP45, and they can continue using their current phone when making the transition. Trump Mobile has emphasized making customer support a top priority, promising 24/7 access to real representatives based in the U.S., no bots or automated systems. The company has claimed that T1 Mobile runs on the country's largest 5G networks, which will offer solid coverage across America. In addition to the mobile wireless service, Trump Mobile also announced its upcoming smartphone, the "T1 Phone," which will debut in September. It appears to feature a gold-colored metal case with an American flag etched on it, with triple cameras (iPhone knock-off). The company again highlighted that the device will be designed and built in America and is now available for pre-order.
    • OnePlus reveals five upcoming devices including the Nord 5 by David Uzondu OnePlus has confirmed that its next big product launch will take place on July 8 for its European and Indian markets. The company is dropping a whole slate of new hardware, announcing five different products. These include two new phones, the Nord 5 and its cheaper sibling, the Nord CE5, alongside a OnePlus Pad Lite, a smaller version of the OnePlus Watch 3, and a new pair of OnePlus Buds 4. The whole point of the Nord series, which originally launched back in 2020, has always been to filter some of the company's flagship tech down into phones that do not cost a fortune, and this year looks to be the most aggressive attempt at that yet. The star of this show is the OnePlus Nord 5. It is getting a huge performance upgrade, as it will be the first Nord phone to use a flagship-grade Qualcomm chip, the Snapdragon 8S Gen 3. That is a massive leap from the Snapdragon 7+ Gen 3 that powered the Nord 4 last year. OnePlus also seems serious about keeping it cool, adding an advanced 7,300mm² liquid cooling system and support for faster LPDDR5X RAM. The company even made a point to mention that the phone will handle games like Battlegrounds Mobile India at 90 to 144FPS. OnePlus is also making some interesting design changes. The company claimed that moving back to a vertical camera setup, a clear change from last year's Nord 4 and its horizontal bar, was a practical decision. The new layout supposedly optimizes internal space to fit the beefier chipset and other components. In another departure, the phone's frame will not be metal, unlike what we saw last year with the Nord 4. This change was based on feedback from a global survey where people apparently prioritized simple and practical designs over more premium materials. The Nord 5 will be available in a pale blue finish called "Dry Ice," while the cheaper Nord CE5 gets a "Marble Mist" color. Both new Nord phones will also replace the company's signature Alert Slider with a new customizable Plus Key. According to Celina Shi, CMO at OnePlus Europe, this is a "natural evolution" of the button, allowing it to be programmed for different actions like launching the camera or starting a recording. This key is tied to a new set of AI features called Plus Mind, which can recognize on-screen content and save it as a "memory." For example, it can pull schedule details from a picture of a flyer and add them directly to your calendar. The new Nord phones are joined by a handful of other devices. The OnePlus Watch 3 will now come in a smaller 43mm size for those with smaller wrists, and the company claims it has "exclusive monitoring features" not found on the larger model. The OnePlus Pad Lite is an "affordable," entry-level tablet designed to "work seamlessly" with the company's other hardware. Finally, the OnePlus Buds 4, available in "Zen Green" and "Storm Gray" color options, promise high-quality sound with dual drivers, Hi-Res audio support, and a low-latency mode for gaming. The launch event is set for July 8, where we will get the full specifications and, more importantly, the pricing for everything.
    • ok i have start11 installed on my desktop, how do i enable the start menu to look like win10. In otherwords, how can i right click on a file and next step would be to delete if i want to.   ty
  • Recent Achievements

    • Week One Done
      patrickft456 earned a badge
      Week One Done
    • One Month Later
      patrickft456 earned a badge
      One Month Later
    • One Month Later
      Jdoe25 earned a badge
      One Month Later
    • Explorer
      Legend20 went up a rank
      Explorer
    • One Month Later
      jezzzy earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      631
    2. 2
      ATLien_0
      282
    3. 3
      +FloatingFatMan
      175
    4. 4
      Michael Scrip
      155
    5. 5
      Steven P.
      128
  • Tell a friend

    Love Neowin? Tell a friend!