新規です
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
おかしいこと言ってるかもしれないけど
ytdl-coreをつかってmp4を取得してそれをそのまま動画として流したい
でもファイルとして保存したくないってできる??
RE: https://misskey.io/notes/96vto905ce
This account is not set to public on notestock.
var router = require("express").Router();
const fs = require('fs');
const ytdl = require('ytdl-core');
const YouTube = require("youtube-sr").default;
const {exec}= require('child_process');
let vid=0;
let aud=0;
//ここまで変数の定義とか
router.get("/", (req, res) => {
res.status(500).send("");
});
router.get("/:videoId", async (req, res) => {
const info = await YouTube.getVideo(`https://youtube.com/watch?v=${req.params.videoId}`);
const videoid = req.params.videoId;
video_title=info.title;
video_views=info.views;
video_uploadat=info.uploadedAt;
video_description=info.description;
channel_id=info.channel.id;
channel_icon=info.channel.icon.url;
channel_name=info.channel.name;
channel_verified=info.channel.verified;
channel_subscribers=info.channel.subscribers;
console.log(__dirname +"/../")
//---------------------------------------------------------------
if( fs.existsSync(`videos/${req.params.videoId}.mp4`) ){
res.render('watch/index.ejs',{video_id: videoid, video_title: video_title, video_views: video_views, video_uploadat: video_uploadat, channel_id: channel_id, channel_icon: channel_icon, channel_name: channel_name, channel_verified: channel_verified, channel_subscribers: channel_subscribers}); //ファイルが存在していたらなにもせずにレスポンスを返す
}else{
const url = `https://www.youtube.com/watch?v=${videoid}`;
const video = ytdl(url, { filter: 'videoonly', quality: 'highestvideo' });
const audio = ytdl(url, { filter: 'audioonly', quality: 'highestaudio' });
//音声のダウンロード
video.pipe(fs.createWriteStream(`videos/${videoid}_noaudio.mp4`));
//動画のダウンロード
audio.pipe(fs.createWriteStream(`videos/${videoid}.mp3`));
video.on('end', () => {
vid=1;
if (vid==1 && aud==1){
convert(videoid);
res.render('watch/index.ejs',{video_id: videoid, video_title: video_title, video_views: video_views, video_uploadat: video_uploadat, channel_id: channel_id, channel_icon: channel_icon, channel_name: channel_name, channel_verified: channel_verified, channel_subscribers: channel_subscribers},{async: true});
}
});
audio.on('end', () => {
aud=1;
if (vid==1 && aud==1){
convert(videoid);
res.render('watch/index.ejs',{video_id: videoid, video_title: video_title, video_views: video_views, video_uploadat: video_uploadat, channel_id: channel_id, channel_icon: channel_icon, channel_name: channel_name, channel_verified: channel_verified, channel_subscribers: channel_subscribers},{async: true});
}
});
}
});
//--------音声と動画の結合作業----------
function convert(videoid){
console.log(videoid);
exec(`ffmpeg -i videos/${videoid}_noaudio.mp4 -i videos/${videoid}.mp3 -c copy videos/${videoid}.mp4`);
}
module.exports = router;
スパゲティコード…まっちゃてぃー(低スペックモデル
まっちゃてぃー(高スペックモデル
まっちゃてぃー(省電力モデル
あなたはどれがほしいですか
This account is not set to public on notestock.
@EchigawaX230IBM@mk.lei202.com わからないけど LIFEBOOK A552/EXってやつです
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.