Recherche avancée

Médias (1)

Mot : - Tags -/censure

Autres articles (36)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Submit enhancements and plugins

    13 avril 2011

    If you have developed a new extension to add one or more useful features to MediaSPIP, let us know and its integration into the core MedisSPIP functionality will be considered.
    You can use the development discussion list to request for help with creating a plugin. As MediaSPIP is based on SPIP - or you can use the SPIP discussion list SPIP-Zone.

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les 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 (4847)

  • react vite ffmpeg how to resolve worker module returning 404

    27 août, par pmkob

    I have imported the js, wasm, and worker modules into my project
https://unpkg.com/@ffmpeg/core@0.12.6/dist/esm/ffmpeg-core.js

    


    https://unpkg.com/@ffmpeg/core@0.12.6/dist/esm/ffmpeg-core.wasm
https://unpkg.com/@ffmpeg/core-mt@0.12.2/dist/esm/ffmpeg-core.worker.js

    


    and upon calling the function that the load is in, i get the error in the worker module
Request URL :
http://localhost:3000/node_modules/.vite/deps/worker.js?worker_file&type=module Status Code :
404 Not Found
Referrer Policy :
strict-origin-when-cross-origin

    


    In order to resolve this issue i have added these to my config and looked at similar issues with different threads https://github.com/ffmpegwasm/ffmpeg.wasm/issues/532
but with no luck. The load also never completes.

    


    CONFIG:
export default defineConfig(({ mode }) => ({
//other config stuff
  plugins: [react()],
  optimizeDeps: {
    exclude: ["@ffmpeg/ffmpeg", "@ffmpeg/util"]
  },
  server: {
    headers: {
      "Cross-Origin-Opener-Policy": "same-origin",
      "Cross-Origin-Embedder-Policy": "require-corp"
    }
  }
}));

FILE:
import { FFmpeg } from "@ffmpeg/ffmpeg";
import { fetchFile, toBlobURL } from "@ffmpeg/util";
 const ffmpeg = new FFmpeg();
    await ffmpeg.load({
      coreURL: await toBlobURL(
        `${importedURL}/ffmpeg/ffmpeg-core.js`,
        "text/javascript"
      ),
      wasmURL: await toBlobURL(
        `${importedURL}/ffmpeg/ffmpeg-core.wasm`,
        "application/wasm"
      ),
      workerURL: await toBlobURL(
        `${importedURL}/ffmpeg/ffmpeg-core.worker.js`,
        "text/javascript"
      )
    });


    


  • How to broadcast a video stream without reloading the page ?

    16 novembre 2024, par promo 69

    I created a Node.js server to :

    


      

    1. Receive images in udp and transform them into video and
    2. 


    3. Display it on a website
    4. 


    5. I tried but I don't understand how to broadcast the video live without having to reload the page
    6. 


    


    Node.js server code :

    


    const express = require('express');
const dgram = require('dgram');
const fs = require('fs');
const ffmpeg = require('fluent-ffmpeg');
const path = require('path');
const WebSocket = require('ws');

const app = express();
const httpPort = 3000;

const imageDir = path.join(__dirname, 'images');
if (!fs.existsSync(imageDir)) {
    fs.mkdirSync(imageDir);
}

let imageCount = 0;

const udpPort = 15002;
const udpHost = '127.0.0.1';
const server = dgram.createSocket('udp4');

const wss = new WebSocket.Server({ noServer: true });


const createVideo = () => {
    const outputVideo = path.join(__dirname, 'output_video.mp4');

    ffmpeg()
        .input(path.join(imageDir, '%d.jpg'))
        .inputOptions('-framerate 30')
        .output(outputVideo)
        .outputOptions('-c:v libx264')
        .on('end', () => {
            console.log('Vidéo créée avec succès !');

            wss.clients.forEach(client => {
                if (client.readyState === WebSocket.OPEN) {
                    client.send('new-video');
                }
            });
        })
        .on('error', (err) => {
            console.log('Erreur lors de la création de la vidéo:', err);
        })
        .run();
};


app.get('/feed-video', (req, res) => {
    const videoPath = path.join(__dirname, 'output_video.mp4');
    res.sendFile(videoPath);
});

server.on('message', (msg, rinfo) => {
    console.log(`Reçu message de ${rinfo.address}:${rinfo.port}`);

    const imageFilePath = path.join(imageDir, `${imageCount}.jpg`);
    fs.writeFileSync(imageFilePath, msg);

    console.log(`Image ${imageCount}.jpg reçue et sauvegardée`);


    imageCount++;


    if (imageCount > 100) {
        createVideo();
        imageCount = 0;
    }
});


server.on('listening', () => {
    const address = server.address();
    console.log(`Serveur UDP en écoute sur ${address.address}:${address.port}`);
});


