Итак, я работаю над концепцией, и, хотя я понимаю, что могу использовать FFMPEG, чтобы сделать то, что мне нужно, я надеялся, что будет способ использовать nodejs Запрос на добавление видео в конец другого видео. .
Следующий код работает для аудио, и используемый мной видеофайл является MP4 (обратите внимание, я пытаюсь объединить одно и то же видео вместе, поэтому вместо 9 секунд это должно быть 18 секунд.
URL = https://storage.googleapis.com/ad-system/testfolder/Video/10%20second%20video%20FAIL.mp4
const express = require('express');
request = require('request');
const router = new express.Router();
router.get(':url(*)', (req, res) =>{
var url = req.params.url.substr(1);
res.set({
"Content-Type": "video/mp4",
'Transfer-Encoding': 'chunked'
});
var clients = [];
ASystem();
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
console.log;(req.params.url);
/* START A FUNCTION */
function ASystem(){
var remote = "https://storage.googleapis.com/ad-system/testfolder/Video/10%20second%20video%20FAIL.mp4";
var streama = request.get(remote);
streama.on("connect", function() {
console.error(" connected!");
console.error(streama.headers);
});
streama.on("end", function() {
console.error(" END");
console.log(url);
if(url !== ""){getVideo();}
console.error(streama.headers);
// test = true;
});
// Fired after the HTTP response headers have been received.
streama.on('response', function(res) {
console.error(" Completed");
console.error(res.headers);
});
// When a chunk of data is received on the stream, push it to all connected clients
streama.on("data", function (chunk) {
// console.log(clients.length);
if (clients.length > 0){
for (client in clients){
clients[client].write(chunk);
};
}
});
};
/* END A FUNCTION */
/* FETCHING URLVIDEO */
function getVideo(){
var remote = url;
var streama = request.get(remote);
streama.on("connect", function() {
console.error(" Stream connected!");
//console.error(stream.headers);
});
streama.on("end", function() {
console.error(" Stream END");
// setTimeout(function(){ test = true; console.error('yep yep yep')},29000);
//console.error(stream.headers);
// test = true;
//getVideo();
});
// Fired after the HTTP response headers have been received.
streama.on('response', function(res) {
// console.error("Stream response!");
console.error(res.headers);
});
// When a chunk of data is received on the stream, push it to all connected clients
streama.on("data", function (chunk) {
// console.log(clients.length);
if (clients.length > 0){
for (client in clients){
clients[client].write(chunk);
};
}
});
}
/* END VIDEO*/
/* CORE SYSTEM */
clients.push(res);
/* END CORE SYSTEM */
});
module.exports = router;