
Recherche avancée
Médias (91)
-
DJ Z-trip - Victory Lap : The Obama Mix Pt. 2
15 septembre 2011
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Matmos - Action at a Distance
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
DJ Dolores - Oslodum 2004 (includes (cc) sample of “Oslodum” by Gilberto Gil)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Danger Mouse & Jemini - What U Sittin’ On ? (starring Cee Lo and Tha Alkaholiks)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Cornelius - Wataridori 2
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Rapture - Sister Saviour (Blackstrobe Remix)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
Autres articles (52)
-
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...) -
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir
Sur d’autres sites (4050)
-
Next.js Youtube mp4 downloader downloads high quality video but muted
4 avril 2023, par Stef-LevI have created a next.js video downloader and I want to download videos of the highest quality. When I trigger the download I only get a muted mp4 file (in high quality) and a muted mp3 file. Here is the api file. How could I download the video, the audio and then merge them with ffmpeg correctly ?


import ytdl from "ytdl-core";
import fs from "fs";
import { Server } from "socket.io";
import ffmpeg from "fluent-ffmpeg";

export default async function handler(req, res) {
 if (res.socket.server.io) {
 console.log("Socket is already running");
 res.end();
 return;
 }
 console.log("Socket is initializing");
 const io = new Server(res.socket.server);
 res.socket.server.io = io;

 io.on("connection", async (socket) => {
 console.log(socket.id, "socketID");

 const sendError = async (msg) => {
 socket.emit("showError", msg);
 };

 const sendProgress = async (msg) => {
 console.log(msg);
 socket.emit("showProgress", msg);
 };

 const sendComplete = async (msg) => {
 console.log(msg);
 socket.emit("showComplete", msg);
 };

 const downloadVideo = async (url) => {
 try {
 const videoInfo = await ytdl.getInfo(url);
 const outputPath = path.join(
 process.cwd(),
 "mp4s",
 `${videoInfo.videoDetails.title}.mp4`
 );
 const audioPath = path.join(
 process.cwd(),
 "mp4s",
 `${videoInfo.videoDetails.title}.mp3`
 );

 const videoFormat = ytdl.chooseFormat(videoInfo.formats, {
 quality: "highestvideo",
 filter: "videoonly",
 });
 const audioFormat = ytdl.chooseFormat(videoInfo.formats, {
 quality: "highestaudio",
 filter: "audioonly",
 });
 const videoStream = ytdl(url, { quality: videoFormat.itag });
 const audioStream = ytdl(url, { quality: audioFormat.itag });

 const videoOutput = fs.createWriteStream(outputPath);
 const audioOutput = fs.createWriteStream(audioPath);

 audioStream.pipe(audioOutput);
 videoStream.pipe(videoOutput);

 let downloadedBytes = 0;
 let totalBytes =
 videoFormat.contentLength || videoInfo.length_seconds * 1000000;

 videoOutput.on("data", (chunk) => {
 downloadedBytes += chunk.length;
 const progress = Math.round((downloadedBytes / totalBytes) * 100);
 sendProgress({ progress });
 });

 videoOutput.on("error", (err) => {
 console.error(err);
 sendError({
 status: "error",
 message: "An error occurred while writing the video file",
 });
 });

 audioOutput.on("error", (err) => {
 console.error(err);
 sendError({
 status: "error",
 message: "An error occurred while writing the audio file",
 });
 });

 videoOutput.on("finish", () => {
 audioOutput.on("finish", () => {
 if (fs.existsSync(outputPath) && fs.existsSync(audioPath)) {
 const outputFile = path.join(
 process.cwd(),
 "mp4s",
 `${videoInfo.videoDetails.title}-with-audio.mp4`
 );
 const command = ffmpeg()
 .input(outputPath)
 .input(audioPath)
 .outputOptions("-c:v copy")
 .outputOptions("-c:a aac")
 .outputOptions("-b:a 192k")
 .outputOptions("-strict -2")
 .output(outputFile)
 .on("end", () => {
 fs.unlink(outputPath, () => {});
 fs.unlink(audioPath, () => {});
 sendComplete({
 status: "success",
 });
 })
 .on("error", (err) => {
 console.error("ffmpeg error:", err.message);
 sendError({
 status: "error",
 message:
 "An error occurred while processing the audio and video files",
 });
 });
 command.run();
 } else {
 console.error("Output or audio file not found");
 sendError({
 status: "error",
 message: "Output or audio file not found",
 });
 }
 });
 });
 } catch (error) {
 console.error(error);
 sendError({
 status: "error",
 message: "An error occurred while downloading the video",
 });
 }
 };
 socket.on("downloadVideo", downloadVideo);
 });
 res.end();
}



I am also using socket.io to show the progress in the frontend, but for some reason I don't get the progress correctly. Is it possible to do that ?


-
Recommendations for Open Source Webinar Platforms Supporting 1000+ Users [closed]
28 janvier, par Firas Ben saidI am looking for an open-source webinar platform capable of hosting 1000+ concurrent users. My primary requirements are :


- 

- Scalability to handle large audiences seamlessly.
- Support for features like video streaming, screen sharing, and chat functionality.
- Compatibility with modern technologies such as RTMP and HLS.
- Extensibility to integrate with other tools or APIs.










I’ve come across platforms like BigBlueButton but it cannot handle a great number of users in a session, so I’d like to know if there are other options available.


-
avfft : avoid overreads with RDFT API users
9 février 2024, par Lynneavfft : avoid overreads with RDFT API users
The new API requires an extra array member at the very end,
which old API users did not do.This disables in-place RDFT transforms and instead
does the transform out of place by copying once, there shouldn't
be a significant loss of speed as our in-place FFT requires a reorder
which is likely more expensive in the majority of cases to do.