Recherche avancée

Médias (91)

Autres articles (21)

  • Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs

    12 avril 2011, par

    La manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
    Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras.

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

  • Les statuts des instances de mutualisation

    13 mars 2010, par

    Pour des raisons de compatibilité générale du plugin de gestion de mutualisations avec les fonctions originales de SPIP, les statuts des instances sont les mêmes que pour tout autre objets (articles...), seuls leurs noms dans l’interface change quelque peu.
    Les différents statuts possibles sont : prepa (demandé) qui correspond à une instance demandée par un utilisateur. Si le site a déjà été créé par le passé, il est passé en mode désactivé. publie (validé) qui correspond à une instance validée par un (...)

Sur d’autres sites (4410)

  • Java JAR file runs on local machine but missing file on others

    22 avril 2022, par john pear

    The JAR file consists of the ffmpeg.exe file and it can run normally on my machine without any problems. However, if I try to run it on another computer it would tell me that java.io.IOException: Cannot run program "ffmpeg.exe": CreateProcess error=2,The system cannot find the file specified from the stacktrace. The way I imported it was

    


    FFMpeg ffmpeg = new FFMpeg("ffmpeg.exe");  //in res folder

...
//ffmpeg class
public FFMPEG(String ffmepgEXE) {
    this.ffmepgEXE = ffmepgEXE;
}


    


  • local.ERROR : ffmpeg failed to execute command

    20 août 2024, par AMNA IQBAL

    I am trying to draw points on a video.

    


    The Video is 12 seconds long and for one second there are 17 data points which needs to be plotted on the video of one frame (1 second).
    
It works for 6 seconds but not for 12 seconds.

    


    Why it's not working for longer videos ? Is there any limitations of commands in ffmpeg ?

    


    public function overlayCoordinates(Request $request)
{
Log::info('Received request to overlay coordinates on video.');

    set_time_limit(600); // 600 seconds = 10 minutes
    try {

        $request->validate([
            'video' => 'required|file|mimes:mp4,avi,mkv,webm|max:102400', // Video max size 100MB
            'coordinates' => 'required|file|mimes:txt|max:5120', // Coordinates text file max size 5MB
        ]);

        $videoFile = $request->file('video');
        $coordinatesFile = $request->file('coordinates');

        $videoFilePath = $videoFile->getRealPath();
        $videoFileName = $videoFile->getClientOriginalName();

        // Move the video file to the desired location if needed
        $storedVideoPath = $videoFile->storeAs('public/videos', $videoFileName);

        // Open the video file using Laravel FFmpeg
        $media = FFMpeg::fromDisk('public')->open('videos/' . $videoFileName);
        $duration = $media->getDurationInSeconds();

        Log::info('Duration: ' . $duration);

        $coordinatesJson = file_get_contents($coordinatesFile->getPathname());
        $coordinatesArray = json_decode($coordinatesJson, true);

        $frameRate = 30; // Assuming a frame rate of 30 fps
        $visibilityDuration = 0.5; // Set duration to 0.5 second

        for ($currentTime = 0; $currentTime < 7; $currentTime++) {
            $filterString = ""; // Reset filter string for each frame
            $frameIndex = intval($currentTime * $frameRate); // Convert current time to an index

            if (isset($coordinatesArray['graphics'][$frameIndex])) {
                // Loop through the first 5 keypoints (or fewer if not available)
                $keypoints = $coordinatesArray['graphics'][$frameIndex]['kpts'];
                for ($i = 0; $i < min(12, count($keypoints)); $i++) {
                    $keypoint = $keypoints[$i];

                    $x = $keypoint['p'][0] * 1920; // Scale x coordinate to video width
                    $y = $keypoint['p'][1] * 1080; // Scale y coordinate to video height

                    $startTime = $frameIndex / $frameRate; // Calculate start time
                    $endTime = $startTime + $visibilityDuration; // Set end time for 0.5 second duration

                    // Add drawbox filter for the current keypoint
                    $filterString .= "drawbox=x={$x}:y={$y}:w=10:h=10:color=red@0.5:t=fill:enable='between(t,{$startTime},{$endTime})',";
                }
                   Log::info("Processing frame index: {$frameIndex}, Drawing first 5 keypoints.");
        }

            $filterString = rtrim($filterString, ',');
            
            // Apply the filter for the current frame
            if (!empty($filterString)) {
                $media->addFilter(function ($filters) use ($filterString) {
                    $filters->custom($filterString);
                });
            }
        }

        $filename = uniqid() . '_overlayed.mp4';
        $destinationPath = 'videos/' . $filename;

        $format = new \FFMpeg\Format\Video\X264('aac');
        $format->setKiloBitrate(5000) // Increase bitrate for better quality
               ->setAdditionalParameters(['-profile:v', 'high', '-preset', 'veryslow', '-crf', '18']) // High profile, very slow preset, and CRF of 18 for better quality
               ->setAudioCodec('aac')
               ->setAudioKiloBitrate(192); // Higher audio bitrate
        

        // Export the video in one pass to a specific disk and directory
        $media->export()
              ->toDisk('public')
              ->inFormat($format)
              ->save($destinationPath);

        return response()->json([
            'message' => 'Video processed successfully with overlays.',
            'path' => Storage::url($destinationPath)
        ]);
    } catch (\Exception $e) {
        Log::error('Overlay process failed: ' . $e->getMessage());
        return response()->json(['error' => 'Overlay process failed. Please check logs for details.'], 500);
    }
}


    


  • "Relocation cannot be used against local symbol" only for one platform (x86)

    10 janvier 2023, par JonasVautherin

    Problem

    


    I am cross-compiling gstreamer using Meson, and it works for 3 different platforms (android-arm, android-arm64, android-x86_64) but fails for android-x86 with errors like :

    


    ld: error: relocation R_386_32 cannot be used against local symbol; recompile with -fPIC


    


    I can't seem to understand which component was not built with -fPIC, and I don't understand why this would differ between the 4 platforms. If 3 are built with -fPIC, why would the fourth be different ?

    


    Details

    


    More specifically, it fails with a bunch of the following errors :

    


    FAILED: subprojects/FFmpeg/test_avcodec_utils
