Recherche avancée

Médias (0)

Mot : - Tags -/tags

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (56)

  • Encodage et transformation en formats lisibles sur Internet

    10 avril 2011

    MediaSPIP transforme et ré-encode les documents mis en ligne afin de les rendre lisibles sur Internet et automatiquement utilisables sans intervention du créateur de contenu.
    Les vidéos sont automatiquement encodées dans les formats supportés par HTML5 : MP4, Ogv et WebM. La version "MP4" est également utilisée pour le lecteur flash de secours nécessaire aux anciens navigateurs.
    Les documents audios sont également ré-encodés dans les deux formats utilisables par HTML5 :MP3 et Ogg. La version "MP3" (...)

  • 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

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (11699)

  • How can I remove every nth frame from raw video using ffmpeg ?

    15 juin 2024, par DaveB44

    Question moved to SuperUser, please reply there

    


    I have many cine films that have been digitally converted. They have been converted as a 25 fps with 2 frames in every 23 duplicated. I need to remove the duplicated frames using a bitstream filter so there is no decoding/encoding.

    


    After removing the frames I will change to the original cine frame rate of 18 fps. I will then change the frame rate to 25 fps using duplicated frames. I don't want to interpolate as I want to preserve the jerky format of the cine. Finally I will video editing software that will do the final encoding.

    


    All the additional steps will cause several stages of decoding/encoding, that I need to avoid.

    


    First I used a combination of the answers to FFmpeg remove video frames at specific intervals and FFmpeg remove every 6th frame starting from the 3rd frame, on an mp4 file to check it works. I modified it to remove every 4th and 17th frame in 25.

    


    ffmpeg -loglevel warning -i cine.mp4 -an -vf "select='if((mod(n-4,25)),(mod(n-17,25)))',setpts='N/FRAME_RATE/TB'" cine-23.mp4


    


    This works fine, but I end up with a file a quarter the size.

    


    I now used Gyan's answer in Using ffmpeg to change framerate to extract the raw bitstream.

    


    ffmpeg -loglevel warning -i cine.mp4 -c copy -f h264 cine.h264


    


    This created the h264 file as expected, surprisingly it was 16 kB smaller than the original (67 GB file size).

    


    I then modified the code to use the .h264 file.

    


    ffmpeg -loglevel warning -i cine.h264 -vf "select='if((mod(n-4,25)),(mod(n-17,25)))',setpts='N/FRAME_RATE/TB'" cine-23.h264


    


    This gave the following error, but created the cine-23.h264 file although it was the same size as cine-23.mp4 in the test above

    


    [h264 @ 00000245ec0bfb80] non-existing SPS 0 referenced in buffering period
    Last message repeated 1 times


    


    I then checked the ffmpeg bitstream filter documentation and found the bitstream filter setts. I changed my code to the following.

    


    ffmpeg -loglevel warning -i cine.h264 -bsf:v "select='if((mod(n-4,25)),(mod(n-17,25)))',setts=pts='N/FRAME_RATE/TB'" cine-23.h264


    


    Which resulted in the following error.

    


    [vost#0:0/libx264 @ 000002916cf173c0] Error parsing bitstream filter sequence 'select='if((mod(n-4,25)),(mod(n-17,25)))',setts=pts='N/FRAME_RATE/TB'': Bitstream filter not found
Error opening output file cine-23.h264.
Error opening output files: Bitstream filter not found


    


    I'm assuming the error is because setts does not support select. Is there another way to achieve what I am looking for ?

    


    I could use mpdecimate but as that has to compare each frame it is much slower than defining it only needs to delete frames 4 and 17 in every second.

    


    This is the output of ffprobe on my original file.

    


    ffprobe version 2023-11-28-git-47e214245b-full_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developers
  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --pkg-config=pkgconf --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      58. 32.100 / 58. 32.100
  libavcodec     60. 35.100 / 60. 35.100
  libavformat    60. 18.100 / 60. 18.100
  libavdevice    60.  4.100 / 60.  4.100
  libavfilter     9. 14.100 /  9. 14.100
  libswscale      7.  6.100 /  7.  6.100
  libswresample   4. 13.100 /  4. 13.100
  libpostproc    57.  4.100 / 57.  4.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cine.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 19529864
    compatible_brands: mp42isom
    creation_time   : 2024-02-19T21:01:10.000000Z
  Duration: 00:01:00.00, start: 0.000000, bitrate: 9245 kb/s
  Stream #0:0[0x1](eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 720x576 [SAR 35:32 DAR 175:128], 9243 kb/s, 25 fps, 25 tbr, 25 tbn (default)
    Metadata:
      creation_time   : 2024-02-19T21:01:10.000000Z
      handler_name    : Video Media Handler
      vendor_id       : [0][0][0][0]
      encoder         : AVC Coding


    


  • OpenCV on MacOS : Match Camera Index and Name

    15 janvier, par rpi_guru

    I have a builtin camera and a USB webcam connected to my MacOS.

    


    Here is a result of system_profiler SPCameraDataType -xml command :

    


    &lt;?xml version="1.0" encoding="UTF-8"?>&#xA;&#xA;<plist version="1.0">&#xA;<array>&#xA;    <dict>&#xA;        <key>_SPCommandLineArguments</key>&#xA;        <array>&#xA;            <string>/usr/sbin/system_profiler</string>&#xA;            <string>-nospawn</string>&#xA;            <string>-xml</string>&#xA;            <string>SPCameraDataType</string>&#xA;            <string>-detailLevel</string>&#xA;            <string>full</string>&#xA;        </array>&#xA;        <key>_SPCompletionInterval</key>&#xA;        <real>1.1997909545898438</real>&#xA;        <key>_SPResponseTime</key>&#xA;        <real>1.2810090780258179</real>&#xA;        <key>_dataType</key>&#xA;        <string>SPCameraDataType</string>&#xA;        <key>_detailLevel</key>&#xA;        <integer>-1</integer>&#xA;        <key>_items</key>&#xA;        <array>&#xA;            <dict>&#xA;                <key>_name</key>&#xA;                <string>USB Camera</string>&#xA;                <key>spcamera_model-id</key>&#xA;                <string>UVC Camera VendorID_3141 ProductID_25453</string>&#xA;                <key>spcamera_unique-id</key>&#xA;                <string>0x11000000c45636d</string>&#xA;            </dict>&#xA;            <dict>&#xA;                <key>_name</key>&#xA;                <string>FaceTime HD Camera</string>&#xA;                <key>spcamera_model-id</key>&#xA;                <string>FaceTime HD Camera</string>&#xA;                <key>spcamera_unique-id</key>&#xA;                <string>EAB7A68F-EC2B-4487-AADF-D8A91C1CB782</string>&#xA;            </dict>&#xA;        </array>&#xA;        <key>_parentDataType</key>&#xA;        <string>SPHardwareDataType</string>&#xA;        <key>_properties</key>&#xA;        <dict>&#xA;            <key>_name</key>&#xA;            <dict>&#xA;                <key>_isColumn</key>&#xA;                <string>NO</string>&#xA;                <key>_isOutlineColumn</key>&#xA;                <string>NO</string>&#xA;                <key>_order</key>&#xA;                <string>0</string>&#xA;            </dict>&#xA;            <key>spcamera</key>&#xA;            <dict>&#xA;                <key>_order</key>&#xA;                <string>10</string>&#xA;            </dict>&#xA;            <key>spcamera_model-id</key>&#xA;            <dict>&#xA;                <key>_order</key>&#xA;                <string>30</string>&#xA;            </dict>&#xA;            <key>spcamera_unique-id</key>&#xA;            <dict>&#xA;                <key>_order</key>&#xA;                <string>40</string>&#xA;            </dict>&#xA;            <key>volumes</key>&#xA;            <dict>&#xA;                <key>_detailLevel</key>&#xA;                <string>0</string>&#xA;            </dict>&#xA;        </dict>&#xA;        <key>_timeStamp</key>&#xA;        <date>2024-11-29T21:57:28Z</date>&#xA;        <key>_versionInfo</key>&#xA;        <dict>&#xA;            <key>com.apple.SystemProfiler.SPCameraReporter</key>&#xA;            <string>1.2.0</string>&#xA;        </dict>&#xA;    </dict>&#xA;</array>&#xA;</plist>&#xA;

    &#xA;

    As you can see, I have a couple of video input devices : USB Camera & FaceTime HD Camera

    &#xA;

    The problem is that when I use cap = cv2.VideoCapture(0), it uses the FaceTime HD Camera.

    &#xA;

    Can we match the camera index in OpenCV with the camera names ?

    &#xA;

    P.S. I tried ffmpeg, but it returned similar result :

    &#xA;

    enter image description here

    &#xA;

    ioreg | grep -i cam result :

    &#xA;

    enter image description here

    &#xA;

  • Struggling to add subtitles to a video using FFMPEG and C#

    19 mars 2024, par MattHodson

    I'm trying to add subtitles to my videos, 100% with code using FFMPEG and C#.

    &#xA;

    But I'm getting the following error :

    &#xA;

    &#xA;

    ffmpeg version 2024-02-04-git-7375a6ca7b-essentials_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers&#xA;built with gcc 12.2.0 (Rev10, Built by MSYS2 project)&#xA;configuration : —enable-gpl —enable-version3 —enable-static —pkg-config=pkgconf —disable-w32threads —disable-autodetect —enable-fontconfig —enable-iconv —enable-gnutls —enable-libxml2 —enable-gmp —enable-bzlib —enable-lzma —enable-zlib —enable-libsrt —enable-libssh —enable-libzmq —enable-avisynth —enable-sdl2 —enable-libwebp —enable-libx264 —enable-libx265 —enable-libxvid —enable-libaom —enable-libopenjpeg —enable-libvpx —enable-mediafoundation —enable-libass —enable-libfreetype —enable-libfribidi —enable-libharfbuzz —enable-libvidstab —enable-libvmaf —enable-libzimg —enable-amf —enable-cuda-llvm —enable-cuvid —enable-ffnvcodec —enable-nvdec —enable-nvenc —enable-dxva2 —enable-d3d11va —enable-libvpl —enable-libgme —enable-libopenmpt —enable-libopencore-amrwb —enable-libmp3lame —enable-libtheora —enable-libvo-amrwbenc —enable-libgsm —enable-libopencore-amrnb —enable-libopus —enable-libspeex —enable-libvorbis —enable-librubberband&#xA;libavutil 58. 36.101 / 58. 36.101&#xA;libavcodec 60. 38.100 / 60. 38.100&#xA;libavformat 60. 20.100 / 60. 20.100&#xA;libavdevice 60. 4.100 / 60. 4.100&#xA;libavfilter 9. 17.100 / 9. 17.100&#xA;libswscale 7. 6.100 / 7. 6.100&#xA;libswresample 4. 13.100 / 4. 13.100&#xA;libpostproc 57. 4.100 / 57. 4.100&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C :\Users\Gamer\source\repos\XXXX\bin\Debug\net8.0\ce31c8ab-4b53-44e8-9e25-d02ba5466144\output.mp4' :&#xA;Metadata :&#xA;major_brand : isom&#xA;minor_version : 512&#xA;compatible_brands : isomiso2avc1mp41&#xA;encoder : Lavf60.20.100&#xA;Duration : 00:03:18.84, start : 0.000000, bitrate : 101 kb/s&#xA;Stream #0:00x1 : Video : h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1024x1792, 26 kb/s, 1 fps, 1 tbr, 16384 tbn (default)&#xA;Metadata :&#xA;handler_name : VideoHandler&#xA;vendor_id : [0][0][0][0]&#xA;encoder : Lavc60.38.100 libx264&#xA;Stream #0:10x2 : Audio : aac (LC) (mp4a / 0x6134706D), 24000 Hz, mono, fltp, 74 kb/s (default)&#xA;Metadata :&#xA;handler_name : SoundHandler&#xA;vendor_id : [0][0][0][0]&#xA;[Parsed_subtitles_0 @ 000001a87404e3c0] Unable to parse option value "UsersGamersourcereposXXXXbinDebugnet8.0ce31c8ab-4b53-44e8-9e25-d02ba5466144output.srt" as image size&#xA;Error applying option 'original_size' to filter 'subtitles' : Invalid argument&#xA;[vost#0:0/libx264 @ 000001a874064a40] Error initializing a simple filtergraph&#xA;Error opening output file C :\Users\Gamer\source\repos\XXXX\bin\Debug\net8.0\ce31c8ab-4b53-44e8-9e25-d02ba5466144\videoWithSubtitles.mp4.&#xA;Error opening output files : Invalid argument

    &#xA;

    &#xA;

    It seems to be something related to paths, but I have tried EVERYTHING in my knowledge to fix this, still no luck... spent the majority of the day on it, no luck... so StackOverflow here I come !

    &#xA;

    My code :

    &#xA;

       public static async Task AddSubtitlesToVideoAsync(string videoPath, string subtitlesPath, string outputPath)&#xA;    {&#xA;        if (File.Exists(videoPath) &amp;&amp; File.Exists(subtitlesPath))&#xA;        {&#xA;            //string subtitlesPathForwardSlashes = subtitlesPath.Replace("\\", "/");&#xA;            //string ffmpegCommand = $"-i \"{videoPath}\" -filter_complex \"subtitles=&#x27;{subtitlesPathForwardSlashes}&#x27;\" \"{outputPath}\"";&#xA;            //string ffmpegCommand = $"-i \"{videoPath}\" -vf subtitles={subtitlesPathForwardSlashes} \"{outputPath}\"";&#xA;            //string ffmpegCommand = $"-i \"{videoPath}\" -vf subtitles=\"{subtitlesPath}\" \"{outputPath}\"";&#xA;            string subtitlesPathEscaped = subtitlesPath.Replace("\\", "\\\\");&#xA;            string ffmpegCommand = $"-i \"{videoPath}\" -vf subtitles=\"{subtitlesPathEscaped}\" \"{outputPath}\"";&#xA;&#xA;&#xA;            //output    -i C:\Users\Gamer\source\repos\XXXX\bin\Debug\net8.0\d745a08d-b932-47ac-a81c-45e9483590a7\output.mp4 -vf subtitles="C:/Users/Gamer/source/repos/XXXX/bin/Debug/net8.0/d745a08d-b932-47ac-a81c-45e9483590a7/generatedSubtitles.srt" C:\Users\Gamer\source\repos\XXXX\bin\Debug\net8.0\d745a08d-b932-47ac-a81c-45e9483590a7\videoWithSubtitles.mp4&#xA;            await ExecuteSubtitleCommandAsync(ffmpegCommand);&#xA;        }&#xA;        else&#xA;        {&#xA;            Console.WriteLine("Files can&#x27;t be found.");&#xA;        }&#xA;    }&#xA;&#xA;    public static async Task ExecuteSubtitleCommandAsync(string arguments)&#xA;    {&#xA;        string ffmpegExecutablePath = ffmpegRoot;&#xA;        var startInfo = new ProcessStartInfo(ffmpegExecutablePath, arguments)&#xA;        {&#xA;            CreateNoWindow = true,&#xA;            UseShellExecute = false,&#xA;            RedirectStandardOutput = true,&#xA;            RedirectStandardError = true&#xA;        };&#xA;&#xA;        using (var process = new Process { StartInfo = startInfo })&#xA;        {&#xA;            process.EnableRaisingEvents = true; // Enable the Exited event.&#xA;            process.Exited &#x2B;= (sender, e) =>&#xA;            {&#xA;                Console.WriteLine($"FFmpeg process exited with code {process.ExitCode}.");&#xA;            };&#xA;&#xA;            try&#xA;            {&#xA;                process.Start();&#xA;                // Asynchronously read the standard output and standard error of the process&#xA;                var outputTask = process.StandardOutput.ReadToEndAsync();&#xA;                var errorTask = process.StandardError.ReadToEndAsync();&#xA;                // Wait for both asynchronous tasks to complete&#xA;                await Task.WhenAll(outputTask, errorTask);&#xA;&#xA;                var output = await outputTask;&#xA;                var error = await errorTask;&#xA;&#xA;                if (!string.IsNullOrEmpty(error))&#xA;                {&#xA;                    Console.WriteLine("FFmpeg error: " &#x2B; error);&#xA;                }&#xA;                else&#xA;                {&#xA;                    Console.WriteLine("FFmpeg process completed successfully.");&#xA;                }&#xA;            }&#xA;            catch (Exception ex)&#xA;            {&#xA;                Console.WriteLine("Error: " &#x2B; ex.Message);&#xA;            }&#xA;            finally&#xA;            {&#xA;                // Wait for the process to exit if it hasn&#x27;t already.&#xA;                if (!process.HasExited)&#xA;                {&#xA;                    process.WaitForExit();&#xA;                }&#xA;            }&#xA;        }&#xA;    }&#xA;

    &#xA;