Recherche avancée

Médias (91)

Autres articles (88)

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

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

  • Menus personnalisés

    14 novembre 2010, par

    MediaSPIP utilise le plugin Menus pour gérer plusieurs menus configurables pour la navigation.
    Cela permet de laisser aux administrateurs de canaux la possibilité de configurer finement ces menus.
    Menus créés à l’initialisation du site
    Par défaut trois menus sont créés automatiquement à l’initialisation du site : Le menu principal ; Identifiant : barrenav ; Ce menu s’insère en général en haut de la page après le bloc d’entête, son identifiant le rend compatible avec les squelettes basés sur Zpip ; (...)

Sur d’autres sites (8531)

  • why am i getting this error when using FFmpeg in a spring boot app on a mac intel device : SIGSEGV (0xb) at pc=0x000000013d71b0e0, pid=49777, tid=42755

    19 juillet 2024, par Godwill Christopher

    I am working with FFmpeg library in spring boot app to stream live recording from an ip camera via RSTP and save to S3 bucket but i am running into the error below.

    


    A fatal error has been detected by the Java Runtime Environment :

    


    SIGSEGV (0xb) at pc=0x000000013d71b0e0, pid=49777, tid=42755

    


    JRE version : OpenJDK Runtime Environment Corretto-19.0.2.7.1 (19.0.2+7) (build 19.0.2+7-FR)
Java VM : OpenJDK 64-Bit Server VM Corretto-19.0.2.7.1 (19.0.2+7-FR, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-amd64)
Problematic frame :
C [libavutil.56.dylib+0xa0e0] av_strstart+0x10

    


    No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
An error report file with more information is saved as :
/Users/CODA/Desktop/videoSaleService/hs_err_pid49777.log

    


    If you would like to submit a bug report, please visit :
https://github.com/corretto/corretto-19/issues/
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.

    


    Process finished with exit code 134 (interrupted by signal 6:SIGABRT)

    


    public static void main(String[] args) {
    OkHttpClient client = new OkHttpClient();
    try (S3Client s3Client = S3Client.create()) {
        VideoService videoService = new VideoService(new VideoRepositoryImpl(),
                new S3Service(s3Client), new VideoExtractor(client), new ISApiClient());
        videoService.streamLiveVideoRSTP(System.out);
    } catch (IOException e) {
        log.error("Error occurred while streaming live video: {}", e.getMessage(), e);
    } catch (Exception e) {
        log.error("Unexpected error occurred: {}", e.getMessage(), e);
    }
}

public void streamLiveVideoRSTP(OutputStream outputStream) throws IOException {
    File tempFile = File.createTempFile("live_stream", ".mp4");

    try (InputStream inputStream = client.getLiveStreamingVideoRSTP();
         OutputStream fileOutputStream = new FileOutputStream(tempFile)) {
        byte[] buffer = new byte[4096];
        int bytesRead;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
            fileOutputStream.write(buffer, 0, bytesRead);
        }
    } catch (Exception e) {
        log.error("Error occurred while streaming live video: {}", e.getMessage(), e);
        throw new IOException("Error occurred while streaming live video", e);
    }

    // Upload the captured video file to S3
    try {
        uploadStreamedVideoToS3(tempFile);
    } finally {
        if (tempFile.exists()) {
            if (!tempFile.delete()) {
                log.warn("Failed to delete temporary file: {}", tempFile.getAbsolutePath());
            }
        }
    }
}

private final BlockingQueue frameQueue = new ArrayBlockingQueue<>(10);

public ISApiClient() {
    new Thread(this::startGrabbingFrames).start();
}

public InputStream getLiveStreamingVideoRSTP() {
    return new InputStream() {
        private ByteArrayInputStream currentStream;

        @Override
        public int read() {
            if (currentStream == null || currentStream.available() == 0) {
                byte[] frame = frameQueue.poll();
                if (frame != null) {
                    currentStream = new ByteArrayInputStream(frame);
                } else {
                    return -1;
                }
            }
            return currentStream.read();
        }
    };
}

private void startGrabbingFrames() {
    try (FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(rtspUrl)) {
        frameGrabber.setOption("rtsp_transport", "tcp");
        frameGrabber.start();

        FFmpegFrameFilter frameFilter = new FFmpegFrameFilter("format=yuv420p",
                frameGrabber.getImageWidth(), frameGrabber.getImageHeight());
        frameFilter.setPixelFormat(frameGrabber.getPixelFormat());
        frameFilter.start();

        log.info("Started grabbing frames from RTSP stream.");

        while (true) {
            Frame frame = frameGrabber.grab();
            if (frame != null && frame.image != null) {
                log.info("Frame grabbed: width={} height={} timestamp={}",
                        frame.imageWidth, frame.imageHeight, frame.timestamp);
                frameFilter.push(frame);
                Frame filteredFrame = frameFilter.pull();

                if (filteredFrame != null && filteredFrame.image != null) {
                    log.info("Frame filtered: width={} height={} timestamp={}",
                            filteredFrame.imageWidth, filteredFrame.imageHeight, filteredFrame.timestamp);
                    byte[] imageBytes = convertFrameToBytes(filteredFrame);
                    if (imageBytes.length > 0) {
                        frameQueue.offer(imageBytes);
                        log.info("Frame added to queue, queue size={}", frameQueue.size());
                    }
                }
            }
        }
    } catch (IOException e) {
        log.error("Error grabbing frames: {}", e.getMessage(), e);
    }
}

