Recherche avancée
Médias (1)
-
Video d’abeille en portrait
14 mai 2011, par
Mis à jour : Février 2012
Langue : français
Type : Video
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)
-
How to make low latency and have good quality for hls live streaming
7 juillet 2022, par parsaI used this code for create live stream from a mp4 file :



ffmpeg -re -i input.mp4 
-c:a aac -c:v libx264 -s uhd2160 -f hls -hls_list_size 0 2160p/out.m3u8 
-c:a aac -c:v libx264 -s 2560x1440 -f hls -hls_list_size 0 1440p/out.m3u8 
-c:a aac -c:v libx264 -s hd1080 -f hls -hls_list_size 0 1080p/out.m3u8 
-c:a aac -c:v libx264 -s hd720 -f hls -hls_list_size 0 720p/out.m3u8 
-c:a aac -c:v libx264 -s hd480 -f hls -hls_list_size 0 480p/out.m3u8 
-c:a aac -c:v libx264 -s nhd -f hls -hls_list_size 0 360p/out.m3u8 
-c:a aac -c:v libx264 -s cga -f hls -hls_list_size 0 200p/out.m3u8



but in streaming time, there are very latency.

it seems, this latency exists on streaming videos which have very heigh quality,just like the video(4k) which I used that for livestream.

How can I decrease this delay and decrease memory usage for that ?

-
How to read stream data as chunk ?
5 juillet 2022, par imagesckI try to lean, how to read chunk of stream data. It almost works, it likes i misunderstanding implement allocate buffer size in pause event of stdout. the video that i use is https://www.youtube.com/watch?v=oiNkumxPVzU. 480p. ffmpeg freeze to encode at 03:53, no error, just freeze likes missing require bytes. the video length exactly is 03:55.


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

const decArgs = [
 '-i', path.join(__dirname + '/public/future.mkv'),
 '-an',
 '-pix_fmt', 'rgb32',
 '-f', 'rawvideo',
 '-'
];

const decode = spawn('ffmpeg', decArgs, {
 stdio: [
 'ignore',
 'pipe',
 'ignore'
 ] 
});

// Encode section
const width = 854;
const height = 480;
const channels = 4;
const fps = 29.97002997002997.toString();
const colorsLength = width*height*channels;


const encArgs = [
 '-pix_fmt', 'rgb32',
 '-f', 'rawvideo',
 '-s', `${width}x${height}`,
 '-r', fps,
 '-i', '-',
 '-c:v', 'libx264',
 '-preset', 'ultrafast',
 '-crf', '30',
 '-pix_fmt', 'yuv420p',
 '-r', fps,
 '-y',
 path.join(__dirname + '/public/output.mp4')
];

const encode = spawn('ffmpeg', encArgs, {
 stdio: [
 'pipe',
 'ignore',
 'pipe'
 ]
});

// colors RGBA
let buffer = Buffer.alloc(0);
decode.stdout.on('data', data => {
 const allocSize = buffer.length + data.length;
 buffer = Buffer.concat([buffer, data], allocSize);
 
 if (buffer.length > colorsLength) decode.stdout.pause();
});

decode.stdout.on('pause', () => {
 // Create new buffer with size of colors length
 const bufferData = Buffer.alloc(colorsLength);
 buffer.copy(bufferData, 0, 0, colorsLength);
 // after manipulate the buffer send it to encode
 encode.stdin.write(bufferData);
 
 // Create new buffer to take out left buffer. cause stream length cant be predict.
 const leftBuffer = Buffer.alloc(buffer.length - bufferData.length);
 buffer.copy(leftBuffer, 0, buffer.length - bufferData.length, buffer.length);
 buffer = leftBuffer;

 decode.stdout.resume()
});

decode.stdout.on('end', () => {
 if (buffer.length) encode.stdin.write(buffer);
})

encode.stderr.on('data', data => {
 console.log(data.toString())
})


-
FFMPEG scaling video disable viewing it in HTML player while process is not ended, for video transcoding on the fly
6 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 - To allow fragmented video metas


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.


EDIT - To play entire video while transcoding


I found the following solution that creates a streaming flow througout RTMP protocol :


ffmpeg -i input.mp4 -vf scale=-2:720 -movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov output.mp4 -listen 1 -f flv rtmp://127.0.0.1:10000/test-stream


My only problem, is that it's not supported into the HTML5 video player, so I tried to convert the RTMP stream to HTTP with the following command :


ffmpeg -v verbose -i rtmp://127.0.0.1:10000/test-stream -c:v libx264 -c:a aac -ac 1 -strict -2 -crf 18 -profile:v baseline -maxrate 400k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -hls_list_size 6 -start_number 1 C:\www\test-stream.m3u8


But this is only supported on Apple devices, any idea about how to read this .m3u8 on all other devices ?