Recherche avancée

Médias (91)

Autres articles (32)

  • 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

  • Supporting all media types

    13 avril 2011, par

    Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)

  • 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 (6451)

  • FFmpeg get frame rate

    22 septembre 2021, par zhin dins

    I have several images and I am reproducing them in 78.7ms, I am creating like the 80s video effect. But, I am unable to find the correct ms, and this images with the original videos are unsync.

    


    I dumped the video to images using this command => ffmpeg -i *.mp4 the80effect/img-%d.jpg And now, I have 48622 frames. The video FPS is 24

    


    So, 48622/24 = 2025 +- I cannot use 2025ms since those images will load very slow. And the and the approximate value is 78.7ms per frame/image

    


    How can I find the correct value ? The video duration in seconds is 2026. I have tried all math to find this but I'm failing. How many images (one frame) per msCould you help me ? Thank you.

    


  • Can I use the file buffer or stream as input for fluent-ffmpeg ? I am trying to avoid saving the video locally to get its path before removing

    22 avril 2023, par Moath Thawahreh

    I am receiving the file via an api, I was trying to process the file.buffer as input for FFmpeg but it did not work, I had to save the video locally first and then process the path and remove the saved video later on.
I don't want to believe that there is no other way to solve this and I have been looking for solutions and workarounds but it was all about ffmpeg input as a path.

    


    I would love to find a solution using fluent-ffmpeg because it has some other great features, but I won't mind any suggestions for compressing the video using any different approaches if it's more efficient

    


    Again my code below works fine but I have to save the video and then remove it I am hoping for a more efficient solution :

    


      fs.writeFileSync(&#x27;temp.mp4&#x27;, file.buffer);&#xA;&#xA;    // Resize the temporary file using ffmpeg&#xA;    ffmpeg(&#x27;temp.mp4&#x27;) // here I tried pass file.buffer as readable stream,it receives paths only &#xA;      .format(&#x27;mp4&#x27;)&#xA;      .size(&#x27;50%&#x27;)&#xA;      .save(&#x27;resized.mp4&#x27;)&#xA;      .on(&#x27;end&#x27;, async () => {&#xA;        // Upload the resized file to Firebase&#xA;        const resizedFileStream = bucket.file(`video/${uniqueId}`).createWriteStream();&#xA;        fs.createReadStream(&#x27;resized.mp4&#x27;).pipe(resizedFileStream);&#xA;&#xA;        await new Promise<void>((resolve, reject) => {&#xA;          resizedFileStream&#xA;            .on(&#x27;finish&#x27;, () => {&#xA;              // Remove the local files after they have been uploaded&#xA;              fs.unlinkSync(&#x27;temp.mp4&#x27;);&#xA;              fs.unlinkSync(&#x27;resized.mp4&#x27;);&#xA;              resolve();&#xA;            })&#xA;            .on(&#x27;error&#x27;, reject);&#xA;        });&#xA;&#xA;        // Get the URL of the uploaded resized version&#xA;        const resizedFile = bucket.file(`video/${uniqueId}`);&#xA;        const url = await resizedFile.getSignedUrl({&#xA;          action: &#x27;read&#x27;,&#xA;          expires: &#x27;03-17-2025&#x27;, // Change this to a reasonable expiration date&#xA;        });&#xA;&#xA;        console.log(&#x27;Resized file uploaded successfully.&#x27;);&#xA;      })&#xA;      .on(&#x27;error&#x27;, (err) => {&#xA;        console.log(&#x27;An error occurred: &#x27; &#x2B; err.message);&#xA;      });&#xA;</void>

    &#xA;

  • Stream H264 raw data on RTSP server

    1er janvier, par Aitazaz

    I have H264 hex string data saved in a list.&#xA;The data is in correct format as it is being received, I am trying to stream it to RTSP server.

    &#xA;

    I have stream the data in realtime as it is from a dashcam.

    &#xA;

    The RTSP server is deployed but when I stream frames to it, the connection is created and then ends in an instant (does not last for a second)

    &#xA;

    The code is mentioned below which performs this streaming task.

    &#xA;

    def h264_stream_to_rtsp(data_list, rtsp_url):&#xA;    try:&#xA;        ffmpeg_command = [&#xA;            "ffmpeg", &#xA;            "-f", "h264",&#xA;            "-i", "-",&#xA;            "-vcodec", "libx264",&#xA;            "-preset", "fast",&#xA;            "-f", "rtsp",&#xA;            "-analyzeduration", "5000000",&#xA;            "-probesize", "5000000", &#xA;            rtsp_url  # The RTSP URL to stream to&#xA;        ]&#xA;        &#xA;        ffmpeg_process = subprocess.Popen(ffmpeg_command, stdin=subprocess.PIPE)&#xA;&#xA;        for index, hex_data in enumerate(data_list):&#xA;            # print(f"Processing hex data {index &#x2B; 1}/{len(data_list)}...")&#xA;&#xA;            if len(hex_data) % 2 != 0:&#xA;                hex_data = &#x27;0&#x27; &#x2B; hex_data  # Append a leading zero if length is odd&#xA;&#xA;            binary_data = binascii.unhexlify(hex_data)&#xA;&#xA;            ffmpeg_process.stdin.write(binary_data)&#xA;&#xA;        ffmpeg_process.stdin.close()&#xA;&#xA;        ffmpeg_process.wait()&#xA;        print("Stream completed.")&#xA;&#xA;    except KeyboardInterrupt:&#xA;        print("Stopping live stream.")&#xA;    except Exception as e:&#xA;        print(f"Error: {e}")&#xA;

    &#xA;

    Logs from the RTSP server are mentioned below :

    &#xA;

    2025/01/01 10:56:04 INF [RTSP] [conn 20.174.9.78:35474] opened&#xA;2025/01/01 10:56:04 INF [RTSP] [session 1d2bb871] created by 20.174.9.78:35474&#xA;2025/01/01 10:56:04 INF [RTSP] [session 1d2bb871] is publishing to path &#x27;live&#x27;, 1 track (H264)&#xA;2025/01/01 10:56:04 INF [RTSP] [session 1d2bb871] destroyed: torn down by 20.174.9.78:35474&#xA;2025/01/01 10:56:04 INF [RTSP] [conn 20.174.9.78:35474] closed: EOF&#xA;2025/01/01 10:56:48 INF [RTSP] [conn 20.174.9.78:54448] opened&#xA;2025/01/01 10:56:48 INF [RTSP] [session b6a95e71] created by 20.174.9.78:54448&#xA;2025/01/01 10:56:48 INF [RTSP] [session b6a95e71] is publishing to path &#x27;live&#x27;, 1 track (H264)&#xA;2025/01/01 10:56:48 INF [RTSP] [session b6a95e71] destroyed: torn down by 20.174.9.78:54448&#xA;

    &#xA;

    How can I stream continuously ?

    &#xA;