private byte[] convertFrameToBytes(Frame frame) {
    if (frame == null || frame.image == null) {
        return new byte[0];
    }

    ByteBuffer byteBuffer = null;
    for (Object img : frame.image) {
        if (img instanceof ByteBuffer) {
            byteBuffer = (ByteBuffer) img;
            break;
        }
    }

    if (byteBuffer == null) {
        return new byte[0];
    }

    byte[] bytes = new byte[byteBuffer.remaining()];
    byteBuffer.get(bytes);
    return bytes;
}


    


  • VP8 Codec SDK "Aylesbury" Release

    28 octobre 2010, par noreply@blogger.com (John Luther)

    Today we’re making available "Aylesbury," our first named release of libvpx, the VP8 codec SDK. VP8 is the video codec used in WebM. Note that the VP8 specification has not changed, only the SDK.

    What’s an Aylesbury ? It’s a breed of duck. We like ducks, so we plan to use duck-related names for each major libvpx release, in alphabetical order. Our goal is to have one named release of libvpx per calendar quarter, each with a theme.

    You can download the Aylesbury libvpx release from our Downloads page or check it out of our Git repository and build it yourself. In the coming days Aylesbury will be integrated into all of the WebM project components (DirectShow filters, QuickTime plugins, etc.). We encourage anyone using our components to upgrade to the Aylesbury releases.

    For Aylesbury the theme was faster decoder, better encoder. We used our May 19, 2010 launch release of libvpx as the benchmark. We’re very happy with the results (see graphs below) :

    • 20-40% (average 28%) improvement in libvpx decoder speed
    • Over 7% overall PSNR improvement (6.3% SSIM) in VP8 "best" quality encoding mode, and up to 60% improvement on very noisy, still or slow moving source video.




    The main improvements to the decoder are :

    • Single-core assembly "hot spot" optimizations, including improved vp8_sixtap_predict() and SSE2 loopfilter functions
    • Threading improvements for more efficient use of multiple processor cores
    • Improved memory handling and reduced footprint
    • Combining IDCT and reconstruction steps
    • SSSE3 usage in functions where appropriate

    On the encoder front, we concentrated on clips in the 30-45 dB range and saw the biggest gains in higher-quality source clips (greater that 38 dB), low to medium-motion clips, and clips with noisy source material. Many code contributions made this possible, but a few of the highlights were :

    • Adaptive width and strength alternate reference frame noise suppression filter with optional motion compensation.
    • Transform improvements (improved accuracy and reduction in round trip error)
    • Trellis-based quantized coefficient optimization
    • Two-pass rate control and quantizer changes
    • Rate distortion changes
    • Zero bin and rounding changes
    • Work on MB-level quality control and bit allocation

    We’re targeting Q1 2011 for the next named libvpx release, which we’re calling Bali. The theme for that release will be faster encoder. We are constantly working on improvements to video quality in the encoder, so after Aylesbury we won’t tie that work to specific named releases.

    WebM at Streaming Media West

    Members of the WebM project will discuss Aylesbury during a session at the Streaming Media West conference on November 3rd (session C203 : WebM Open Video Project Update). For more information, visit www.streamingmedia.com/west.

    John Luther is Product Manager of the WebM Project.

  • Leading Google Analytics alternative, Matomo, parodies Christopher Nolan blockbuster ahead of the UA sunset

    4 juillet 2023, par Erin — Press Releases

    Wellington, New Zealand, 4 July 2023 : In the world of online data, Google Analytics has long reigned supreme. Its dominance has been unquestioned, leaving website owners with little choice but to rely on the tech giant for their data insights. However, a new dawn in web analytics is upon us, and Matomo, the leading alternative to Google Analytics, is seizing a unique opportunity to position itself as the go-to provider. In a bold move, Matomo has launched a parody trailer, “Googleheimer,” humorously taking a satirical swipe at Google in the style of the upcoming Oppenheimer biopic by Christopher Nolan.

    Capitalising on a time-bound decision

    With an important decision looming for marketers and web specialists who need to switch analytics providers by July 1st, Matomo has found the perfect window to capture their attention.

    The urgency of the situation, combined with the high intent to switch providers, sets the stage for Matomo to establish itself as the leading alternative analytics platform of choice.

    Matomo’s parody trailer addresses the frustrations of GA4 head-on by highlighting the issues and the uncertainties caused by the sunset of Universal Analytics in humorous satire with lines such as :

    “But we’re keeping everyone’s data, right ? Right ?? …RIGHT ?!”

    Riding on the coat tails of this summer’s anticipated blockbuster from Christopher Nolan, Matomo openly points at the downsides of GA4, and reflects many frustrated marketers pain points in an entertaining way. Beneath the comedic and satirical tone lies the message that users have choices, and no longer need to surrender to the behemoth incumbent.

    Matomo was founded to challenge the status quo and provide a solution for those who believe in privacy and in ethical analytics, and who prefer that their customer data not be concentrated in the hands of just a few corporations.

    Watch the full trailer here. 


    About Matomo

    Matomo is a world-leading open-source privacy-friendly ethical web analytics platform, trusted by over 1.4 million websites in 190 countries and translated into over 50 languages. Matomo helps businesses and organisations track and optimise their online presence allowing users to easily collect, analyse, and act on their website and marketing data to gain a deeper understanding of their visitors and drive conversions and revenue. Matomo’s vision is to create, as a community, the leading open digital analytics platform that gives every user complete control of their data.

    Visit matomo.org for more information.




    More on Google Analytics changes



    A new dawn in web analytics is upon us, and Matomo – the leading alternative to Google Analytics – is here for it. After 20 years, Google is blowing up Universal Analytics (or GA3) – and taking your data with it. Inspired by Christopher Nolan’s upcoming biopic about physicist J. Robert Oppenheimer and the making of his atomic bomb (also known as “The Manhattan Project”), this parody trailer openly points to Google and draws the comparison in humorous satire. GA4 comes with a new set of metrics, setups and reports that change how you analyse your data.