app.server = app.listen(httpPort, () => {
    console.log(`Serveur HTTP et WebSocket démarré sur http://localhost:${httpPort}`);
});

app.server.on('upgrade', (request, socket, head) => {
    wss.handleUpgrade(request, socket, head, (ws) => {
        wss.emit('connection', ws, request);
    });
});


server.bind(udpPort, udpHost);



    


    The html page :

    


    &#xA;&#xA;&#xA;    &#xA;    &#xA;    &#xA;    &#xA;&#xA;&#xA;<h1>Drone Video Feed</h1>&#xA;<video controls="controls" autoplay="autoplay"></video>&#xA;&#xA;<code class="echappe-js">&lt;script&gt;&amp;#xA;    const video = document.getElementById(&amp;#x27;video&amp;#x27;);&amp;#xA;    const ws = new WebSocket(&amp;#x27;ws://localhost:3000&amp;#x27;);&amp;#xA;&amp;#xA;    ws.onmessage = (event) =&gt; {&amp;#xA;        const blob = new Blob([event.data], { type: &amp;#x27;video/mp4&amp;#x27; });&amp;#xA;        video.src = URL.createObjectURL(blob);&amp;#xA;        video.play();&amp;#xA;    };&amp;#xA;&lt;/script&gt;&#xA;&#xA;&#xA;&#xA;

    &#xA;

    I tried with websocket but I didn't succeed.&#xA;The video is correctly created and when I reload the page the new video is played by the player.

    &#xA;

    However I would have been able to see the live stream without having to reload my page all the time.

    &#xA;

  • The ffmpeg output binary stream front-end uses WebSocket to accept and cannot be played [closed]

    17 novembre 2024, par KIMEOOK

    Server push nodejs

    &#xA;

    Use ws service to pass to the front end

    &#xA;

          ffmpegs = spawn(&#x27;ffmpeg&#x27;, [&#xA;        &#x27;-f&#x27;, &#x27;gdigrab&#x27;,  // 这是 Windows 下用于捕获屏幕的输入格式&#xA;        &#x27;-framerate&#x27;, &#x27;60&#x27;,  // 捕获帧率&#xA;        &#x27;-i&#x27;, &#x27;desktop&#x27;,  // 捕获桌面(即屏幕)&#xA;        &#x27;-c:v&#x27;, &#x27;vp8&#x27;,  // 视频编码格式&#xA;        &#x27;-f&#x27;, &#x27;webm&#x27;,  // 设置输出为 mpegts 流&#xA;        &#x27;-pix_fmt&#x27;, &#x27;yuv420p&#x27;,&#xA;        &#x27;pipe:1&#x27;,  // 输出到管道&#xA;      ]);&#xA;

    &#xA;

    enter image description here&#xA;enter image description here

    &#xA;

    Front-end rendering

    &#xA;

    &#xA;      let videoElement = document.getElementById(&#x27;screenVideo&#x27;);&#xA;&#xA;      let mediaSource = new MediaSource();&#xA;      videoElement.src = URL.createObjectURL(mediaSource);&#xA;&#xA;      mediaSource.addEventListener(&#x27;sourceopen&#x27;, () => {&#xA;&#xA;        let sourceBuffer = mediaSource.addSourceBuffer(&#x27;video/webm; codecs="vp8"&#x27;); &#xA;&#xA;        let ws = new WebSocket(`ws://${ip}:3000/?device=${encodeURIComponent(selectedDevice)}`);&#xA;&#xA;        ws.onmessage = (event) => {&#xA;          const data = new Uint8Array(event.data);&#xA;          if (!sourceBuffer.updating) {&#xA;            try {&#xA;              sourceBuffer.appendBuffer(data);&#xA;              console.log(&#x27;ok&#x27;)&#xA;            } catch (error) {&#xA;              console.error(&#x27;Error appending buffer:&#x27;, error);&#xA;            }&#xA;          } else {&#xA;            console.log(&#x27;SourceBuffer is busy&#x27;);&#xA;          }&#xA;        };&#xA;&#xA;        ws.onerror = (error) => {&#xA;          console.error(&#x27;WebSocket error:&#x27;, error);&#xA;        };&#xA;&#xA;        ws.onclose = () => {&#xA;          console.log(&#x27;WebSocket connection closed&#x27;);&#xA;        };&#xA;&#xA;        if (mediaSource.readyState === &#x27;open&#x27;) {&#xA;          videoElement.play().catch(err => {&#xA;            console.error(&#x27;Error attempting to play the video:&#x27;, err);&#xA;          });&#xA;        }&#xA;}&#xA;

    &#xA;

    The video keeps spinning in circles and cannot be played normally.

    &#xA;

    enter image description here

    &#xA;

    Unable to play normally. What's the problem ?

    &#xA;