
Recherche avancée
Autres articles (50)
-
La sauvegarde automatique de canaux SPIP
1er avril 2010, parDans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...) -
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 -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...)
Sur d’autres sites (10816)
-
avcodec/mpegvideo_enc : Check FLV1 resolution limits
8 janvier, par Michael Niedermayer -
avfilter/scale_amf : Add AMF VPP & super resolution filters
15 octobre 2024, par Evgeny Pavlovavfilter/scale_amf : Add AMF VPP & super resolution filters
This commit adds two AMF filters : vpp_amf & sr_amf.
Both filters are using AMF hardware acceleration.
vpp_amf supports simple scaling algorithms & color conversion.
sr_amf supports advanced scaling algorithms such as FSR & can
be used for upscaling only. -
why mpd file contain same resolution AdaptationSet
18 mars, par Jahid Hasan Antorthis is the code that i used. this code create a minifest.mpd file, with the same resolution AdaptationSet set


const createCourse = async (req: Request, res: Response, next: NextFunction) => {
 try {
 const VIDEO_STORAGE_PATH = path.join(__dirname, "../../public/uploads").replace(/\\/g, "/");
 const videoId = req.body.videoId;
 const inputPath = path.join(VIDEO_STORAGE_PATH, "original", `${videoId}.mp4`).replace(/\\/g, "/");
 const outputDir = path.join(VIDEO_STORAGE_PATH, "dash", videoId).replace(/\\/g, "/");

 if (!fs.existsSync(outputDir)) {
 fs.mkdirSync(outputDir, { recursive: true });
 }

 if (!ffmpegStatic) {
 return next(new Error("❌ ffmpegStatic path is null"));
 }

 ffmpeg.setFfmpegPath(ffmpegStatic);

 const qualities = [
 { resolution: "1280x720", bitrate: "1800k" },
 { resolution: "854x480", bitrate: "1200k" },
 { resolution: "640x360", bitrate: "800k" },
 { resolution: "426x240", bitrate: "400k" }
 ];

 const outputMpd = path.join(outputDir, "manifest.mpd").replace(/\\/g, "/");

 // Create FFmpeg command
 let command = ffmpeg(inputPath)
 .output(outputMpd)
 .outputOptions([
 '-f dash', // Output format
 '-seg_duration 4', // Segment duration in seconds
 '-window_size 10', // Number of segments in the manifest
 '-init_seg_name init-stream$RepresentationID$.webm', // Name for initialization segments
 '-media_seg_name chunk-stream$RepresentationID$-$Number%05d$.webm', // Name for media segments
 ]);

 // Add multiple resolutions
 qualities.forEach(({ resolution, bitrate }) => {
 console.log('esolution, bitrate :>> ', resolution, bitrate);
 command
 .outputOptions([
 `-map 0:v`, // Map the video stream
 `-s ${resolution}`, // Set resolution
 `-b:v ${bitrate}`, // Set bitrate
 `-c:v libvpx-vp9`, // Use VP9 codec
 `-c:a libopus`, // Use Opus codec
 ]);
 });

 command
 .on("end", () => {
 console.log(`🚀 Video processing complete: ${outputMpd}`);
 })
 .on("error", (err) => {
 console.error("❌ ffmpeg error:", err);
 next(err);
 })
 .run();