Recherche avancée

Médias (91)

Autres articles (67)

  • Use, discuss, criticize

    13 avril 2011, par

    Talk 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.

  • Gestion des droits de création et d’édition des objets

    8 février 2011, par

    Par défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

Sur d’autres sites (11105)

  • dashenc : allow assigning all streams of a media type to an AdaptationSet

    29 janvier 2017, par Peter Große
    dashenc : allow assigning all streams of a media type to an AdaptationSet
    

    Using the characters "v" or "a" instead of stream index numbers for assigning
    streams in the adaption_set option, all streams matching that given type will
    be added to the AdaptationSet.

    Signed-off-by : Peter Große <pegro@friiks.de>
    Signed-off-by : Martin Storsjö <martin@martin.st>

    • [DBH] libavformat/dashenc.c
  • ffprobe : update entry index after printing packet/media type

    21 avril 2022, par Stefano Sabatini
    ffprobe : update entry index after printing packet/media type
    

    Fix JSON output in case a frame or packet section contains a nested section.

    Fix trac issue http://trac.ffmpeg.org/ticket/8680.

    Signed-off-by : Marton Balint <cus@passwd.hu>

    • [DH] fftools/ffprobe.c
  • How to make media recorder api individual chunks playable by it self

    10 août 2024, par tedGuy

    I'm trying to send individual chunks to the server instead of sending the whole chunks at once. This way, I have Ffmpeg on my Rails server to convert these chunks to HLS and upload them to S3 to stream the video instantly. However, I've encountered an issue the Media Recorder only provides playable chunks for the first segment after that, they are not playable and need to be concatenated to play.

    &#xA;

    To avoid this, I've taken a different approach where I start a new Media Recorder every 3 seconds so that I get a playable chunk every time. However, this approach has its issues the video glitches a bit due to the delay when I stop and start a new Media Recorder. Is there a way to achieve this with ease ? This is my current status. please help !

    &#xA;

    const startVideoRecording = async (&#xA;    screenStream: MediaStream,&#xA;    audioStream: MediaStream&#xA;  ) => {&#xA;    setStartingRecording(true);&#xA;&#xA;    try {&#xA;      const res = await getVideoId();&#xA;      videoId.current = res;&#xA;    } catch (error) {&#xA;      console.log(error);&#xA;      return;&#xA;    }&#xA;&#xA;    const outputStream = new MediaStream();&#xA;    outputStream.addTrack(screenStream.getVideoTracks()[0]);&#xA;    outputStream.addTrack(audioStream.getAudioTracks()[0]); // Add audio track&#xA;&#xA;    const mimeTypes = [&#xA;      "video/webm;codecs=h264",&#xA;      "video/webm;codecs=vp9",&#xA;      "video/webm;codecs=vp8",&#xA;      "video/webm",&#xA;      "video/mp4",&#xA;    ];&#xA;&#xA;    let selectedMimeType = "";&#xA;    for (const mimeType of mimeTypes) {&#xA;      if (MediaRecorder.isTypeSupported(mimeType)) {&#xA;        selectedMimeType = mimeType;&#xA;        break;&#xA;      }&#xA;    }&#xA;&#xA;    if (!selectedMimeType) {&#xA;      console.error("No supported mime type found");&#xA;      return;&#xA;    }&#xA;&#xA;    const videoRecorderOptions = {&#xA;      mimeType: selectedMimeType,&#xA;    };&#xA;&#xA;    let chunkIndex = 0;&#xA;&#xA;    const startNewRecording = () => {&#xA;      // Stop the current recorder if it&#x27;s running&#xA;      if (&#xA;        videoRecorderRef.current &amp;&amp;&#xA;        videoRecorderRef.current.state === "recording"&#xA;      ) {&#xA;        videoRecorderRef.current.stop();&#xA;      }&#xA;&#xA;      // Create a new MediaRecorder instance&#xA;      const newVideoRecorder = new MediaRecorder(&#xA;        outputStream,&#xA;        videoRecorderOptions&#xA;      );&#xA;      videoRecorderRef.current = newVideoRecorder;&#xA;&#xA;      newVideoRecorder.ondataavailable = async (event) => {&#xA;        if (event.data.size > 0) {&#xA;          chunkIndex&#x2B;&#x2B;;&#xA;          totalSegments.current&#x2B;&#x2B;;&#xA;          const segmentIndex = totalSegments.current;&#xA;          console.log(event.data);&#xA;          handleUpload({ segmentIndex, chunk: event.data });&#xA;        }&#xA;      };&#xA;&#xA;      // Start recording with a 3-second interval&#xA;      newVideoRecorder.start();&#xA;    };&#xA;&#xA;    // Start the first recording&#xA;    startNewRecording();&#xA;&#xA;    // Set up an interval to restart the recording every 3 seconds&#xA;    recordingIntervalIdRef.current = setInterval(() => {&#xA;      startNewRecording();&#xA;    }, 3000);&#xA;&#xA;    setIsRecording(true);&#xA;    setStartingRecording(false);&#xA;  };&#xA;

    &#xA;