Recherche avancée

Médias (1)

Mot : - Tags -/book

Autres articles (55)

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Creating farms of unique websites

    13 avril 2011, par

    MediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
    This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)

Sur d’autres sites (9696)

  • Auto delete .ts and .m3u8 files once client receives all .ts files

    11 mars 2019, par Abhishek Mehandiratta

    So I created an express server that gets an mp3 file (which is stored locally right now, but will be taken from mongo db later) and uses ffmpeg to make .m3u8 and .ts files. The files are successfully sent to the client and there are no errors while playing it on the client. I used hls.js to play these files in Chrome. But the server still has those files stored locally. Is there any way the server can know when to delete these files that it stored locally ? There are a lot of files generated by ffmpeg so I can’t just let them stay there forever.

    I used the ffmpeg part of code from hls-server github repo.

    my server file

    index.js

    // just used to run ffmpeg for conversion
    var command = ffmpeg('inp.mp3')
     .on('start', function (commandLine) {
       console.log('command', commandLine);
     }).addOptions([
       '-c:a aac',
       '-b:a 64k',
       '-vn',
       '-hls_list_size 0',
       '-segment_time 10',
     ]).output('files\\output.m3u8');

    var express = require('express');
    var app = express();
    // express middleware to serve individual .ts and .m3u8 files when requested
    app.use(express.static('./files/'));

    app.get('/', function (req, res) {
     command.on('end', function () {
       console.log('done');
       res.write(`
       <code class="echappe-js">&lt;script src=&quot;https://cdn.jsdelivr.net/hls.js/latest/hls.min.js&quot;&gt;&lt;/script&gt;
    &lt;script&gt;<br />
         function onLevelLoaded (event, data) {<br />
           var level_duration = data.details.totalduration;<br />
           console.log(level_duration, data);<br />
         }<br />
         if(Hls.isSupported()) {<br />
           var audio = new Audio();<br />
           var hls = new Hls();<br />
           // requesting files from here<br />
           hls.loadSource('http://localhost:8000/output.m3u8');<br />
           hls.attachMedia(audio);<br />
           hls.on(Hls.Events.LEVEL_LOADED, onLevelLoaded);<br />
           hls.on(Hls.Events.FRAG_BUFFERED, (e, d) =&gt; {<br />
             console.log(e, d);<br />
           });<br />
         }<br />
       &lt;/script&gt;

    `) ;
    res.end() ;
    }).run() ;
    }) ;

    app.listen(8000) ;

  • Socket.io client in js and server in Socket.io go doesn't send connected messege and data

    24 mars 2023, par OmriHalifa

    I am using ffmpeg and socket.io and I have some issues. I'm trying to send a connection request to a server written in Go through React, but I'm unable to connect to it. I tried adding the events in useEffect and it's still not working, what should I do ? i attaching my code in js and in go :&#xA;main.go

    &#xA;

    package main&#xA;&#xA;import (&#xA;    "log"&#xA;&#xA;    "github.com/gin-gonic/gin"&#xA;&#xA;    socketio "github.com/googollee/go-socket.io"&#xA;)&#xA;&#xA;func main() {&#xA;    router := gin.New()&#xA;&#xA;    server := socketio.NewServer(nil)&#xA;&#xA;    server.OnConnect("/", func(s socketio.Conn) error {&#xA;        s.SetContext("")&#xA;        log.Println("connected:", s.ID())&#xA;        return nil&#xA;    })&#xA;&#xA;    server.OnEvent("/", "notice", func(s socketio.Conn, msg string) {&#xA;        log.Println("notice:", msg)&#xA;        s.Emit("reply", "have "&#x2B;msg)&#xA;    })&#xA;&#xA;    server.OnEvent("/", "transcoded-video", func(s socketio.Conn, data string) {&#xA;        log.Println("transcoded-video:", data)&#xA;    })&#xA;&#xA;    server.OnEvent("/", "bye", func(s socketio.Conn) string {&#xA;        last := s.Context().(string)&#xA;        s.Emit("bye", last)&#xA;        s.Close()&#xA;        return last&#xA;    })&#xA;&#xA;    server.OnError("/", func(s socketio.Conn, e error) {&#xA;        log.Println("meet error:", e)&#xA;    })&#xA;&#xA;    server.OnDisconnect("/", func(s socketio.Conn, reason string) {&#xA;        log.Println("closed", reason)&#xA;    })&#xA;&#xA;    go func() {&#xA;        if err := server.Serve(); err != nil {&#xA;            log.Fatalf("socketio listen error: %s\n", err)&#xA;        }&#xA;    }()&#xA;    defer server.Close()&#xA;&#xA;    if err := router.Run(":8000"); err != nil {&#xA;        log.Fatal("failed run app: ", err)&#xA;    }&#xA;}&#xA;&#xA;

    &#xA;

    App.js

    &#xA;

    import &#x27;./App.css&#x27;;&#xA;import { useEffect } from &#x27;react&#x27;;&#xA;import { createFFmpeg, fetchFile } from &#x27;@ffmpeg/ffmpeg&#x27;;&#xA;import { io } from &#x27;socket.io-client&#x27;; &#xA;&#xA;function App() {&#xA;  const socket = io("http://localhost:8000",function() {&#xA;    // Send a message to the server when the client is connected&#xA;    socket.emit(&#x27;clientConnected&#x27;, &#x27;Client has connected to the server!&#x27;);&#xA;  })&#xA;&#xA;  const ffmpegWorker = createFFmpeg({&#xA;    log: true&#xA;  })&#xA;&#xA;  // Initialize FFmpeg when the component is mounted&#xA;  async function initFFmpeg() {&#xA;    await ffmpegWorker.load();&#xA;  }&#xA;&#xA;  async function transcode(webcamData) {&#xA;    const name = &#x27;record.webm&#x27;;&#xA;    await ffmpegWorker.FS(&#x27;writeFile&#x27;, name, await fetchFile(webcamData));&#xA;    await ffmpegWorker.run(&#x27;-i&#x27;, name, &#x27;-preset&#x27;, &#x27;ultrafast&#x27;, &#x27;-threads&#x27;, &#x27;4&#x27;, &#x27;output.mp4&#x27;);&#xA;    const data = ffmpegWorker.FS(&#x27;readFile&#x27;, &#x27;output.mp4&#x27;);&#xA;    &#xA;    // Set the source of the output video element to the transcoded video data&#xA;    const video = document.getElementById(&#x27;output-video&#x27;);&#xA;    video.src = URL.createObjectURL(new Blob([data.buffer], { type: &#x27;video/mp4&#x27; }));&#xA;    &#xA;    // Remove the output.mp4 file from the FFmpeg virtual file system&#xA;    ffmpegWorker.FS(&#x27;unlink&#x27;, &#x27;output.mp4&#x27;);&#xA;    &#xA;    // Emit a "transcoded-video" event to the server with the transcoded video data&#xA;    socket.emit("transcoded-video", data.buffer)&#xA;  }&#xA;  &#xA;  &#xA;&#xA;  let mediaRecorder;&#xA;  let chunks = [];&#xA;  &#xA;  // Request access to the user&#x27;s camera and microphone and start recording&#xA;  function requestMedia() {&#xA;    const webcam = document.getElementById(&#x27;webcam&#x27;);&#xA;    navigator.mediaDevices.getUserMedia({ video: true, audio: true })&#xA;    .then(async (stream) => {&#xA;      webcam.srcObject = stream;&#xA;      await webcam.play();&#xA;&#xA;      // Set up a MediaRecorder instance to record the video and audio&#xA;      mediaRecorder = new MediaRecorder(stream);&#xA;&#xA;      // Add the recorded data to the chunks array&#xA;      mediaRecorder.ondataavailable = async (e) => {&#xA;        chunks.push(e.data);&#xA;      }&#xA;&#xA;      // Transcode the recorded video data after the MediaRecorder stops&#xA;      mediaRecorder.onstop = async () => {&#xA;        await transcode(new Uint8Array(await (new Blob(chunks)).arrayBuffer()));&#xA;&#xA;        // Clear the chunks array after transcoding&#xA;        chunks = [];&#xA;&#xA;        // Start the MediaRecorder again after a 0 millisecond delay&#xA;        setTimeout(() => {&#xA;          mediaRecorder.start();&#xA;          &#xA;          // Stop the MediaRecorder after 3 seconds&#xA;          setTimeout(() => {&#xA;            mediaRecorder.stop();&#xA;          }, 500);&#xA;        }, 0);&#xA;      }&#xA;&#xA;      // Start the MediaRecorder&#xA;      mediaRecorder.start();&#xA;&#xA;      // Stop the MediaRecorder after 3 seconds&#xA;      setTimeout(() => {&#xA;        mediaRecorder.stop();&#xA;      }, 700);&#xA;    })&#xA;  }&#xA;  &#xA;  useEffect(() => {&#xA;    // Set up event listeners for the socket connection&#xA;    socket.on(&#x27;/&#x27;, function(){&#xA;      // Log a message when the client is connected to the server&#xA;      console.log("Connected to server!"); &#xA;    });&#xA;&#xA;    socket.on(&#x27;transcoded-video&#x27;, function(data){&#xA;      // Log the received data for debugging purposes&#xA;      console.log("Received transcoded video data:", data); &#xA;    });&#xA;&#xA;    socket.on(&#x27;notice&#x27;, function(data){&#xA;      // Emit a "notice" event back to the server to acknowledge the received data&#xA;      socket.emit("notice", "ping server!");&#xA;    });&#xA;&#xA;    socket.on(&#x27;bye&#x27;, function(data){&#xA;      // Log the received data and disconnect from the server&#xA;      console.log("Server sent:", data); &#xA;      socket.disconnect();&#xA;    });&#xA;&#xA;    socket.on(&#x27;disconnect&#x27;, function(){&#xA;      // Log a message when the client is disconnected from the server&#xA;      console.log("Disconnected from server!"); &#xA;    });&#xA;  }, [])&#xA;&#xA;  return (&#xA;    <div classname="App">&#xA;      <div>&#xA;          <video muted="{true}"></video>&#xA;          <video autoplay="autoplay"></video>&#xA;      </div>&#xA;      <button>start streaming</button>&#xA;    </div>&#xA;  );&#xA;}&#xA;&#xA;export default App;&#xA;

    &#xA;

    What can i do to fix it ? thank you !!

    &#xA;

  • NAL Type STAP-A and retrieve the sps and pps

    3 mars 2016, par H. BY

    I wrote a RTP server to receive the RTP packets which are sent by command ffmpeg -i test.mp4 rtp rtp ://ip:port (client) and the server could get the nal type 24 (STAP-A).
    And I want to use the server to retrieve the spa and pps from the first nal(type 24) instead of info from ffmpeg command.
    Is it possible SPS and PPS would be aggregated in one nal ?

    for example

    [RTP header][nal header(type 24)][nal1 header][nal1 size][nal1 payload][nal2 header][nal2 size][nal2 payload]...

    thanks