Recherche avancée

Médias (3)

Mot : - Tags -/collection

Autres articles (70)

  • 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

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-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, par

    Cette 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 (10595)

  • TypeError : _ffmpeg_ffmpeg__WEBPACK_IMPORTED_MODULE_1__ is not a constructor

    10 novembre 2023, par Shubham
    import { useState, useRef } from "react";&#xA;&#xA;import \* as FFmpeg from "@ffmpeg/ffmpeg";&#xA;&#xA;const AudioRecorders = ({ onAudioRecorded }) =\> {&#xA;const \[permission, setPermission\] = useState(false);&#xA;const \[stream, setStream\] = useState(null);&#xA;const mimeType = "video/webm";&#xA;const mediaRecorder = useRef(null);&#xA;const \[recordingStatus, setRecordingStatus\] = useState("inactive");&#xA;const \[audioChunks, setAudioChunks\] = useState(\[\]);&#xA;const \[audio, setAudio\] = useState(null);&#xA;&#xA;const ffmpeg = useRef(null);&#xA;&#xA;const createFFmpeg = async ({ log = false }) =\> {&#xA;// here I am facing the error&#xA;const ffmpegInstance = new FFmpeg({ log });&#xA;await ffmpegInstance.load();&#xA;return ffmpegInstance;&#xA;};&#xA;&#xA;const convertWebmToWav = async (webmBlob) =\> {&#xA;if (!ffmpeg.current) {&#xA;ffmpeg.current = await createFFmpeg({ log: false });&#xA;}&#xA;&#xA;    const inputName = "input.webm";&#xA;    const outputName = "output.wav";&#xA;    &#xA;    ffmpeg.current.FS("writeFile", inputName, await webmBlob.arrayBuffer());&#xA;    await ffmpeg.current.run("-i", inputName, outputName);&#xA;    &#xA;    const outputData = ffmpeg.current.FS("readFile", outputName);&#xA;    const outputBlob = new Blob([outputData.buffer], { type: "audio/wav" });&#xA;    &#xA;    return outputBlob;&#xA;&#xA;};&#xA;&#xA;const getMicrophonePermission = async () =\> {&#xA;if ("MediaRecorder" in window) {&#xA;try {&#xA;const streamData = await navigator.mediaDevices.getUserMedia({&#xA;audio: true,&#xA;video: false,&#xA;});&#xA;setPermission(true);&#xA;setStream(streamData);&#xA;} catch (err) {&#xA;alert(err.message);&#xA;}&#xA;} else {&#xA;alert("The MediaRecorder API is not supported in your browser.");&#xA;}&#xA;};&#xA;&#xA;const startRecording = async () =\> {&#xA;setRecordingStatus("recording");&#xA;//create new Media recorder instance using the stream&#xA;const media = new MediaRecorder(stream, { type: mimeType });&#xA;//set the MediaRecorder instance to the mediaRecorder ref&#xA;mediaRecorder.current = media;&#xA;//invokes the start method to start the recording process&#xA;mediaRecorder.current.start();&#xA;let localAudioChunks = \[\];&#xA;mediaRecorder.current.ondataavailable = (event) =\> {&#xA;if (typeof event.data === "undefined") return;&#xA;if (event.data.size === 0) return;&#xA;localAudioChunks.push(event.data);&#xA;};&#xA;setAudioChunks(localAudioChunks);&#xA;};&#xA;&#xA;const stopRecording = () =\> {&#xA;setRecordingStatus("inactive");&#xA;//stops the recording instance&#xA;mediaRecorder.current.stop();&#xA;mediaRecorder.current.onstop = async () =\> {&#xA;//creates a blob file from the audiochunks data&#xA;const audioBlob = new Blob(audioChunks, { type: mimeType });&#xA;// creates a playable URL from the blob file.&#xA;const audioUrl = URL.createObjectURL(audioBlob);&#xA;// converts the WebM blob to a WAV blob.&#xA;const newBlob = await convertWebmToWav(audioBlob);&#xA;await onAudioRecorded(newBlob);&#xA;setAudio(audioUrl);&#xA;setAudioChunks(\[\]);&#xA;};&#xA;};&#xA;&#xA;return (&#xA;\&#xA;<h2>Audio Recorder</h2>&#xA;\&#xA;\<div classname="audio-controls">&#xA;{!permission ? (&#xA;\<button type="button">&#xA;Get Microphone&#xA;\&#xA;) : null}&#xA;{permission &amp;&amp; recordingStatus === "inactive" ? (&#xA;\<button type="button">&#xA;Start Recording&#xA;\&#xA;) : null}&#xA;{recordingStatus === "recording" ? (&#xA;\<button type="button">&#xA;Stop Recording&#xA;\&#xA;) : null}&#xA;{audio ? (&#xA;\<div classname="audio-container">&#xA;\<audio src="{audio}">\&#xA;<a>&#xA;Download Recording&#xA;</a>&#xA;\&#xA;) : null}&#xA;\&#xA;\&#xA;\&#xA;);&#xA;};&#xA;export default AudioRecorders;&#xA;&#xA;\`&#xA;&#xA;</audio></div></button></button></button></div>

    &#xA;

    ERROR&#xA;ffmpeg_ffmpeg__WEBPACK_IMPORTED_MODULE_1_ is not a constructor&#xA;TypeError : ffmpeg_ffmpeg__WEBPACK_IMPORTED_MODULE_1_ is not a constructor&#xA;at createFFmpeg (http://localhost:3000/main.48220156e0c620f1acd0.hot-update.js:41:28)&#xA;at convertWebmToWav (http://localhost:3000/main.48220156e0c620f1acd0.hot-update.js:49:30)&#xA;at mediaRecorder.current.onstop (http://localhost:3000/main.48220156e0c620f1acd0.hot-update.js:109:29)`

    &#xA;

    I am trying to record the voice in audio/wav formate but its recording in video/webm formate not because of \<const mimetype="video/webm">. Whatever the mimeType I am giving its showing the file type video/webm on "https://www.checkfiletype.com/". I am recording it for the speech_recognition used in flask backend which is accepting only audio/wav.&#xA;So in frontend I have written a function "convertWebmToWav " which is giving me the error :&#xA;Uncaught runtime errors:&#xA;&#xA;</const>

    &#xA;

  • How to capture desktop using ffmpeg ? getting error when stop recording : System.InvalidOperationException : 'StandardIn has not been redirected.'

    4 octobre 2023, par SharonHemed

    I want it to record the entire desktop then when stopping to save the file to the hard drive. and to hide without the console window of the ffmpeg.

    &#xA;

    but getting this exception error. and i'm setting the RedirectStandardInput to true.&#xA;so i'm not sure why it's showing this error.

    &#xA;

    The exception error is on the line

    &#xA;

    process.StandardInput.BaseStream.Write(qKey, 0, 1);&#xA;

    &#xA;

    The full code

    &#xA;

    using System;&#xA;using System.Collections.Generic;&#xA;using System.ComponentModel;&#xA;using System.Data;&#xA;using System.Diagnostics;&#xA;using System.Drawing;&#xA;using System.IO;&#xA;using System.Linq;&#xA;using System.Text;&#xA;using System.Threading.Tasks;&#xA;using System.Windows.Forms;&#xA;using NAudio.CoreAudioApi;&#xA;using NAudio.Wave;&#xA;&#xA;namespace Desktop_Recorder&#xA;{&#xA;    public partial class Form1 : Form&#xA;    {&#xA;        Process process;&#xA;&#xA;        public Form1()&#xA;        {&#xA;            InitializeComponent();&#xA;&#xA;            process = new Process();&#xA;            Start(@"d:\test.mp4", 30);&#xA;        }&#xA;&#xA;        private void Form1_Load(object sender, EventArgs e)&#xA;        {&#xA;            &#xA;        }&#xA;&#xA;        private void Form1_FormClosing(object sender, FormClosingEventArgs e)&#xA;        {&#xA;            Stop();&#xA;        }&#xA;&#xA;        public void Start(string FileName, int Framerate)&#xA;        {&#xA;            process.StartInfo.FileName = @"d:\ffmpeg\ffmpeg.exe"; // Change the directory where ffmpeg.exe is.  &#xA;            process.EnableRaisingEvents = false;&#xA;            process.StartInfo.WorkingDirectory = @"D:\"; // The output directory  &#xA;            process.StartInfo.Arguments = @"-y -f gdigrab -framerate " &#x2B; Framerate &#x2B;&#xA;                " -i desktop -preset ultrafast -pix_fmt yuv420p " &#x2B; FileName;&#xA;            process.StartInfo.UseShellExecute = false;&#xA;            process.StartInfo.CreateNoWindow = false;&#xA;            process.StartInfo.RedirectStandardInput = true; //Redirect stdin&#xA;            process.StartInfo.RedirectStandardError = true;&#xA;            process.Start();&#xA;            System.Threading.Thread.Sleep(3000);  //Wait 3 seconds (for testing).&#xA;            Stop();&#xA;        }&#xA;&#xA;        public void Stop()&#xA;        {&#xA;            byte[] qKey = Encoding.GetEncoding("gbk").GetBytes("q"); //Get encoding of &#x27;q&#x27; key&#xA;            process.StandardInput.BaseStream.Write(qKey, 0, 1); //Write &#x27;q&#x27; key to stdin of FFmpeg sub-processs&#xA;            process.StandardInput.BaseStream.Flush(); //Flush stdin (just in case).&#xA;            process.Close();&#xA;        }&#xA;&#xA;&#xA;        private void btnStartRecording_Click(object sender, EventArgs e)&#xA;        {&#xA;&#xA;        }&#xA;    }&#xA;}&#xA;

    &#xA;

  • How to live video stream using node API (Read file with chunk logic)

    28 septembre 2023, par Mukesh Singh Thakur

    I want to make a live video streaming API and send the video buffer chunk data to an HTML.&#xA;I am using rtsp URL.&#xA;The chunk logic does not work. The video only plays for 5 seconds then stops.

    &#xA;

    index.js file

    &#xA;

    const express = require(&#x27;express&#x27;);&#xA;const ffmpeg = require(&#x27;fluent-ffmpeg&#x27;);&#xA;const fs = require(&#x27;fs&#x27;);&#xA;const path = require(&#x27;path&#x27;);&#xA;&#xA;const app = express();&#xA;const port = 3000;&#xA;&#xA;app.get(&#x27;/&#x27;, (req, res) => {&#xA;  res.sendFile(__dirname &#x2B; "/index.html");&#xA;});&#xA;&#xA;const rtspUrl = &#x27;rtsp://zephyr.rtsp.stream/movie?streamKey=64fd08123635440e7adc17ba31de2036&#x27;;&#xA;const chunkDuration = 5; // Duration of each chunk in seconds&#xA;&#xA;&#xA;app.get(&#x27;/video&#x27;, (req, res) => {&#xA;  const outputDirectory = path.join(__dirname, &#x27;chunks&#x27;);&#xA;  if (!fs.existsSync(outputDirectory)) {&#xA;    fs.mkdirSync(outputDirectory);&#xA;  }&#xA;&#xA;  const startTime = new Date().getTime();&#xA;  const outputFileName = `chunk_${startTime}.mp4`;&#xA;  const outputFilePath = path.join(outputDirectory, outputFileName);&#xA;&#xA;  const command = ffmpeg(rtspUrl)&#xA;    .inputFormat(&#x27;rtsp&#x27;)&#xA;    // .inputOptions([&#x27;-rtsp_transport tcp&#x27;])&#xA;    .videoCodec(&#x27;copy&#x27;)&#xA;    .output(outputFilePath)&#xA;    .duration(chunkDuration)&#xA;    .on(&#x27;start&#x27;, () => {&#xA;      console.log(`start ${outputFileName}`);&#xA;    })&#xA;    .on(&#x27;end&#x27;, () => {&#xA;      console.log(`Chunk ${outputFileName} saved`);&#xA;      res.setHeader(&#x27;Content-Type&#x27;, &#x27;video/mp4&#x27;);&#xA;      res.sendFile(outputFilePath, (err) => {&#xA;        if (err) {&#xA;          console.error(&#x27;Error sending file:&#x27;, err);&#xA;        } else {&#xA;          fs.unlinkSync(outputFilePath); // Delete the chunk after it&#x27;s sent&#xA;        }&#xA;      });&#xA;    })&#xA;    .on(&#x27;error&#x27;, (error) => {&#xA;      console.error(&#x27;Error: &#x27;, error);&#xA;    });&#xA;&#xA;  command.run();&#xA;});&#xA;&#xA;app.listen(port, () => {&#xA;  console.log(`API server is running on port ${port}`);&#xA;});&#xA;

    &#xA;

    index.html

    &#xA;

    &#xA;&#xA;&#xA;&#xA;  &#xA;  &#xA;  &#xA;  &#xA;&#xA;&#xA;&#xA;  <video width="50%" controls="controls" autoplay="autoplay">&#xA;    <source src="/video" type="video/mp4"></source>&#xA;    Your browser does not support the video tag.&#xA;  </video>&#xA;&#xA;&#xA;&#xA;

    &#xA;

    package.json

    &#xA;

    {&#xA;.....&#xA;  "scripts": {&#xA;    "test": "echo \"Error: no test specified\" &amp;&amp; exit 1",&#xA;    "start": "nodemon index.js"&#xA;  },&#xA;.....&#xA;}&#xA;

    &#xA;