I run the server on node JS, why I cannot play video and audio on this page, I saw a piece of code where video from the server was sent in the stream. My question is how to make video and audio still playable. I am writing on Node JS 2 day, I didnβt find anything suitable on the Internet, how to implement it, therefore, dear commentators do not judge strictly)
There is an html page:
<html> <head> <title>Π₯ΠΎΠΊΠΊΠ΅ΠΉΠ½Π°Ρ ΡΠΊΠΈΠΏΠΈΡΠΎΠ²ΠΊΠ°</title> <link rel="stylesheet" type="text/css" href="css/reset.css"> <link rel="stylesheet" type="text/css" href="css/style.css"> </head> <body> <header><div class = "headBlock" id="blink">Π₯ΠΎΠΊΠΊΠ΅ΠΉΠ½Π°Ρ ΡΠΊΠΈΠΏΠΈΡΠΎΠ²ΠΊΠ°</div></header> <div class = "buttonPanel"> <a href="#" class="button25" onclick="location.href='contacts.html';">ΠΠΎΠ½ΡΠ°ΠΊΡΡ</a> <a href="#" class="button25" onclick="location.href='galery.html';">ΠΠ°Π»Π΅ΡΠ΅Ρ</a> </div> <div class = "menu"> <div class = "spider"></div> <table> <thead> <th>ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΌΠ΅Π½Ρ</th> </thead> <tbody> <tr><td onclick="location.href='catalog.html';">ΠΠ°ΡΠ°Π»ΠΎΠ³</td></tr> <tr><td onclick="location.href='aboutCompany.html';">Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ</tr> </tbody> </table> </div> <div class = "centerBlock"> <div> <div>ΠΠΈΠ΄Π΅ΠΎ ΠΎ Ρ
ΠΎΠΊΠΊΠ΅Π΅</div> <video width="400" height="300" controls="controls"> <source src="video/ska.ogv" type='video/ogg'> Π’Π΅Π³ video Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²Π°ΡΠΈΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ. </video> </div> </br> </br> <div> <div> ΠΡΠ·ΡΠΊΠ° ΠΎ Ρ
ΠΎΠΊΠΊΠ΅Π΅</div> <audio id="myPlayer" src="audio/music.ogg" controls="controls"></audio><br/><br/> <button onclick="document.getElementById('myPlayer').play()">ΠΠ³ΡΠ°ΡΡ</button> <button onclick="document.getElementById('myPlayer').pause()">ΠΠ°ΡΠ·Π°</button> </div> </div> <footer> <a href="#" class="button" onclick = "location.href='index.html';">ΠΠ° Π³Π»Π°Π²Π½ΡΡ</a> </footer> </body> Server:
var http = require("http"); var url = require("url"); var fs = require('fs'); var mysql = require('mysql'); var path = require('path'); formidable = require('formidable'); function onServer(route, newServer, reqtype) { function onRequest(request, response){ var pathname = url.parse(request.url).pathname; try {pathname = pathname.substring(1, pathname.length);} catch (err){} if(request.method === 'GET') get(request, response, pathname); if (request.method === 'POST') post(request, response, pathname); else{ if (pathname !== "favicon.ico") { openPage(response, pathname); } } } function openPage(response, pathname){ var path = route(pathname); var html = ""; html = newServer(path); var type = reqtype(path); response.writeHead(302, {"Content-Type" : "text/" + type}); response.write(html); response.end(); } function get(request, response, pathname){ switch(pathname){ case "audio/music.ogg": var filePath = path.join(__dirname, 'audio/music.ogg'); var stat = fileSystem.statSync(filePath); response.writeHead(200, { 'Content-Type': 'audio/ogg', 'Content-Length': stat.size }); var readStream = fileSystem.createReadStream(filePath); readStream.pipe(response); break; case "video/ska.ogv": var filePath = path.join(__dirname, 'video/ska.ogv'); var stat = fileSystem.statSync(filePath); response.writeHead(200, { 'Content-Type': 'video/ska.ogv', 'Content-Length': stat.size }); var readStream = fileSystem.createReadStream(filePath); readStream.pipe(response); break; default: console.log("Uncorrect choice"); } } function post(request, response, pathname){ switch(pathname){ case "registration.html": var form = new formidable.IncomingForm(); form.parse(request, function(err, params, files){ connection.query("INSERT INTO users (login, password) VALUES (?,?)", [params["login"],params["userpass"]], function(err, result) { if (!err) { console.log('new registration'); openPage(response, "successfulRegistration.html"); } else console.log(err.message); }); }); break; case "autorization.html": var form = new formidable.IncomingForm() form.parse(request, function(err, params, files){ connection.query('SELECT * from users', params, function(err, rows, fields){ if (!err){ for (var i = 0; i < rows.length; i++){ if (rows[i].login === params.login && rows[i].password === params.password){ console.log('5'); console.log('authorization'); openPage(response, "home.html"); return 0; } else{ openPage(response, "unsuccessfulRegistration.html"); return 0; } } console.log(params); } }); }); break; case "server.js": fs.readFile('txt/company.txt', 'utf8', function(err, data) { if(err){ console.log(err); }else{ console.log(data); response.write(data); response.end(); } }); break; case "audio/music.ogg": var filePath = path.join(__dirname, 'audio/music.ogg'); var stat = fileSystem.statSync(filePath); response.writeHead(200, { 'Content-Type': 'audio/ogg', 'Content-Length': stat.size }); var readStream = fileSystem.createReadStream(filePath); readStream.pipe(response); break; case "video/ska.ogv": var filePath = path.join(__dirname, 'video/ska.ogv'); var stat = fileSystem.statSync(filePath); response.writeHead(200, { 'Content-Type': 'video/ska.ogv', 'Content-Length': stat.size }); var readStream = fileSystem.createReadStream(filePath); readStream.pipe(response); break; default: console.log("Uncorrect choice"); } } http.createServer(onRequest).listen(5656); console.log("Server started on port 5656"); }; exports.onServer = onServer;