
Recherche avancée
Médias (1)
-
SWFUpload Process
6 septembre 2011, par
Mis à jour : Septembre 2011
Langue : français
Type : Texte
Autres articles (48)
-
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 -
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 (6065)
-
How to speed up ffmpeg video conversion
22 avril 2018, par user2993497ffmpeg -i video.mp4 -c:v libvpx-vp9 -keyint_min 150 -g 150 -tile-columns 4 -frame-parallel 1 -f webm -dash 1 -an -vf scale=160:190 -b:v 250k -dash 1 video_160x90_250k.webm -an -vf scale=320:180 -b:v 500k -dash 1 video_320x180_500k.webm -an -vf scale=640:360 -b:v 750k -dash 1 video_640x360_750k.webm -an -vf scale=640:360 -b:v 1000k -dash 1 video_640x360_1000k.webm -an -vf scale=1280:720 -b:v 1500k -dash 1 video_1280x720_1500k.webm
I’m converting a single video into multiple videos at different resolutions. But it’s painfully slow. how can I speed this up ?
-
RTSP to HLS conversion with error on some devices
2 septembre 2024, par Wallace KetlerI'm trying to convert, on a node server, RTSP IP camera devices to HLS to run livestreams on the web. The following code works well for some RTSP devices, but for others I encounter problems.


function startLive(rtspUrl, outputDir, id_local, id_camera) {
 return new Promise((resolve, reject) => {
 const processKey = `${id_local}_${id_camera}`;
 if (ffmpegProcesses[processKey]) {
 return reject(new Error('Conversão já está em andamento para esta câmera'));
 }
 
 const process = ffmpeg(rtspUrl)
 .inputOptions([
 '-rtsp_transport', 'tcp',
 '-fflags', 'nobuffer',
 '-max_delay', '1000000',
 '-analyzeduration', '1000000',
 '-probesize', '1000000',
 '-flush_packets', '1',
 '-avioflags', 'direct'
 ])
 .outputOptions([
 '-c:v', 'libx264',
 '-preset', 'ultrafast',
 '-tune', 'zerolatency',
 '-c:a', 'aac',
 '-hls_time', '10',
 '-hls_flags', 'delete_segments',
 '-hls_list_size', '5',
 '-hls_wrap', '5',
 '-strict', '-2'
 ])
 .output(path.join(outputDir, 'stream.m3u8'))
 .on('start', (commandLine) => {
 console.log('Spawned FFmpeg with command: ' + commandLine);
 })
 .on('stderr', (stderrLine) => {
 console.log('FFmpeg stderr: ' + stderrLine);
 })
 .on('end', () => {
 console.log('Conversão concluída');
 delete ffmpegProcesses[processKey]; 
 resolve();
 })
 .on('error', (err, stdout, stderr) => {
 console.error('Erro na conversão', err);
 console.error('FFmpeg stdout:', stdout);
 console.error('FFmpeg stderr:', stderr);
 delete ffmpegProcesses[processKey]; 
 reject(err);
 })
 .run();
 
 ffmpegProcesses[processKey] = process; 
 });
 }



When the conversion succeeds, it continues indefinitely with the logs :


FFmpeg stderr: frame= 61 fps= 48 q=13.0 size=N/A time=00:00:02.03 bitrate=N/A dup=60 drop=0 speed= 1.6x 
FFmpeg stderr: frame= 75 fps= 42 q=17.0 size=N/A time=00:00:02.52 bitrate=N/A dup=62 drop=0 speed=1.41x 
FFmpeg stderr: frame= 91 fps= 39 q=16.0 size=N/A time=00:00:03.04 bitrate=N/A dup=65 drop=0 speed=1.31x 
FFmpeg stderr: frame= 108 fps= 38 q=15.0 size=N/A time=00:00:03.60 bitrate=N/A dup=68 drop=0 speed=1.27x 
FFmpeg stderr: frame= 121 fps= 36 q=24.0 size=N/A time=00:00:04.03 bitrate=N/A dup=70 drop=0 speed=1.21x 
FFmpeg stderr: frame= 138 fps= 36 q=16.0 size=N/A time=00:00:04.60 bitrate=N/A dup=73 drop=0 speed= 1.2x 
FFmpeg stderr: frame= 152 fps= 35 q=17.0 size=N/A time=00:00:05.08 bitrate=N/A dup=75 drop=0 speed=1.17x 
FFmpeg stderr: frame= 168 fps= 35 q=16.0 size=N/A time=00:00:05.60 bitrate=N/A dup=78 drop=0 speed=1.15x 
FFmpeg stderr: frame= 183 fps= 34 q=21.0 size=N/A time=00:00:06.11 bitrate=N/A dup=80 drop=0 speed=1.13x 
FFmpeg stderr: frame= 198 fps= 34 q=16.0 size=N/A time=00:00:06.60 bitrate=N/A dup=83 drop=0 speed=1.12x 
FFmpeg stderr: frame= 215 fps= 33 q=16.0 size=N/A time=00:00:07.16 bitrate=N/A dup=86 drop=0 speed=1.11x 
FFmpeg stderr: frame= 230 fps= 33 q=16.0 size=N/A time=00:00:07.66 bitrate=N/A dup=88 drop=0 speed= 1.1x 
FFmpeg stderr: frame= 246 fps= 33 q=19.0 size=N/A time=00:00:08.20 bitrate=N/A dup=91 drop=0 speed= 1.1x 



And with the segments saved in the folder configured as output. But for certain devices, after creating the stream.m3u8 file and saving the first segment, the conversion is considered finished and falls into
.on('end')
. The error log is as follows :

FFmpeg stderr: frame= 0 fps=0.0 q=0.0 size=N/A time=00:00:01.12 bitrate=N/A speed=2.08x 
FFmpeg stderr: [hls @ 0x55e00dfc4380] Opening 'my_path/stream0.ts' for writing
FFmpeg stderr: [hls @ 0x55e00dfc4380] Opening 'my_path/stream.m3u8.tmp' for writing
FFmpeg stderr: frame= 0 fps=0.0 q=0.0 Lsize=N/A time=00:00:01.37 bitrate=N/A speed= 2.5x 
FFmpeg stderr: video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
FFmpeg stderr: [aac @ 0x55e00dfff840] Qavg: 65536.000
FFmpeg stderr: 
Conversão concluída



The
muxing overhead: unknown
only appears when the error occurs and the conversion is complete.

I've already tried changing the video and audio encoders, as well as the various input and output parameters of the conversion. I also tried updating ffmpeg (it's already on the latest version, using fluent-ffmpeg,
"fluent-ffmpeg": "^2.1.3",
)

I would like to understand why this happens on some devices and how to fix it. Thanks.


-
Tunnel Streaming through server
28 octobre 2017, par Sarathvichet HengI want to be able to stream a hls IPTV streaming but the origin server has country restriction. I also have a VPS server of that country so I want to stream through that VPS.
For example : a request to server http://vps.com/tv.php?ch=2 and then stream
But the source behind it is the origin which is http://origin.com/tv/ch2.m3u8?token...............
I was able to bypass token and fetch the streaming url using php but don’t know how can I mask http://origin.com/tv/ch2.m3u8...... behind http://vps.com/tv.php..........
. I don’t want to use FFMPEG because it’ll get
data and rebroadcast a new stream and consume high vps resource.
and If I capture packet using Wireshark while playing this http://vps.com/tv.php?ch=2 I’ll see http://origin.com/tv/ch2.m3u8?token......... behind it.