Recherche avancée

Médias (1)

Mot : - Tags -/école

Autres articles (47)

  • Problèmes fréquents

    10 mars 2010, par

    PHP et safe_mode activé
    Une des principales sources de problèmes relève de la configuration de PHP et notamment de l’activation du safe_mode
    La solution consiterait à soit désactiver le safe_mode soit placer le script dans un répertoire accessible par apache pour le site

  • Gestion des droits de création et d’édition des objets

    8 février 2011, par

    Par défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

Sur d’autres sites (6004)

  • ffmpeg Extract multiple streams from mkv to mp4

    28 mai 2016, par Sebastien Lemichez

    The situation

    I’m working on a everything to high compatibility mp4 app.
    The goal is to pass a video file and get a mp4 file that can be played by almost every player.

    I’m using ffmpeg to do so with this command :

    "ffmpeg -i " + inputPath + " -c:v libx264 -profile:v baseline -level 3.0 -preset ultrafast " + outputPath

    I’m doing it in a c# wrapper and it’s working like a charm.

    The Problem

    The real problem comes with extra streams that you can commonly find in mkv files like extra audio stream and multiple subtitles.

    So my goal is to use ffprobe.exe to get all input streams, extract them into different files and then using mp4box.exe to add them to my high compatibility mp4 file generated by ffmpeg.exe

    What I’ve done so far

    I have managed to get input streams in json with a structure like this :

    "streams":[
       {
           "index": 0,
           "codec_name": "h264",
           "codec_type": "video"
       },
       {
           "index": 1,
           "codec_name": "aac",
           "codec_type": "audio"
       },
       {
           "index": 2,
           "codec_name": "subrip",
           "codec_type": "subtitle"
           "tags":{
               "language": "eng"
           }
       },
       {
           "index": 3,
           "codec_name": "subrip",
           "codec_type": "subtitle"
           "tags":{
               "language": "fre"
           }
       },
       {
           "index": 4,
           "codec_name": "aac",
           "codec_type": "audio"
           "tags":{
               "language": "fre"
               "title": "Commentary"
           }
       }
    ]

    Where I’m stuck

    To extract those extra stream I would need to do something like this :

    ffmpeg -i input.mkv \
    -map 0:2 -c copy subtitle-2.srt \
    -map 0:3 -c copy subtitle-3.srt \
    -map 0:4 -c copy audio-4.aac

    So is there a way to use my ffprobe result to get these file extension because I have a codec_name "subrip" that should be saved in a srt.

    I’m avoiding an hard coded list because if I miss a format it will break. I’m more looking for a ffmpeg or ffprobe associated list I can use.

    English is not my native language so sorry for any misstakes.

  • FFmpeg : negative video duration

    19 octobre 2020, par quento

    FFmpeg is used to combine images into video and then duration is taken out of this video.

    


    Surprisingly I found out that FFmpeg could return negative duration.

    


    Command to get duration. This command is the most reliable according to this spec

    


    


    You can also use ffmpeg to get the duration by fully decoding the file. The null muxer is used so no output file is created. Refer to time= in the next-to-last line of the console output. In this example the input has a duration of 00:57:28.87.

    


    


    ffmpeg -i input.webm -f null -  


    


    Output ex :

    


    frame=206723 fps=1390 q=-0.0 Lsize=N/A time=00:57:28.87 bitrate=N/A speed=23.2x


    


    Actual example

    


    Generation of mp4 of screenshots :

    


    `/usr/bin/ffmpeg' -framerate 30 -pattern_type glob -i '/app/tmp/ecc0fe7b5ca4d7b20ea54d3ba757cfbf_b4581272-c485-4be2-a210-cbc99d71bd14_0/*.jpeg' -c:v libx264 -vf 'scale=trunc(iw/2)*2:trunc(ih/2)*2' -pix_fmt yuv420p -filter:v 'setpts=1.11*PTS' '/app/tmp/ecc0fe7b5ca4d7b20ea54d3ba757cfbf_b4581272-c485-4be2-a210-cbc99d71bd14_0/ecc0fe7b5ca4d7b20ea54d3ba757cfbf.mp4`


    


    Next, extracting duration :

    


    /usr/bin/ffmpeg' -i '/app/tmp/ecc0fe7b5ca4d7b20ea54d3ba757cfbf_b4581272-c485-4be2-a210-cbc99d71bd14_0/ecc0fe7b5ca4d7b20ea54d3ba757cfbf.mp4  -f null


    


    Output :

    


    time=-577014:32:22.77


    


    Unfortunately I can't reproduce this issue on local machine so far, so there are not many details to share. However, such cases appear on other machines quite frequently. Different videos get exactly the same broken time. There are also enough other inconsistent cases.

    


    One of the suggestions is to parse extraction out of first command, which generates video. I'm not sure that I won't also face negative numbers there, though.

    


    Most probably I miss much more easier solution. The only requirement is that is must be 100% precise.

    


    Thanks in advance !

    


  • Evolution #4445 (Nouveau) : Permettre de savoir si espace privé depuis tous les JS

    22 février 2020, par RastaPopoulos ♥

    En JS, il semble que SPIP ne fournisse rien pour savoir si on est dans l’admin ou pas. Or c’est indispensable au moins pour certains appels d’URL, savoir si on doit avoir ../ avant ou pas (par ex pour les API mais pas que).

    Le plugin Sélecteur générique fait ça en ajoutant depuis PHP une globale JS selecteur_test_espace_prive booléenne. Mais c’est pourri que chaque plugin doive faire ça. C’est SPIP qui devrait le fournir, comme test_espace_prive() en PHP quoi.

    Du coup soit faut fournir une globale du même style, mais en plus propre SPIP fournit déjà une classe "jquery.spip", du coup ça devrait être un attribut ou une méthode de cette classe.

    Par contre pour la place, à priori c’est pas dans ajaxCallback, puisque pour le faire solidement, c’est sûrement mieux que ce soit en utilisant la fonction PHP. Donc il faudrait que SPIP ajoute ça après le chargement de ajaxCallback, et qu’en PHP, ça rajoute un mini morceau de JS pour compléter jquery.spip avec un attribut qui dit où on est.

    Après dans n’importe quel JS de plugin, on ferait facilement if ($.spip.test_espace_prive()) { …