
Recherche avancée
Médias (3)
-
GetID3 - Bloc informations de fichiers
9 avril 2013, par
Mis à jour : Mai 2013
Langue : français
Type : Image
-
GetID3 - Boutons supplémentaires
9 avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
-
Collections - Formulaire de création rapide
19 février 2013, par
Mis à jour : Février 2013
Langue : français
Type : Image
Autres articles (66)
-
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 -
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.
Sur d’autres sites (11549)
-
Rtsp streaming on nodejs - Blank screen
17 juillet 2024, par theplaceofburakI am currently working on a Node.js project where I need to implement streaming using ffmpeg. However, I am facing an issue with the streaming process, as I am getting an empty blank screen instead of the expected video stream.


Here's a brief overview of what I have done so far on the server-side :


Installed ffmpeg and made sure it is accessible in the environment.
Configured the server-side code for the streaming process.
However, despite these efforts, the stream is not working correctly, and I am unable to see the video stream on the client-side.


Server-side code :
app.js


const express = require('express');
const Stream = require('node-rtsp-stream');

const app = express();
const port = 4000;

// Start the RTSP stream
const stream = new Stream({
 name: 'rtsp_server_name',
 streamUrl: 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4',
 wsPort: 3000,
 ffmpegOptions: {
 '-stats': '', // an option with no necessary value uses a blank string
 '-r': 30, // options with required values specify the value after the key
 },
});

stream.on('data', data => {
 console.log(data);
});

app.get('/', (req, res) => {
 res.send('Hello World');
});

app.listen(port, () => {
 console.log(`Server running at http://localhost:${port}/`);
});



index.html



 
 <canvas></canvas>
 
 <h1>Test rtsp video</h1>
 <code class="echappe-js"><script type="text/javascript" src='http://stackoverflow.com/feeds/tag/js/jsmpeg.min.js'></script>

<script type="text/javascript">&#xA; player = new JSMpeg.Player(&#x27;ws://localhost:3000&#x27;, {&#xA; canvas: document.getElementById(&#x27;canvas&#x27;), // Canvas should be a canvas DOM element&#xA; });&#xA; </script>




I got no console error when I open index.html but only get blank black screen



-
I need to create a streaming app Where videos store in aws S3
27 juillet 2023, par abuzar zaidiI need to create a video streaming app. where my videos will store in S3 and the video will stream from the backend. Right now I am trying to use ffmpeg in the backend but it does not work properly.


what am I doing wrong in this code ? And if ffmpeg not support streaming video that store in aws s3 please suggest other options.


Backend


const express = require('express');
const aws = require('aws-sdk');
const ffmpeg = require('fluent-ffmpeg');
const cors = require('cors'); 
const app = express();

// Set up AWS credentials
aws.config.update({
accessKeyId: '#######################',
secretAccessKey: '###############',
region: '###############3',
});

const s3 = new aws.S3();
app.use(cors());

app.get('/stream', (req, res) => {
const bucketName = '#######';
const key = '##############'; // Replace with the key/path of the video file in the S3 bucket
const params = { Bucket: bucketName, Key: key };
const videoStream = s3.getObject(params).createReadStream();

// Transcode to HLS format
 const hlsStream = ffmpeg(videoStream)
.format('hls')
.outputOptions([
 '-hls_time 10',
 '-hls_list_size 0',
 '-hls_segment_filename segments/segment%d.ts',
 ])
.pipe(res);

// Transcode to DASH format and pipe the output to the response
ffmpeg(videoStream)
.format('dash')
.outputOptions([
 '-init_seg_name init-stream$RepresentationID$.mp4',
 '-media_seg_name chunk-stream$RepresentationID$-$Number%05d$.mp4',
 ])
.output(res)
.run();
});

const port = 5000;
app.listen(port, () => {
console.log(`Server running on http://localhost:${port}`);
});



Frontend


import React from 'react';

 const App = () => {
 const videoUrl = 'http://localhost:3000/api/playlist/runPlaylist/6c3e7af45a3b8a5caf2fef17a42ef9a0'; // Replace with your backend URL
Please list down solution or option i can use here
 const videoUrl = 'http://localhost:5000/stream';
 return (
 <div>
 <h1>Video Streaming Example</h1>
 <video controls="controls">
 <source src="{videoUrl}" type="video/mp4"></source>
 Your browser does not support the video tag.
 </video>
 </div>
 );
 };

 export default App;



-
How to duplicate frames if appsrc is pushing too slow to keep frame rate up ?
18 juillet 2023, par JanI am using Java with GStreamer wrapped by OpenCV. The application does the following :


- 

-
One GStreamer pipeline, that receives frames from an IP Camera (RTSP stream with 30fps) and outputs OpenCV Mats

"rtspsrc location=rtsp://localhost:8554/looping-sample latency=500 protocols=udp buffer-mode=auto ! rtph264depay ! h264parse ! avdec_h264 max-threads=2 ! videoconvert ! video/x-raw,format=BGR ! appsink max-buffers=0 drop=true sync=false"


-
On those Mats, deep learning models infer and draw stuff on it (This might be slow, like 100ms or sth)


-
Another GStreamer pipeline wrapped by OpenCV at the 30fps (extracted by the RTSP stream), that receives those Mats and publishes an RTMP stream for a MediaServer

"appsrc ! videoconvert ! nvh264enc bitrate=3000 ! h264parse ! flvmux ! rtmpsink location=test"










Now, the problem is, that the OpenCV VideoWriter is configured to be 30fps but the appsrc is only pushing at e.g. 7fps, so the RTMP stream will not be classified as valid by the MediaServer.
Previously, I used OpenCV and FFFMPEG and the default VideoWriter just duplicated the last frame to keep up the pre-defined framerate, so the stream is laggy but works.


How can I achieve this with a GStreamer pipeline ?


TLDR : The OpenCV VideoWriter is configured to be 30fps but appsrc is only pushing with 7-10fps, how can I adaptively duplicate frames to keep the 30fps in the RTMP stream sink ?


I tried stuff like adding "appsrc ! videorate ..." to the pipeline, so that videorate keeps up the framerate, but that did not work


-