2012-02-01 19 views
7

, ponieważ odtwarzacz wideo wymaga czasu, aby załadować wideo MP4. czy obsługa HTML5 może odtwarzać logo "ładujące" podczas ładowania wideo?Jak zrobić obraz ładujący podczas ładowania wideo HTML5?

enter image description here

ponieważ moje aplikacje ASP.NET to strona mobilna, to trzeba użytkownika kliknij na wideo, aby odtworzyć film (Android, iPhone nie obsługują autoodtwarzanie). więc nie mogę zrobić "załadunku" logo jako plakatu, w przeciwnym razie użytkownik będzie mylić o tym. Chcę wyświetlać ładowanie logo, gdy użytkownik kliknie przycisk odtwarzania na iPadzie.

dzięki

Joe

Odpowiedz

1

Użyj plakat tag id

<video controls="controls" poster="/IMG_LOCATION/IMAGENAME"> 

Więcej informacji można znaleźć http://www.w3schools.com/html5/att_video_poster.asp

+0

hi, ja już miejsce plakat. ale może być przerwa w czasie pomiędzy użytkownikami, kliknij przycisk "Odtwórz" i zacznij grać –

+0

Następnie widzisz czerń samego filmu, najlepiej przyciąć film, aby usunąć początkową czerń lub dodać ten sam obraz miejsca na początku wideo, jeśli użytkownik naciśnie przycisk odtwarzania, to wideo jest odtwarzane, więc widzą, że i jeśli następnie zatrzymuje się na bufor, widzą ostatni obraz, który grał –

+0

, ponieważ moje aplikacje asp.net to strona mobilna, potrzebne jest kliknięcie wideo przez użytkownika aby odtworzyć wideo (Android, iPhone nie obsługuje autoodtwarzania). więc nie mogę zrobić "załadunku" logo jako plakatu, w przeciwnym razie użytkownik będzie mylić o tym. Chcę wyświetlać ładowanie logo, gdy użytkownik kliknie przycisk odtwarzania na iPadzie. –

1

Można chyba zrobić z JavaScript tworząc nakładkę obrazu z animowany "ładujący się" plik gif, który wyświetla się tylko podczas wczytywania filmu i nie jest gotowy do odtwarzania.

Musisz napisać JavaScript, aby połączyć się z Media API w celu wykrycia, kiedy wideo jest gotowe do odtwarzania itd. (Aby ponownie ukryć obraz), ale powinno być możliwe.

12

Zajęło mi zbyt długo, aby dowiedzieć się, jak to zrobić, ale mam zamiar podzielić się tym tutaj, ponieważ WRESZCIE znalazłem sposób! Co jest niedorzeczne, gdy się nad tym zastanowić, ponieważ ładowanie jest czymś, co muszą zrobić wszystkie filmy. Można by pomyśleć, że wzięliby to pod uwagę przy tworzeniu standardu wideo HTML5.

Moja oryginalna teoria, że ​​pomyślałem, że powinienem pracowali (ale nie) był to

  1. Dodaj do załadunku bg obrazu wideo podczas ładowania poprzez js i css
  2. Usuń gdy gotowy do gry

Proste, prawda? Problem polegał na tym, że nie mogłem uzyskać obrazu tła wyświetlanego po ustawieniu elementów źródłowych lub ustawiono atrybut video.src. Ostatnim uderzeniem geniuszu/szczęścia było odkrycie (poprzez eksperymenty), że obraz tła nie zniknie, jeśli plakat zostanie ustawiony na coś. Używam fałszywego obrazu z plakatu, ale wyobrażam sobie, że będzie on działał równie dobrze z przezroczystym obrazem 1x1 (ale po co martwić się o inny obraz). To sprawia, że ​​jest to prawdopodobnie hack, ale działa i nie muszę dodawać dodatkowego znacznika do mojego kodu, co oznacza, że ​​będzie on działał we wszystkich moich projektach przy użyciu wideo html5. (Klasa loading stosowane do wideo z JS)

HTML

<video controls="" poster="data:image/gif,AAAA"> 
    <source src="yourvid.mp4" 
</video> 

CSS

video.loading { 
    background: black url(/images/loader.gif) center center no-repeat; 
} 

JS

$('#video_id').on('loadstart', function (event) { 
    $(this).addClass('loading'); 
    }); 
    $('#video_id').on('canplay', function (event) { 
    $(this).removeClass('loading'); 
    $(this).attr('poster', ''); 
    }); 

Działa to doskonale dla mnie, ale tylko przetestowane w Chrome i Safari na prochowiec. Daj mi znać, jeśli ktoś znajdzie błędy lub ulepszenia!

+1

To całkiem elegancko/prosto. –

+0

na loadstart uruchamia się tylko jeden raz, ale jeśli chcesz ładować po każdym zatrzymaniu wideo, powinieneś użyć go w oczekiwaniu i na wydarzeniach z gry. –

3

także proste rozwiązanie, aby dodać zdjęcie preloader podczas wczytywania wideo: HTML:

<video class="bg_vid" autoplay loop poster="images/FFFFFF-0.png"> 

plakat jest przejrzysty obraz 1px.

CSS:

video { 
    background-image: url(images/preload_30x30.gif); 
    background-repeat: no-repeat; 
    background-size: 30px 30px; 
    background-position: center; 
    } 
Powiązane problemy