Recherche avancée

Médias (91)

Autres articles (87)

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

  • 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 ; (...)

  • Gestion de la ferme

    2 mars 2010, par

    La ferme est gérée dans son ensemble par des "super admins".
    Certains réglages peuvent être fais afin de réguler les besoins des différents canaux.
    Dans un premier temps il utilise le plugin "Gestion de mutualisation"

Sur d’autres sites (7619)

  • Adding watermark bitmap over video in android : 4.3's MediaMuxer or ffmpeg

    24 novembre 2018, par Alin

    Here is my scenario :

    • Download an avi movie from the web
    • Open a bitmap resource
    • Overlay this bitmap at the bottom of the movie on all frames in the background
    • Save the video on extarnal storage
    • The video length is 15 seconds usually

    Is this possible to achieve using MediaMuxer ? Any info on the matter is gladly received

    I’ve been looking to http://bigflake.com/mediacodec/#DecodeEditEncodeTest (Thanks @fadden) and it says there :

    "Decoding the frame and copying it into a ByteBuffer with
    glReadPixels() takes about 8ms on the Nexus 5, easily fast enough to
    keep pace with 30fps input, but the additional steps required to save
    it to disk as a PNG are expensive (about half a second)"

    So having almost 1 sec/frame is not acceptable. From what I am thinking one way would be to save each frame as PNG, open it, add the bitmap overlay on it and then save it. However this would take an enormous time to accomplish.

    I wonder if there is a way to do things like this :

    1. Open video file from external storage
    2. Start decoding it
    3. Each decoded frame will be altered with the bitmap overlay in memory
    4. The frame is sent to an encoder.

    On iOS I saw that there a way to take the original audio + original video + an image and add them in a container and then just encode the whole thing...

    Should I switch to ffmpeg ? How stable and compatible is ffmpeg ? Am I risking compatibility issues with android 4.0+ devices ? Is there a way to use ffmpeg to acomplish this ? I am new to this domain and still doing research.


    Years later edit :
    Years have passed since the question and ffmpeg isn’t really easy to add to a commercial software in terms of license. How did this evolved ? Newer versions of android are more capable on this with the default sdk ?


    Some more time later edit

    I got some negative votes for posting info as an answer so I’ll edit the original question. Here is a great library which, from my testing does apply watermark to video and does it with progress callback making it a lot easier to show progress to the user and also uses the default android sdks. https://github.com/MasayukiSuda/Mp4Composer-android

    This library generate an Mp4 movie using Android MediaCodec API and apply filter, scale, and rotate Mp4.

    Sample code, could look like :

    new mp4Composer(sourcePath, destinationPath)
           .filter(new GlWatermarkFilter(watermarkBitmap)
           .listener(){
                 @Override
                 private void onProgress(double value){}

                 @Override
                 private void onCompleted(double value){
                     runOnUiThread( () ->{
                        showSneakbar
                     }
                 }

                 @Override
                 private void onCancelled(double value){}

                 @Override
                 private void onFailed(Exception e){}

           }).start();

    Testing on emulator, seems to work fine on android 8+ while on older generates a black video file.However, when testing on real device seems to work.

  • Convert .heic to .jpg using ffmpeg ?

    19 novembre 2018, par Ketan Chauhan

    Using MP4Box :

    MP4Box -info IMG_5915.HEIC

    I get :

    prof colour profile not supported

    prof colour profile not supported

    Root Meta type : "pict" - 52 resource item(s)

    Primary Item - ID 49

    Item #1 - ID 1 - Name :
    .

    .

    .

    Item #49 - ID 49 - Name :

    Item #50 - ID 50 - Name : Item #51 - ID 51 - Name :

    File has no movie (moov) - static data container

    Then if I extract all of these :

    for i in seq 51 ; do MP4Box -dump-item $i:path=item$i.hevc
    IMG_5915.HEIC ; done

    Then if i continue, and convert these tiles to jpeg with ffmpeg it convert one tile to jpeg i.e it creates 51 HEVC tiles.

    ffmpeg -i item1.hevc -frames:v 1 -vsync vfr -q:v 1 -an image1.jpg

    How can I combine these tiles into a single jpg file ?

  • PHP exec() function command finished but last function not execute

    12 juin 2018, par Noeeka

    The PHP file should execute FFmpeg command after this command finished it should take data into the database. However, I found that the exec($command--FFmpeg) has been completed and it run pretty well but the data is not in the database.

    I have set php.ini ignore_user_abort = On

    It could run the PHP process in the background

    my could is as follows

    set_time_limit(0);
    $tumbfileName = time();
    $filepath = dirname(dirname(dirname(__FILE__))) . "/files/video/";
    $cmd = 'ffmpeg -i ' . dirname(dirname(dirname(__FILE__))).$content . ' -c:v libx264 -strict -2 ' . $filepath . "post_" . $tumbfileName . '.mp4';
    exec($cmd, $output, $error);

    $cmdImg="ffmpeg -y -ss 2 -i ".dirname(dirname(dirname(__FILE__))).$content." -vframes 1 -f image2 -s 400*300 ".$filepath . "notice_thumb_" . $tumbfileName . '.jpg';
    //$cmdImg = "ffmpeg -i " . dirname(dirname(dirname(__FILE__))).$content . " -f image2 -ss 10 -s 400*300 -vframes 10 " . $filepath . "notice_thumb_" . $tumbfileName . '.jpg';
    exec($cmdImg, $outputImg, $errorImg);
    $data = array(
           'content' => "/files/video/"."post_" . $tumbfileName . '.mp4',
           'author' => 'management',
           'deadline' => $deadline,
           'type' => $type,
           'datetime' => time(),
           'thumb' => "/files/video/"."notice_thumb_" . $tumbfileName . '.jpg'
    );                                                          
    $flag = $this->db->insert('notice_info', $data);