2013-05-20 20 views
6

Próbuję utworzyć stronę z osadzonym wideo, która dynamicznie zmieni źródło, gdy kliknięty zostanie link poniżej ramki wideo. Źródłowe wideo znajduje się na moim serwerze hosta. znaczy to pic ilustruje go:video.js - zaktualizuj źródło wideo po kliknięciu linku

[próbka strony] [1]

natknąłem this page, który wydaje się mieć odpowiedź, ale ja spróbowałem i to nie działa!. Podążając za przykładem, wkleiłem css & javascript do niezbędnego html w treści. Zaktualizowałem wszystkie odwołania do moich adresów URL i starałem się, aby nazwy plików były takie same jak w przypadku testów. Poniżej jest to, co próbowałem.

Czy ktoś może wskazać moje błędy lub zapewnić bardziej elegancki sposób robienia tego? Zasadniczo dynamicznie zmieniaj osadzone wideo po kliknięciu łącza, a wideo działa we wszystkich typowych przeglądarkach i na większości urządzeń. To jest dla wordpress miejscu, wykorzystaniem JW Player wordpress , (mój błąd) zamiast Znalazłem ten skrypt/kod jest rzeczywiście dla Video.js

Ładuje wstępny obraz, ale nie grać.

Jako test Próbowałem to i to robi grać jeden film właściwie:

<video id="testvideo" class="video-js vjs-default-skin" width="440" height="300"  controls="controls"> 
       <source src="http://www.mywebsite.net/videos/testvid_01.mp4" type="video/mp4"/> 
       <source src="http://www.mywebsite.net/videos/testvid_01.webm" type="video/webm"/> 
       <source src="http://www.mywebsite.net/videos/testvid_01.ogv" type="video/ogg"/> 
</video> 

Wersja javascript wielokrotnego źródła linki

<html> 
    <head> 
     <title></title> 
     <style media="screen" type="text/css"> 
.wrap   { margin:30px auto 10px; text-align:center } 
.container  { width:440px; height:300px; border:5px solid #ccc } 
p    { font: 10px/1.0em 'Helvetica',sans-serif; margin:20px } 
     </style> 
<script> 
$("input[type=button]").click(function() { 
    var $target   = "testvid_"+$(this).attr("rel"); 
    var $content_path = "http://www.mywebsite.net/videos/"; 
    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",$content_path+$target+".mp4"); 
     $("video:nth-child(1)").attr("src",$content_path+$target+".ogv"); 
     $("video:nth-child(1)").attr("src",$content_path+$target+".webm"); 
     // replace the poster source 
     $("img.vjs-poster").attr("src",$content_path+$target+".png").show(); 
     // 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="440" height="300" poster="http://www.mywebsite.net/videos/testvid_01.png" data- 

setup="{}"> 
    <source src="" type="video/mp4"> 
    <source src="" type="video/ogg"> 
    <source src="" type="video/webm"> 
    </video> 
</section> 

<div class="wrap"> 
    <input rel="01" type="button" value="load video 1"> 
    <input rel="02" type="button" value="load video 2"> 
    <input rel="03" type="button" value="load video 3"> 
</div> 

    </body> 
</html> 

obciążenie wstępne dla obrazu Pierwsze ładowanie wideo, ale brak obrazu, błąd to "Brak filmu z obsługiwanym formatem i typem MIME"

Więc dodałem źródło pierwszy film w tej sekcji

setup="{}"> 
     <source src="http://www.mywebsite.net/videos/videos/testvid_01.mp4" type="video/mp4"> 
     <source src="http://www.mywebsite.net/videos/videos/testvid_01.ogv" type="video/ogg"> 
     <source src="http://www.mywebsite.net/videos/videos/testvid_01.webm type="video/webm"> 
     </video> 

rezultacie 1st obciążenia wideo, ale nie inne powiązane filmy.

nazwy z filmów/PNG: testvid_01.mp4, testvid_01.ogv, testvid_01.webm, testvid_01.png testvid_02.mp4, testvid_02.ogv, testvid_02.webm, testvid_02.png testvid_03.mp4, testvid_03. ogv, testvid_03.webm, testvid_03.png

Próbowałem to zarówno na stronie wordpress i html wyniki są takie same.

Nie jestem pewien, czy ten skrypt zrobi to, co chcę?

Odpowiedz

3

Przykładowy skrypt javascript nie zawiera biblioteki video.js. Możesz spróbować uwzględnić następujące informacje w nagłówku.

<link href="http://vjs.zencdn.net/c/video-js.css" rel="stylesheet"> 
<script src="http://vjs.zencdn.net/c/video.js"></script> 

Czy istnieje sposób, aby wyświetlić stronę gdzieś na żywo?

16

Powoduje to trzykrotne nadpisanie atrybutu src elementu wideo, więc zawsze będzie ustawione na wideo webm.

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

Zamiast używać video.js API załadować tablicę źródeł tak video.js może wybrać jeden prąd odtwarzanie tech może grać:

$vid_obj.src([ 
    { type: "video/mp4", src: $content_path+$target+".mp4" }, 
    { type: "video/webm", src: $content_path+$target+".webm" }, 
    { type: "video/ogg", src: $content_path+$target+".ogv" } 
]); 

Updated skrzypce: http://jsfiddle.net/mister_ben/8awNt/

+1

Link do interfejsu wideo.js nie działa. – Atomosk

0

Dodawanie do ogólnej odpowiedź na pierwotne pytanie, przełączanie wideo odebrane przez misterben powyżej nadal działa w aktualnej wersji (4.8.0) z video.js, ale kod, który zmienia obraz plakatu, nie działa z pierwotnego pytania, lub w jsfiddle code sample od 9/5/2014.

Musisz zrobić dwie małe modyfikacje user239759 w oryginalnym kodzie zapytania (wymienionych poniżej) od:

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

... 
... 
... 

// replace the poster source 
$("img.vjs-poster").attr("src",$content_path+$target+".png").show(); 

do tego:

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

... 
... 
... 

// replace the poster source 
$(".vjs-poster").css("background-image","url("+$content_path+$target+".png)").show(); 

to jeśli używasz standardowe video.js kod i związane z nim css.

Należy również zauważyć, że dla tych, którzy nie wykombinowali go z powyższego kodu, plakaty powinny być nazwane tak samo jak filmy z wyjątkiem rozszerzenia pliku i umieszczone w tym samym katalogu, co filmy. Jeśli nie używasz innego var dla $content_path dla obrazów z plakatu.

Powiązane problemy