2013-02-13 12 views
9

Anche se non ha molta documentazione posso trovare sull'argomento so che in mediaelement.js puoi cambiare la skin del lettore audio o modificare il CSS per creare la tua skin. Sto incontrando un problema in cui non riesco nemmeno a ottenere lo skin predefinito di mediaelement.js per sostituire il browser player, quindi non posso modificare il CSS predefinito per le mie esigenze di stile. E quando provo ad usare il metodo player.changeSkin() che mediaelement.js usa sul loro sito interrompe il programma. Sto includendo la skin CSS e gli altri file mediaelement.js richiesti, almeno per quanto ne so, e il loro lettore funziona bene finché non provo a cambiare la skin. Sto usando questo codice per lo streaming audio e puoi trovare una versione funzionante (ultimo caricamento funzionante prima di provare a rivestire il lettore) a http://escapetodenton.com/radio/compact-player.html. Per qualche ragione, il giocatore stesso non sta eseguendo il rendering proprio ora nella mia versione di firefox, quindi se hai Chrome o, cioè, avrai un'idea migliore di quello che sto cercando di fare.mediaelement.js changeSkin

file importati nell'intestazione:

<script src="build/jquery.js"></script> 
<script src="build/mediaelement-and-player.min.js"></script> 
<link rel="stylesheet" href="build/mediaelementplayer.css" /> 
<link rel="stylesheet" href="build/mejs-skins.css" /> 
<script language="javascript" type="text/javascript"src="http://premiumca5.listen2myradio.com/system/streaminfo.js"></script> 
<link rel="stylesheet" href="compact-player.css" /> 

di istanza Player e di lancio:

var player = new MediaElement('player', { 
pluginPath: '/build/', 
features: ['playpause','progress','current','duration','volume'], 
audioWidth: 400, 
enableAutosize: false, 
iPadUseNativeControls: true, 
iPhoneUseNativeControls: true, 
AndroidUseNativeControls: true, 
success: function(player, node) { 
player.changeSkin('mejs-ted'); 
player.play(); 
} 
}); 

Dal momento che non riesco a trovare alcuna documentazione sul metodo changeSkin() io sono solo di utilizzarla con la stesso modo che mediaelement.js ha nel loro codice per la loro home page. Qualsiasi aiuto o pensiero sarebbe apprezzato.

+1

ho trascorso qualche tempo con mediaelement.js qualche tempo fa. Per quanto mi ricordo, ho trovato tutto il CSS e ho semplicemente bloccato ciò che era e lo stile. I problemi che mi sono imbattuto in, è stato il fatto che ha un flash back. (Il che è fantastico in teoria) Quindi devi anche ri-tema. Non può essere davvero reattivo. Ho provato a creare alcune funzionalità della playlist Ajax, ma il flash back è stato un tale problema che ho abbandonato il tutto. Ricordo che sono disponibili 3 o 4 "skin". Questi potrebbero far luce su quale CSS dovrai scrivere. – sheriffderek

+0

Sono finalmente riuscito a cambiare abbastanza skin di default per compiacere il client e farlo riprodurre in modo abbastanza uniforme su tutti i principali browser (tornando al nero solido, senza gradiente su versioni precedenti di ie) Sto usando Ajax per cambiare i flussi delle stazioni che funziona sia nelle versioni hmtl5 che nel fallback.Se ti piacerebbe vedere questa implementazione sarei felice di condividere il mio codice. Mi ci è voluto del tempo per farlo funzionare in modo coerente. Grazie per la risposta. – jdbosley

+0

Crea la versione jsfiddle del tuo codice e forse possiamo giocarci un po '. –

risposta

5

Quello che devi fare è aggiungere class="mejs-ted" sul tuo elemento video. La funzione changeSkin() è utilizzata per lo swapping dinamico delle skin. Ad esempio: si desidera fornire più skin tra cui un utente può passare.

Così il vostro tag video dovrebbe avere la classe aggiunto ad esso, e sarà simile a questo:

<!-- replace mejs-ted with mejs-yourclass --> 
<video class="mejs-ted" ...> 
    <source type="video/mp4" src="...."> 
    <source type="video/ogg" src="...."> 
    <!-- etc.. --> 
</video> 

MediaElement controlla automaticamente l'attributo class sull'elemento video, e aggiunge che la classe al contenitore principale quindi tutti gli elementi DOM possono essere sovrascritti tramite il prefisso con .mejs-yourclass

Se si desidera solo modificare l'impostazione della skin predefinita, la classe funziona correttamente. Il mejs-skins.css ha un codice CSS di esempio per tutti gli stili che è necessario sovrascrivere per scurirlo in modo diverso. L'unica cosa che manca è la stili per il pulsante bigplay:

/* overlay bigplay */ 
.mejs-yourclass .mejs-overlay-button { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    width: 100px; 
    height: 100px; 
    margin: -50px 0 0 -50px; 
    background: url(bigplay.png) no-repeat; 
} 

.mejs-yourclass .mejs-overlay:hover .mejs-overlay-button { 
    background-position: 0 -100px; 
} 

troverete esempi di lavoro da git: https://github.com/johndyer/mediaelement/blob/master/demo/mediaelementplayer-skins.html