Zanonimizowana wersja forum tylko do odczytu
Tworzenie stron internetowych, promowanie, pozycjonowanie, hosting.
anonim
Weteran
Posts: 826 Joined: 2013-05-04, 15:44
Post
by anonim » 2015-01-23, 21:02
Odpowiadając na jedno z pytań użytkownika
Miszczu napisałem prosty skrypt w php, ukazujący w jaki sposób odtwarzać materiał z serwisu youtube, o określonej godzinie z uwzględnieniem przesunięcia transmisji o czas który już upłynął.
Zawartość
plik.php :
Code: Select all
<?php //youtube.com start time in jwplayer - example by jarek@stream-recorder.pl $file = 'https://www.youtube.com/watch?v=ZNLXO9Mw6NQ'; // video from youtube $start = '20:30'; // start time $now = date('H:i'); if ((strtotime($now) - strtotime($start)) >= 0 ) { ?> <script src="http://jwpsrv.com/library/pslaetIIEeOEtyIACrqE1A.js"></script> <div id='playerazthWINebJKv'></div> <script type='text/javascript'> jwplayer('playerazthWINebJKv').setup({ file: '<? echo $file; ?>', aspectratio: '16:9', width: '580', height: '320', autostart: 'true', controls: 'false', }); setTimeout("jwplayer().seek(<? echo (strtotime($now) - strtotime($start)); ?>);",5000); </script> <? } else { echo 'Transmisja rozpocznie się o godzinie '.$start; } ?>
W przykładzie, w opcjach jwplayera - ustawiłem parametr
controls: 'false' , czyli wyłączyłem kontrolki, tym samym uniemożliwiając użytkownikom przewijanie, oczywiście nie jest to konieczne.
anonim
Weteran
Posts: 932 Joined: 2013-09-04, 17:49
Post
by anonim » 2015-01-23, 22:04
To ja mam odrazu pytanie jak zakolejkowac kilka wideo i czy sie da i jak z czasem zakonczenia wideo bo tego nie zrozumialem i jeszcze opcja live zamiast paska z opcja przewijania?
anonim
Weteran
Posts: 826 Joined: 2013-05-04, 15:44
Post
by anonim » 2015-01-25, 17:30
Ad 1. jak zakolejkowac kilka wideo?
Wystarczy dopisać odpowiedni kod php np. taki:
Code: Select all
<html> <head> <meta charset="UTF-8"> </head> <body style="margin:0px;"> <?php //youtube.com start time in jwplayer - example by jarek@stream-recorder.pl $lista[0]['start'] = '16:00'; $lista[0]['file'] = 'https://www.youtube.com/watch?v=ZNLXO9Mw6NQ'; $lista[1]['start'] = '20:00'; $lista[1]['file'] = 'https://www.youtube.com/watch?v=s1TC-CLR5b8'; $now = date('H:i'); foreach($lista as $n => $k) { if ((strtotime($now) - strtotime($k['start'])) >= 0 ) { ?> <script src="http://jwpsrv.com/library/pslaetIIEeOEtyIACrqE1A.js"></script> <div id='playerazthWINebJKv'></div> <script type='text/javascript'> jwplayer('playerazthWINebJKv').setup({ file: '<? echo $k['file']; ?>', aspectratio: '16:9', width: '580', height: '320', autostart: 'true', controls: 'false', }); setTimeout("jwplayer().seek(<? echo (strtotime($now) - strtotime($k['start'])); ?>);",5000); </script> <button onclick="jwplayer().setFullscreen();">FullScreen</button> <? break; } } ?> </body> </html>
Ad 2. jak z czasem zakonczenia wideo?
Czas zakończenia wynika z czasu trwania materiału wideo. Jeżeli od rozpoczęcia minęło więcej czasu niż trwa film po prostu player się nie wyświetli.
Ad 3. opcja live zamiast paska z opcja przewijania?
Tzn pasek przewijania jest wyłączony, generalnie trzeba dostosować skin jeżeli masz jakieś specjalne wymagania. W powyższym przykładzie z pkt. 1 dodałem przycisk "fullscreen".
anonim
Weteran
Posts: 932 Joined: 2013-09-04, 17:49
Post
by anonim » 2015-01-26, 01:56
Nie działa listowanie po pierwszym wideo staje wszystko i nic sie nie dzieje a druga rzecz czy nie da sie wyminac by nie odpalalo za kazdym razem przez chwile poczatku zanim przeskoczy na tą minute co trzeba?
anonim
Weteran
Posts: 826 Joined: 2013-05-04, 15:44
Post
by anonim » 2015-01-26, 18:05
Ta linijka odpowiada za czas
Code: Select all
setTimeout("jwplayer().seek(<? echo (strtotime($now) - strtotime($k['start'])); ?>);",5000);
-teraz jest zmiana po 5 sekundach = 5000 ms.
anonim
Weteran
Posts: 932 Joined: 2013-09-04, 17:49
Post
by anonim » 2015-01-27, 12:46
Ale co z listowaniem bo nie działa?
anonim
Weteran
Posts: 826 Joined: 2013-05-04, 15:44
Post
by anonim » 2015-01-27, 17:21
Mój błąd - poprawka:
Code: Select all
<html> <head> <meta charset="UTF-8"> <head> <body style="margin:0px;"> <?php //youtube.com start time in jwplayer - example by jarek@stream-recorder.pl $lista[0]['start'] = '16:00'; $lista[0]['end'] = '17:00'; $lista[0]['file'] = 'https://www.youtube.com/watch?v=ZNLXO9Mw6NQ'; $lista[1]['start'] = '18:00'; $lista[1]['end'] = '19:00'; $lista[1]['file'] = 'https://www.youtube.com/watch?v=s1TC-CLR5b8'; $now = date('H:i'); foreach($lista as $n => $k) { if (((strtotime($now) - strtotime($k['start'])) >= 0 ) and ((strtotime($now) - strtotime($k['end'])) < 0 )) { ?> <script src="http://jwpsrv.com/library/pslaetIIEeOEtyIACrqE1A.js"></script> <div id='playerazthWINebJKv'></div> <script type='text/javascript'> jwplayer('playerazthWINebJKv').setup({ file: '<? echo $k['file']; ?>', aspectratio: '16:9', width: '580', height: '320', autostart: 'true', controls: 'false', }); setTimeout("jwplayer().seek(<? echo (strtotime($now) - strtotime($k['start'])); ?>);",5000); </script> <button onclick="jwplayer().setFullscreen();">FullScreen</button> <? break; } } ?> <body> </html>
anonim
Weteran
Posts: 932 Joined: 2013-09-04, 17:49
Post
by anonim » 2015-01-28, 12:47
Wszystko fajnie tylko że jak sie skonczy pierwsze wideo to staje i trzeba odswiezac zeby drugie wystartowalo
anonim
Weteran
Posts: 826 Joined: 2013-05-04, 15:44
Post
by anonim » 2015-01-28, 17:46
W takim razie dopisz linijke lub dwie w php odpowiadające za odświeżenie np.
Code: Select all
... </script> <button onclick="jwplayer().setFullscreen();">FullScreen</button> <? $refresh = (strtotime($k['end']) - strtotime($now)); header("Refresh: $refresh"); break; } } ?> <body> </html> ...
summa summarum:
http://wklej.org/hash/62679de437c/
I już powinno być ok
anonim
Początkujący
Posts: 16 Joined: 2014-01-15, 16:28
Post
by anonim » 2015-01-29, 23:58
Jarek,jeśli można mam pytanie; zamiast JwPlayera podłożyłem Vlc,ale znowu mam problem jak zapisać bufor - umieściłem zapis w 2 miejscach ale to nie działa... Pomożesz?
anonim
Weteran
Posts: 826 Joined: 2013-05-04, 15:44
Post
by anonim » 2015-01-30, 21:52
Już odpowiadałem na to pytanie którego byłeś autorem w tym temacie:
Code: Select all
http://stream-recorder.pl/viewtopic.php?t=877
Ponownie zachęcam do zapoznania się ze stroną:
Code: Select all
https://wiki.videolan.org/Documentation:WebPlugin
Tutaj twój poprawiony kod:
Code: Select all
<html> <body> <head> <meta charset="UTF-8"> <head> <body style="margin:0px;"> <?php //youtube.com start time in vlc - example by jarek@stream-recorder.pl $lista[0]['start'] = '20:59'; $lista[0]['end'] = '23:59'; $lista[0]['file'] = 'LINK DO PLIKU'; $now = date('H:i'); foreach($lista as $n => $k) { if (((strtotime($now) - strtotime($k['start'])) >= 0 ) and ((strtotime($now) - strtotime($k['end'])) < 0 )) { ?> <center> <embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" version="VideoLAN.VLCPlugin.2" id="vlc" loop="no" autoplay="yes" height="320" width="580"> <script> var vlc = document.getElementById("vlc"); vlc.playlist.add("<? echo $k['file']; ?>", "live", ":network-caching=100000"); vlc.playlist.play(); </script> </center> <? $refresh = (strtotime($k['end']) - strtotime($now)); header("Refresh: $refresh"); break; } } ?> <body> </html>
anonim
Początkujący
Posts: 16 Joined: 2014-01-15, 16:28
Post
by anonim » 2015-01-30, 22:05
Bardzo,bardzo dziękuje za pomoc. Oczywiście wszystko działa.
Z dokumentacją vlc na stronie zapoznawałem się dość długo,ale moje skromna wiedza nie pozwala na ogarnięcie tego.
anonim
Weteran
Posts: 826 Joined: 2013-05-04, 15:44
Post
by anonim » 2015-01-30, 22:15
Dodatkowo też można przewijać, z taką różnicą, że czas podaje się w milisekundach:
Code: Select all
... <script> var vlc = document.getElementById("vlc"); vlc.playlist.add("<? echo $k['file']; ?>", "live", ":network-caching=100"); vlc.playlist.play(); vlc.input.time = vlc.input.time + <? echo (strtotime($now) - strtotime($k['start']))*1000; ?>; </script> ...
Cały przykład:
Code: Select all
<html> <body> <head> <meta charset="UTF-8"> <head> <body style="margin:0px;"> <?php //youtube.com start time in vlc - example by jarek@stream-recorder.pl $lista[0]['start'] = '22:05'; $lista[0]['end'] = '23:59'; $lista[0]['file'] = 'LINK DO PLIKU'; $now = date('H:i'); foreach($lista as $n => $k) { if (((strtotime($now) - strtotime($k['start'])) >= 0 ) and ((strtotime($now) - strtotime($k['end'])) < 0 )) { ?> <center> <embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" version="VideoLAN.VLCPlugin.2" id="vlc" loop="no" autoplay="yes" height="320" width="580"> <script> var vlc = document.getElementById("vlc"); vlc.playlist.add("<? echo $k['file']; ?>", "live", ":network-caching=100"); vlc.playlist.play(); vlc.input.time = vlc.input.time + <? echo (strtotime($now) - strtotime($k['start']))*1000; ?>; </script> </center> <? $refresh = (strtotime($k['end']) - strtotime($now)); header("Refresh: $refresh"); break; } } ?> <body> </html>
Last edited by
anonim on 2015-01-30, 22:17, edited 1 time in total.
anonim
Początkujący
Posts: 16 Joined: 2014-01-15, 16:28
Post
by anonim » 2015-01-30, 22:16
Dziękuje
anonim
Weteran
Posts: 826 Joined: 2013-05-04, 15:44
Post
by anonim » 2015-03-04, 20:05
W związku z zapytaniem, wersja uzupełniona o sekundy:
Code: Select all
<html> <head> <meta charset="UTF-8"> <head> <body style="margin:0px;"> <?php //youtube.com start time in jwplayer - example by jarek@stream-recorder.pl $lista[0]['start'] = '16:00:00'; $lista[0]['end'] = '17:00:00'; $lista[0]['file'] = 'https://www.youtube.com/watch?v=ZNLXO9Mw6NQ'; $lista[1]['start'] = '20:00:00'; $lista[1]['end'] = '20:30:00'; $lista[1]['file'] = 'https://www.youtube.com/watch?v=s1TC-CLR5b8'; $now = date('H:i:s'); foreach($lista as $n => $k) { if (((strtotime($now) - strtotime($k['start'])) >= 0 ) and ((strtotime($now) - strtotime($k['end'])) < 0 )) { ?> <script src="http://jwpsrv.com/library/pslaetIIEeOEtyIACrqE1A.js"></script> <div id='playerazthWINebJKv'></div> <script type='text/javascript'> jwplayer('playerazthWINebJKv').setup({ file: '<? echo $k['file']; ?>', aspectratio: '16:9', width: '580', height: '320', autostart: 'true', controls: 'true', }); setTimeout("jwplayer().seek(<? echo (strtotime($now) - strtotime($k['start'])); ?>);",5000); </script> <button onclick="jwplayer().setFullscreen();">FullScreen</button> <? $refresh = (strtotime($k['end']) - strtotime($now)) + 7000; header("Refresh: $refresh"); break; } } ?> <body> </html>