/usr/i686-linux-android/bin/clang  -o subprojects/FFmpeg/test_avcodec_utils subprojects/FFmpeg/test_avcodec_utils.p/libavcodec_tests_utils.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -pie -Wl,-Bsymbolic -fPIC -Wl,--start-group subprojects/FFmpeg/libavcodec-static.a subprojects/FFmpeg/libavutil.a subprojects/FFmpeg/libavutil-static.a subprojects/FFmpeg/libswresample.a subprojects/FFmpeg/libswresample-static.a -pthread -lm -lz -lz -Wl,--end-group
ld: error: relocation R_386_32 cannot be used against local symbol; recompile with -fPIC
>>> defined in subprojects/FFmpeg/libavcodec-static.a(libavcodec-static.a.p/dirac_dwt.o)
>>> referenced by x86util.asm:1315 (/work/build/android-x86/dependencies/gstreamer/gstreamer/src/gstreamer/subprojects/FFmpeg/libavutil/x86/x86util.asm:1315)
>>>               libavcodec-static.a.p/dirac_dwt.o:(.text+0x9F) in archive subprojects/FFmpeg/libavcodec-static.a


    


    I essentially run $ meson setup --cross-file my-crossfile build . in a Dockcross container, with some options, so nothing special there as far as I can tell.

    


    My cross-file looks like this (similar to the other 3 that work, except for cpu and cpu_family that differ) :

    


    [constants]
cross_triple = 'i686-linux-android'
cross_root = '/usr/' + cross_triple

[properties]
pkg_config_libdir = ''

[binaries]
c = cross_root + '/bin/clang'
cpp = cross_root + '/bin/clang++'
ar = cross_root + '/bin/llvm-ar'
as = cross_root + '/bin/llvm-as'
ranlib = cross_root + '/bin/llvm-ranlib'
ld = cross_root + '/bin/ld'
strip = cross_root + '/bin/llvm-strip'
pkgconfig = 'pkg-config'

[host_machine]
system = 'android'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'