HTML5 video etiketi ile yerel (sabit sürücü) video dosyası oynatılsın mı?


91

Aşağıdakileri başarmak istiyorum.

<video src="file:///Users/username/folder/video.webm">
</video>

Amaç, kullanıcının sabit diskinden bir dosya seçebilmesidir.

Ve yüklememenin nedeni elbette iletim maliyetleri ve depolama kotasıdır. Dosyayı kaydetmek için hiçbir sebep olmayacak.

Mümkün mü?


Kesinlikle bir dosya girişi ile çalışmaz. HTML5 ondrop ile çalışabilir, ancak bir dosya yüklemesi için bundan yararlanabileceğinizi sanmıyorum. En iyi bahsiniz muhtemelen bir Chrome uzantısı yapmak olacaktır.
Brian Nickel

Yanıtlar:


245

Yerel bir video dosyası oynatmak mümkündür.

<input type="file" accept="video/*"/>
<video controls autoplay></video>

inputÖğe aracılığıyla bir dosya seçildiğinde :

  1. 'değiştirme' olayı tetiklendi
  2. FileList'ten ilk File nesnesini alıninput.files
  3. File nesnesine işaret eden bir nesne URL'si oluşturun
  4. Nesne URL'sini video.srcözelliğe ayarlayın
  5. Arkana yaslan ve izle :)

http://jsfiddle.net/dsbonev/cCCZ2/embedded/result,js,html,css/


Bu benim için bir mac'ta chrome'da çalışıyor. Safari 6.1 ile çalışmıyor
Patrick Cullen

1
Safari ile ilgili bilinen sorunlar var gibi görünüyor: stackoverflow.com/questions/19088400/… ve bugs.webkit.org/show_bug.cgi?id=101671
Patrick Cullen

Mükemmel çözüm, Windows için Chrome'da da çalışıyor.
JT Taylor

Büyük videolar için tarayıcı belleğini öldürmemek için uygun video parçalarını sayfa haline getirmek ve çıkarmak için çalışan var mı?
Eric Bloch

.Mov

11

Bu, ancak HTML dosyası da fileyerel kullanıcının sabit diskinden protokolle yüklenmişse mümkün olacaktır .

HTML sayfası bir sunucudan HTTP tarafından sunuluyorsa, herhangi bir yerel dosyaya, bunları bir srcöznitelikte belirterek erişemezsiniz .file:// protokolle ; bu, kullanıcının bilgisayarındaki herhangi bir dosyaya, kullanıcının hangisinin bir büyük güvenlik riski.

Dimitar Bonev dediği gibi, olabilir kullanıcının kendi başlarına bir dosya seçici kullanarak seçerse bir dosyaya erişmek. Bu adım olmadan, iyi nedenlerle tüm tarayıcılar tarafından yasaklanmıştır. Bu nedenle, cevabı birçok kişi için yararlı olsa da, orijinal sorudaki kodun gerekliliğini gevşetir.


Dimitrov Bonev'in çözümü bu çözümün yanlış olduğunu gösteriyor - yerel dosyalara input type = file yoluyla erişebilirsiniz.
JT Taylor

1
Onun çözümü yalnızca kullanıcının önce dosyayı seçmesine izin verirseniz işe yarar. HTML kaynağındaki (soruda belirtildiği gibi) dosyanın yolunu hala adlandırıp bu şekilde erişemezsiniz. Bu nedenle, çözümü teknik olarak başka bir soru içindir.
Holger Just

vlc oynatıcı bilgisayardaki herhangi bir dosyayı da oynatabilir, ancak bu nedenle bir güvenlik riski de vardır. İstediklerini fark etmeden dosyaları sabit diskimizden sunucularına indirebilir, değil mi? Öyleyse neden güvenlik riski yok? En kötü durumda, tarayıcının dosyayı oynatmasına izin verirse kullanıcının manuel olarak kabul etmesine izin verilebilir. Çünkü kullanıcıların sayfaya% 100 güvendiği durumlar vardır, çünkü kullanıcılar web yaratıcıları ile aynı şirkette çalışanlardır.
Dariux

6

Bu problemle bir süre önce karşılaştım. Güvenlik ayarları nedeniyle web sitesi yerel bilgisayardaki video dosyasına erişemedi (gerçekten anlaşılabilir) YALNIZCA etrafından dolaşabilmemin yolu, yerel bilgisayarda (sunucu2Go) bir web sunucusu çalıştırmak ve web'den video dosyasına yapılan tüm referanslar localhost / video.mp4

<div id="videoDiv">
     <video id="video" src="http://127.0.0.1:4001/videos/<?php $videoFileName?>" width="70%" controls>
    </div>
<!--End videoDiv-->

İdeal bir çözüm değil ama benim için çalıştı.


2
Dosyayı bir önbellek konumuna kopyalarsanız ve video kaynağının yolunu buna ayarlarsanız, oynatılacaktır. Dosyayı context.getExternalCacheDir (). GetAbsolutePath () konumuna kopyalayın. Benim için çalışıyor.
Derek Wade

ayrıca apache veya firavun faresi gibi kullanıcıların bilgisayarındaki herhangi bir web sunucusuyla da yapabilir
Dariux
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.