Recherche avancée
Autres articles (50)
-
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
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 (...) -
Librairies et binaires spécifiques au traitement vidéo et sonore
31 janvier 2010, parLes logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
Binaires complémentaires et facultatifs flvtool2 : (...)
Sur d’autres sites (9268)
-
FFMPEG scaling video disable viewing it while process is not ended, for video transcoding on the fly
5 juillet 2022, par Lucas FGood day all,


I'm working on a video player with 1080p original video files, and I would like to change their resolution on the fly :


Actually I host all my original video files under a web mp4 1080p format, and I would like to be able to offer 720p, 480p, etc ... qualities.


So I started to look for tutorials about video transcoding on the fly and I found the FFMPEG tool.


I'm actually using the following command to scale videos - to 720p for e.g. :


ffmpeg -i input.mp4 -vf scale=-1:720 output.mp4


The problem is, once FFMPEG starts scaling it, I have to wait the end of the process before being able to play the video. Do you know if there is any parameter for this command to allow playing the video while it's under scaling ?


Or any workaround that can help me doing this ?


Thank you in advance for your help !


EDIT


Now I found how to access readable content while transcoding (by transcoding to fragmented MP4) :


ffmpeg -i input.mp4 -vf scale=-2:720 -movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov output.mp4


But my problem is when opening the video it comes as an "ended" video of the current transcoded data.


So if video lasts 1min and is half transcoded, I'll see only 30s, it will not load more data, once the rest is transcoded.


-
How to maximize ffmpeg crop and overlay thousand block in same time ?
22 juin 2022, par yuno sagaI try to encrypt a frame of video to random of 16x16 block. so the result will be like artifact video. but exactly it can be decode back. only the creation that know the decode algorithm. but my problem is ffmpeg encode so slow. 3 minutes video, 854x480 (480p) https://www.youtube.com/watch?v=dyRsYk0LyA8. this example result frame that have been filter https://i.ibb.co/0nvLzkK/output-9.jpg. each frame have 1589 block. how to speed up this things ? 3 minutes only 24 frame done. the vido have 5000 thousand frame, so for 3 minutes video it takes 10 hours. i dont know why ffmpeg only take my cpu usage 25%.


const { spawn } = require('child_process');
const fs = require('fs');

function shuffle(array) {
 let currentIndex = array.length, randomIndex;
 
 // While there remain elements to shuffle.
 while (currentIndex != 0) {
 
 // Pick a remaining element.
 randomIndex = Math.floor(Math.random() * currentIndex);
 currentIndex--;
 
 // And swap it with the current element.
 [array[currentIndex], array[randomIndex]] = [
 array[randomIndex], array[currentIndex]];
 }
 
 return array;
 }

function filter(width, height) {
 const sizeBlock = 16;
 let filterCommands = '';
 let totalBlock = 0;
 const widthLengthBlock = Math.floor(width / sizeBlock);
 const heightLengthBlock = Math.floor(height / sizeBlock);
 let info = [];

 for (let i=0; i < widthLengthBlock; i++) {
 for (let j=0; j < heightLengthBlock; j++) {
 const xPos = i*sizeBlock;
 const yPos = j*sizeBlock;
 filterCommands += `[0]crop=${sizeBlock}:${sizeBlock}:${(xPos)}:${(yPos)}[c${totalBlock}];`;

 info.push({
 id: totalBlock,
 x: xPos,
 y: yPos
 });

 totalBlock += 1;
 } 
 }

 info = shuffle(info);

 for (let i=0; i < info.length; i++) {
 if (i == 0) filterCommands += '[0]';
 if (i != 0) filterCommands += `[o${i}]`;

 filterCommands += `[c${i}]overlay=x=${info[i].x}:y=${info[i].y}`;

 if (i != (info.length - 1)) filterCommands += `[o${i+1}];`; 
 }

 return filterCommands;
}

const query = filter(854, 480);

fs.writeFileSync('filter.txt', query);

const task = spawn('ffmpeg', [
 '-i',
 'C:\\Software Development\\ffmpeg\\blackpink.mp4',
 '-filter_complex_script',
 'C:\\Software Development\\project\\filter.txt',
 '-c:v',
 'libx264',
 '-preset',
 'ultrafast',
 '-pix_fmt',
 'yuv420p',
 '-c:a',
 'libopus',
 '-progress',
 '-',
 'output.mp4',
 '-y'
], {
 cwd: 'C:\\Software Development\\ffmpeg'
});

task.stdout.on('data', data => { 
 console.log(data.toString())
})


-
Unable to add some tags and attributes when generating m3u8 using ffmpeg
6 juin 2022, par Nishanth ReddyBelow is the command I am using to generate an
m3u8file but there are some tags likeEXT-X-I-FRAME-STREAM-INFand attributes likeframerate,average bandwidthandURIthat I am unable to add.

Can any one help me with this ?


ffmpeg -i "C:\Users\123\Downloads\primary_audio_eng_4.mp4" -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -c:v libx264 -crf 22 -c:a aac -ar 48000 -filter:v:0 scale=w=480:h=360 -maxrate:v:0 600k -b:a:0 500k -filter:v:1 scale=w=640:h=480 -maxrate:v:1 1500k -b:a:1 1000k -filter:v:2 scale=w=1280:h=720 -maxrate:v:2 3000k -b:a:2 2000k -var_stream_map "v:0,a:0,name:360p v:1,a:1,name:480p v:2,a:2,name:720p" -preset fast -hls_list_size 10 -threads 0 -f hls -hls_time 3 -hls_flags independent_segments -master_pl_name "livestream.m3u8" -y "C:\m3u8\beachnew\livestream-%v.m3u8"