
Recherche avancée
Médias (91)
-
Les Miserables
9 décembre 2019, par
Mis à jour : Décembre 2019
Langue : français
Type : Textuel
-
VideoHandle
8 novembre 2019, par
Mis à jour : Novembre 2019
Langue : français
Type : Video
-
Somos millones 1
21 juillet 2014, par
Mis à jour : Juin 2015
Langue : français
Type : Video
-
Un test - mauritanie
3 avril 2014, par
Mis à jour : Avril 2014
Langue : français
Type : Textuel
-
Pourquoi Obama lit il mes mails ?
4 février 2014, par
Mis à jour : Février 2014
Langue : français
-
IMG 0222
6 octobre 2013, par
Mis à jour : Octobre 2013
Langue : français
Type : Image
Autres articles (80)
-
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...) -
Configurer la prise en compte des langues
15 novembre 2010, parAccéder à la configuration et ajouter des langues prises en compte
Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...) -
XMP PHP
13 mai 2011, parDixit Wikipedia, XMP signifie :
Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)
Sur d’autres sites (9991)
-
How to add 'now playing' song title info to an rtmp audio stream in ffmpeg
11 juillet 2020, par no_event_loggedI am trying to add 'now playing' metadata to a rtmp audio stream using ffmpeg.


My current ffmpeg encoder string looks like this and is working fine, just missing the now playing info :


"C:\Program Files (x86)\ffmpeg\bin\ffmpeg.exe" -re -f dshow -i audio="Line 2 (Virtual Audio Cable)" -acodec libfdk_aac -profile:a aac_he_v2 -cutoff 18000 -ab 48k -ac 2 -ar 44100 -f flv "rtmp://blah.com:1935/live/mystream


The playout software (StationPlaylist) exports the current song title to
C:\NowPlaying\nowplaying.txt
but I have no idea how to get ffmpeg to inject this / keep it up to date.

Any pointers would be great !


-
Select song sample rate
22 avril 2022, par ClamarcI have a folder with several mp3's and I needed to separate (copy) all the 4800 hz sample rate files to another folder.


I have a folder "General Audios" and I created another one called "Audios 48000 sample rate"


I'm running the ffprobe command that returns the sample rate value of each song.. but when I try to save the value in a string to be able to use the IF and copy only the ones with 48000 hz, I get a message that the command is a command input ? what is wrong ?


md "C:\Users\%username%\Desktop\Áudios 48000 sample rate"

cd /d "C:\Users\%username%\Desktop\Áudios Gerais"

for %%F IN (*) do (
 ffprobe -i "%%F" -v error -show_entries stream=sample_rate ˆ
 -of default=noprint_wrappers=1:nokey=1 set %%S if %%S==48000 ˆ
 "C:\Users\%username%\Desktop\Áudios 48000 sample rate\%%F"
 )

pause



EDITED :
I have no more code, this is the only one, I run the ffprobe command in a folder and I select the ones that have 48000Hz to copy to another folder, that's all !?!?


-
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 ?