
Recherche avancée
Médias (10)
-
Demon Seed
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Demon seed (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
The four of us are dying (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Corona radiata (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Lights in the sky (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Head down (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
Autres articles (58)
-
Use, discuss, criticize
13 avril 2011, parTalk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
A discussion list is available for all exchanges between users. -
L’espace de configuration de MediaSPIP
29 novembre 2010, parL’espace de configuration de MediaSPIP est réservé aux administrateurs. Un lien de menu "administrer" est généralement affiché en haut de la page [1].
Il permet de configurer finement votre site.
La navigation de cet espace de configuration est divisé en trois parties : la configuration générale du site qui permet notamment de modifier : les informations principales concernant le site (...) -
Contribute to a better visual interface
13 avril 2011MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.
Sur d’autres sites (9302)
-
Connect a remote Ip camera as a Webrtc client
5 avril 2017, par idoshI have 2 cameras :
- An internal webcam embedded in my laptop.
- A remote IP camera that is connected to my laptop through Wifi (transmits TCP, raw H264 data - no container). I’m getting the stream using node.js.
My goal is to create a Webrtc network and connect the remote camera as another client.
I’m trying to figure out possible solutions :
- My naive thinking was that I would stream the remote camera payload to the browser. But as I came to understand the browser can’t handle the stream without a container. Fair enough. But I don’t understand why it does handle the video stream that arrives from my internal camera (from the navigator.getUserMedia() function). what’s the difference between the two streams ? why can’t I mimic the stream from the remote camera as the input ?
- To bypass this problem I thought about creating a virtual camera using Manycam (or Manycam like app). To accomplish that I need to convert my TCP stream into an RTP stream (in order to feed Manycam). Though I did saw some info in ffmpeg command line, I couldn’t find info in their node.js api package "fluent-ffmpeg". Is it possible to do it using fluent-ffmpeg ? Or only using the command line tool ? Would it require another rtp server in the middle such as this one ?.
- Third option I read about is using node.js as a client in Webrtc. I saw it was implemented in "simple-peer". I tried it out using their co-work with socket.io (socket.io-p2p). unfortunately I couldn’t get it to work / : When i’m trying to create a socket/peer in the server - it throws errors, as it expect options that are only available on the client-side (like window, location, etc.). Am I doing something wrong ? maybe there is more suitable framework for this matter ?
- Forth option is to use a streaming server in the middle such as Kurnto. From my understanding it receives rtp as an input and transmits it as a webrtc client. I feel it’s the most excessive option, but maybe it’s not so bad (I have to admit that I haven’t investigate this option yet).
any thoughts ?
thanks !
-
FFMPEG - How to wait until all blobs are written before finishing ffmpeg process when getting them from media recorder API
7 novembre 2020, par Caio NakaiI'm using media recorder API to record a video from user's screen and sending the blobs through web socket to a nodejs server. The nodejs server is using the blobs to create a webm video file, the video is being created fine but with a delay, after the user clicks on the stop recording button it stops the media recorder api, however the server didn't finish the processing of all blobs (at least that's what I think it's happening) and then when I check the video file generated the last few seconds of the recording are missing I wonder if there's an way to solve this. Any help is appreciated :)


This is the front-end code that sends the blobs to the nodejs server


const startScreenCapture = async () => {
 try {
 let screenStream;
 videoElem = document.getElementById("myscreen");
 screenStream = await navigator.mediaDevices.getDisplayMedia(
 displayMediaOptions
 );

 const recorderOptions = {
 mimeType: "video/webm;codecs=vp9",
 videoBitsPerSecond: 3 * 1024 * 1024,
 };

 screenMediaRecorder = new MediaRecorder(screenStream, recorderOptions);
 screenMediaRecorder.start(1); // 1000 - the number of milliseconds to record into each Blob
 screenMediaRecorder.ondataavailable = (event) => {
 console.debug("Got blob data:", event.data);
 console.log("Camera stream: ", event.data);
 if (event.data && event.data.size > 0) {
 socket.emit("screen_stream", event.data);
 }
 };

 videoElem.srcObject = screenStream;
 // console.log("Screen stream", screenStream);
 // socket.emit("screen_stream", screenStream);
 } catch (err) {
 console.error("Error: " + err);
 }
};

const stopCapture = (evt) => {
 let tracks = videoElem.srcObject.getTracks();

 tracks.forEach((track) => track.stop());
 videoElem.srcObject = null;
 screenMediaRecorder.stop();
 socket.emit("stop_screen");
 socket.close();
};



This is the nodejs back-end that handle the blobs and generates the videofile


const ffmpeg2 = child_process.spawn("ffmpeg", [
 "-i",
 "-",
 "-c:v",
 "copy",
 "-c:a",
 "copy",
 "screen.webm",
 ]);


 socket.on("screen_stream", (msg) => {
 console.log("Writing screen blob! ");
 ffmpeg2.stdin.write(msg);
 });

 socket.on("stop_screen", () => {
 console.log("Stop recording..");
 });



-
Updated(reproducible) - Gaps when recording using MediaRecorder API(audio/webm opus)
25 mars 2019, par Jack Juiceson----- UPDATE HAS BEEN ADDED BELOW -----
I have an issue with MediaRecorder API (https://www.w3.org/TR/mediastream-recording/#mediarecorder-api).
I’m using it to record the speech from the web page(Chrome was used in this case) and save it as chunks.
I need to be able to play it while and after it is recorded, so it’s important to keep those chunks.Here is the code which is recording data :
navigator.mediaDevices.getUserMedia({ audio: true, video: false }).then(function(stream) {
recorder = new MediaRecorder(stream, { mimeType: 'audio/webm; codecs="opus"' })
recorder.ondataavailable = function(e) {
// Read blob from `e.data`, decode64 and send to sever;
}
recorder.start(1000)
})The issue is that the WebM file which I get when I concatenate all the parts is corrupted(rarely) !. I can play it as WebM, but when I try to convert it(ffmpeg) to something else, it gives me a file with shifted timings.
For example. I’m trying to convert a file which has duration
00:36:27.78
to wav, but I get a file with duration00:36:26.04
, which is 1.74s less.At the beginning of file - the audio is the same, but after about 10min WebM file plays with a small delay.
After some research, I found out that it also does not play correctly with the browser’s MediaSource API, which I use for playing the chunks. I tried 2 ways of playing those chunks :
In a case when I just merge all the parts into a single blob - it works fine.
In case when I add them via the sourceBuffer object, it has some gaps (i can see them by inspectingbuffered
property).
697.196 - 697.528 ( 330ms)
996.198 - 996.754 ( 550ms)
1597.16 - 1597.531 ( 370ms)
1896.893 - 1897.183 ( 290ms)Those gaps are 1.55s in total and they are exactly in the places where the desync between wav & webm files start. Unfortunately, the file where it is reproducible cannot be shared because it’s customer’s private data and I was not able to reproduce such issue on different media yet.
What can be the cause for such an issue ?
----- UPDATE -----
I was able to reproduce the issue on https://jsfiddle.net/96uj34nf/4/In order to see the problem, click on the "Print buffer zones" button and it will display time ranges. You can see that there are two gaps :
0 - 136.349, 141.388 - 195.439, 197.57 - 198.589- 136.349 - 141.388
- 195.439 - 197.57
So, as you can see there are 5 and 2 second gaps. Would be happy if someone could shed some light on why it is happening or how to avoid this issue.
Thank you