Autor Zpráva
piiiiiiiip
Profil
Ahoj, snažím se přehrát video uložené na svém lokálním disku v přehrávači ve webovém prohlížeči.
Melo by toho jít docílit pomocí metody createObjectURL().
Video se mi podaří úspěšně přehrát pomocí tohoto kodu:
<input type="file" name="file" id="fileItem" onchange="onChange()" >
<input type="submit" value="Play">

<script>
var URL = window.URL || window.webkitURL;
var video = document.getElementsByTagName('video')[0];
function onChange() {
    var fileItem = document.getElementById('fileItem');
    //console.log(fileItem);
    var files = fileItem.files;
    var file = files[0];
    var url = URL.createObjectURL(file);
    console.log(file);
    console.log(url);
    video.src = url;
    video.load();
    video.onloadeddata = function() {
        video.play();
    }
}
</script>

To však funguje pouze přes ten input ve kterém si zvolím soubor který chci přehrát. Já ale potřebuji aby se video k přehrání zvolilo podle cesty k tomu videu uložené v databázi.

Pokusil jsem se o to takto:
var file = new File(['file:///C:/videa/video.mp4'], "video.mp4");
ale to bohužel nefunguje.
Keeehi
Profil
piiiiiiiip:
Webová stránka nemá přístup k souborům, co jsou v počítači uložené. Já vím, že ty chceš na svém počítači přehrávat své soubory. Pokud by to ale šlo, tak by ti jakákoli stránka mohla ukrást všechny tvé soubory. Takže to kvůli bezpečnosti možné není.

Řešením je rozjet si vlastní lokální webový server, který ty soubory zpřístupní na nějaké lokální url adrese.
Radek9
Profil
piiiiiiiip:
Můžeš použít showDirectoryHandle, díky které dostaneš přístup k celé složce. Z ní si pak už můžeš vytáhnout potřebné soubory. Ta funkce vrací objekt typu FileSystemDirectoryHandle. S trochou snahy ho můžeš následně uložit do IndexedDB, abys o ten přístup nemusel žádat při každém načtení stránky, např. takhle: https://stackoverflow.com/a/65938910/1651698.
piiiiiiiip
Profil
Keeehi:
Ano toho jsem si vědom. Na lokálním serveru mi to běží (a vždy bude). Účelem tohoto projektu je pouze přiřadit tagy k mim videím aby se v nich dalo lépe vyhledávat, ne zpřístupnovat je přes internet.
Když video přesunu přímo do složky která obsahuje tu webovou stránku tak to funguje. Cesta k souboru je totiš například videaVeWebovémProstoru/video.mp4. To by ale znamenalo že bych všechna svá videa musel přesunout do té složky čemuž bych se rád vyhnul. Řešit jsem to chtěl tedy tak že místo cesty videaVeWebovémProstoru/video.mp4 bych použil například cestu c:/videa/video.mp4. Když se tu cestu (c:/videa/video.mp4) pokusím otevřít ve webovém prohlížeči tak se mi v něm video otevře bez problému tak jak má. Bohužel však nejde otevřít v html přehrávačí ve webové stránce (lokální server). Zkoušel jsem to řešit kodem který jsem přiložil ve svém dotazu, ten ale vyžaduje abych vybral video které chci přehrát přes input pole což je mi k ničemu a nepodařilo se mi přijít na to jak to automatizovat.


Radek9:
To mi vrátí pouze seznam souborů ve složce ne?
Radek9
Profil
piiiiiiiip:
To by ale znamenalo že bych všechna svá videa musel přesunout do té složky čemuž bych se rád vyhnul.
To ale není pravda. Co to je za server? Apache? Můžeš si pro danou složku vytvořit alias a potom to načítat přes něj, viz httpd.apache.org/docs/2.4/mod/mod_alias.html.

To mi vrátí pouze seznam souborů ve složce ne?
No a potom skrze getFileHandle získáš handle konkrétního obsahu a s tím už můžeš pracovat.
piiiiiiiip
Profil
Radek9:
Ano je to Apache a ten Alias vypadá že by můj problém měl vyřešit. Děkuji za radu.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0