Recherche avancée

Médias (16)

Mot : - Tags -/mp3

Autres articles (38)

  • Soumettre améliorations et plugins supplémentaires

    10 avril 2011

    Si vous avez développé une nouvelle extension permettant d’ajouter une ou plusieurs fonctionnalités utiles à MediaSPIP, faites le nous savoir et son intégration dans la distribution officielle sera envisagée.
    Vous pouvez utiliser la liste de discussion de développement afin de le faire savoir ou demander de l’aide quant à la réalisation de ce plugin. MediaSPIP étant basé sur SPIP, il est également possible d’utiliser le liste de discussion SPIP-zone de SPIP pour (...)

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

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

Sur d’autres sites (9370)

  • Set input frame rate in pygame.Camera

    14 mai 2018, par Thomas Hubregtsen

    I am trying to get an input stream from a webcam on OS X

    self.capture = pygame.camera('/dev/video{}'.format(camera),
                                    (640, 480), 'RGB')

    I get an error (see below), but there are 2 pieces of information that I can not really stitch together. On first sight, it looks like I do not have the correct camera (not video4linux). However, when running

    ffmpeg -f avfoundation -list_devices true -i ""

    I get it listed

    [AVFoundation input device @ 0x7fbb45700340] [1] FULL HD 1080P Webcam

    The next part of the error talks about frame rate. It appears that the frame-rate is slightly off, and that I just next to select a different frame rate. Would this be possible with pygcam ? Would this solve my problem ?

    Error :

    Traceback (most recent call last):
     File "webcam2.py", line 129, in <module>
       VideoStreaming("52.191.118.156", 5558, 1)()
     File "webcam2.py", line 22, in __call__
       with self.get_camera_context(self.camera_id) as frames:
     File "webcam2.py", line 89, in __enter__
    size=(640, 480))
     File "/Users/q433100/temp/brew-master/lib/python3.6/site-packages/imageio/core/functions.py", line 129, in get_reader
    return format.get_reader(request)
     File "/Users/q433100/temp/brew-master/lib/python3.6/site-packages/imageio/core/format.py", line 169, in get_reader
       return self.Reader(self, request)
     File "/Users/q433100/temp/brew-master/lib/python3.6/site-packages/imageio/core/format.py", line 218, in __init__
       self._open(**self.request.kwargs.copy())
     File "/Users/q433100/temp/brew-master/lib/python3.6/site-packages/imageio/plugins/ffmpeg.py", line 327, in _open
       self._load_infos()
     File "/Users/q433100/temp/brew-master/lib/python3.6/site-packages/imageio/plugins/ffmpeg.py", line 476, in _load_infos
       (self.request._video, ffmpeg_err))
    IndexError: No video4linux camera at <video1>.

    FFMPEG STDERR OUTPUT:

    ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers
     built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
     configuration: --prefix=/Users/q433100/temp/brew-master/Cellar/ffmpeg/3.4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
     libavutil      55. 78.100 / 55. 78.100
     libavcodec     57.107.100 / 57.107.100
     libavformat    57. 83.100 / 57. 83.100
     libavdevice    57. 10.100 / 57. 10.100
     libavfilter     6.107.100 /  6.107.100
     libavresample   3.  7.  0 /  3.  7.  0
     libswscale      4.  8.100 /  4.  8.100
     libswresample   2.  9.100 /  2.  9.100
     libpostproc    54.  7.100 / 54.  7.100
    [avfoundation @ 0x7fbb9e000a00] Selected framerate (29.970030) is not supported by the device
    [avfoundation @ 0x7fbb9e000a00] Supported modes:
    [avfoundation @ 0x7fbb9e000a00]   160x120@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   176x144@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   320x240@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   352x288@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   640x360@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   640x480@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   800x600@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   1024x576@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   960x720@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   1280x720@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   1392x768@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   1280x960@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   1600x896@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   1920x1080@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   160x120@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   176x144@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   320x240@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   352x288@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   640x360@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   640x480@[30.000030 30.000030]fps
    [avfoundation @ 0x7fbb9e000a00]   800x600@[20.000000 20.000000]fps
    [avfoundation @ 0x7fbb9e000a00]   1024x576@[8.000000 8.000000]fps
    [avfoundation @ 0x7fbb9e000a00]   960x720@[15.000015 15.000015]fps
    1: Input/output error
    </video1></module>

    Update :
    If I try to force one of the mentioned supported frame rates with ffmped, I get a new error

    $ffmpeg -f avfoundation -r 30.000030 -i "1" out.mpg
    ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers
     built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
     configuration: --prefix=/Users/q433100/temp/brew-master/Cellar/ffmpeg/3.4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
     libavutil      55. 78.100 / 55. 78.100
     libavcodec     57.107.100 / 57.107.100
     libavformat    57. 83.100 / 57. 83.100
     libavdevice    57. 10.100 / 57. 10.100
     libavfilter     6.107.100 /  6.107.100
     libavresample   3.  7.  0 /  3.  7.  0
     libswscale      4.  8.100 /  4.  8.100
     libswresample   2.  9.100 /  2.  9.100
     libpostproc    54.  7.100 / 54.  7.100
    [avfoundation @ 0x7fb3c8802600] An error occurred: The activeVideoMinFrameDuration passed is not supported by the device.  Use -activeFormat.videoSupportedFrameRateRanges to discover valid ranges.1: Input/output error

    Update 2 :
    Setting the input frame rate to 15 directly in ffmpeg works. Now I just need to figure out how to do this in python with pygame.camera

    $ ffmpeg -f avfoundation -r 15.000015 -i "1" out.avi
  • Bash script : automate ffmpeg encoding for mpeg-dash

    13 février 2018, par Massimo Vantaggio

    I’m writing a bash file to create video encoding and concatenation for dash live streaming use,
    Basically it read an input video folder, encodes all videos into three resolution formats, after that it concatening them to create three adaption sets.

    DIAGRAM :

    enter image description here

    This script checks for fps conformance,

    force/scaling resolution if the input is not 1920 x 1080p,

    Insert the channel logo png,

    Cut the end of all videos input in order to make them finish with closed gop, this to ensure that there are not videos with audio and video track with different lenght.

    ISSUE :

    Actually I’m not sure that the concatenation process respects the closed GOP alignment as it after the encoding..
    I try to cut also the end of the concatenation result in order to make it finish without decimals on a closed gop too, but im unable to erase all decimals from the total duration :

    total duration in seconds: 826.795000
    total duration corrected in seconds: 826

    But the real duration measured by ffprobe is

    824.044000

    I try to check keyframes alignment with mp4box has they teach without any result :

    MP4Box -info TRACK_ID source1.mp4 2>&amp;1 | grep GOP

    This is the first time that i work with "video scripts" and probably i don’t know what input to give for TRACK_ID

    BASH SCRIPT :

    #!/bin/bash
    #CANCAT 0.2

    cd input
    times=()
    fps=()
    for f in *.mp4; do

       _t=$(ffprobe -i "$f" -show_entries format=duration -v quiet -of csv="p=0")
       times+=("$_t")

       _f=$(ffmpeg -i "$f" 2>&amp;1 | sed -n "s/.*, \\(.*\\) fp.*/\\1/p")
       fps+=("$_f")
    done
    #SUM ALL DURATIONS
    TOTALDURATION=$( echo "${times[@]}" | sed 's/ /+/g' | bc )
    #DELETE DECIMAL
    DURROUND=$(echo "$TOTALDURATION" | cut -d'.' -f1)
    #GET REST OF DIVISION BY 2 AS GOP
    TOTDELTA="$((DURROUND%2))"
    #SUBTRACT DELTA FROM TOTAL DURATION
    TOTDUR="$(($DURROUND-$TOTDELTA))"

    #GET NUMBER OF ELEMENTS IN FPS ARRAY  
    tLen=${#fps[@]}
    #CHECK FPS EQUALITY    
    for tLen in "${fps[@]:1}"; do
       if [[ $tLen != ${fps[0]} ]]; then
           printf "WARNING: VIDEO’S FRAME-RATE ARE NOT EQUALS, THE PROCESS CAN’T START."
           printf "%s\\0" "${fps[@]}" |
               sort -zu |
               xargs -0 printf " %s"
           printf "\\n"
          exit 1
       fi
    done
    for f in *.mp4; do
    #GET DURATION OF EACH VIDEO
    DUR="$(ffprobe -i "$f" -show_entries format=duration -v quiet -of csv="p=0")"
    DUR=$(echo "$DUR" | cut -d'.' -f1) # DELETE DECIMAL
    #GET FPS OF EACH VIDEO
    FPS="$(ffmpeg -i "$f" 2>&amp;1 | sed -n "s/.*, \(.*\) fp.*/\1/p")"
    #ROUND FPS OF EACH VIDEO
    FPSC=$( echo "($FPS+0.5)/1" | bc )
    #REMOVE EXTENSION FROM VIDEO FILE NAME
    NAME=$(echo "$f" | cut -d'.' -f1)

    #GET GOP
    GOP="$((FPSC*2))"
    DELTADUR="$((DUR%2))"
    DUR="$(($DUR-$DELTADUR))"

    #ENCODE 1080p
    ffmpeg -y -i "$f" -i ../logo/logo.png -c:a aac -b:a 384k -ar 48000 -ac 2 -async 1 -c:v libx264 -x264opts keyint=$GOP:min-keyint=$GOP:no-scenecut -bf 0 -r $FPSC -b:v 4800k -maxrate 4800k -bufsize 3000k -profile:v main -crf 22 -t $DUR -filter_complex "[0:v][1:v]overlay=main_w-overlay_w-10:10,scale=1920:1080,setsar=1" ../buffer/${NAME}-1080.mp4

    #ENCODE 720p
    ffmpeg -y -i ../buffer/${NAME}-1080.mp4 -c:a aac -b:a 256k -ar 48000 -ac 2 -async 1 -c:v libx264 -x264opts keyint=$GOP:min-keyint=$GOP:no-scenecut -bf 0 -s 1280x720 -r $FPSC -b:v 2400k -maxrate 2400k -bufsize 1500k -profile:v main -crf 22 -t $DUR ../buffer/${NAME}-720.mp4

    #ENCODE 360p
    ffmpeg -y -i ../buffer/${NAME}-720.mp4 -c:a aac -b:a 128k -ar 48000 -ac 2 -async 1 -c:v libx264 -x264opts keyint=$GOP:min-keyint=$GOP:no-scenecut -bf 0 -s 640x360 -r $FPSC -b:v 800k -maxrate 800k -bufsize 500k -profile:v main -crf 22 -t $DUR ../buffer/${NAME}-360.mp4
    done


    #enter in buffer
    cd ..
    cd buffer

    #CONCAT 1080 SET
    # with a bash for loop
    for f in ./*1080.mp4; do echo "file '$f'" >> 1080list.txt; done

    ffmpeg -f concat -safe 0 -i 1080list.txt -t $TOTDUR -c copy ../output/1080set.mp4

    #CONCAT 720 SET
    # with a bash for loop
    for f in ./*720.mp4; do echo "file '$f'" >> 720list.txt; done

    ffmpeg -f concat -safe 0 -i 720list.txt -t $TOTDUR -c copy ../output/720set.mp4

    #CONCAT 360 SET
    # with a bash for loop
    for f in ./*360.mp4; do echo "file '$f'" >> 360list.txt; done

    ffmpeg -f concat -safe 0 -i 360list.txt -t $TOTDUR -c copy ../output/360set.mp4

    #CLEAN BUFFER
    rm *.mp4
    rm *.txt

    echo "CONCAT COMPLETED:"
    echo "frame-rate: $fps"
    echo "total duration in seconds: $TOTALDURATION"
    echo "total duration corrected in seconds: $TOTDUR"

    The full file with relative folders :

    BASH SCRIPT WITH FOLDERS

    RESULT VIDEO

    There is someone who can help me to understand why I can not eliminate the decimals of the total duration during concat ?
    And how to check overall keyframes allignment ?
    Also any impovement that i ignore is welcome !

    Thanks a lot !

    Massimo

  • Evolution #4102 : Ordre des inclures dans cache/charger_plugins_options.php

    26 février 2018, par RastaPopoulos ♥

    TL ;DR : problème résolu, c’est le plugin Albums qui ne fait pas bien les choses + mais un pipeline à l’initialisation est forcément utile et j’en ai déjà eu besoin.

    @azerttyu Mais non, on ne doit surtout pas changer l’ordre des fichiers, il y a des milliers (et peut-être même des milliards :p) de cas dans la nature qui se basent tous sur le fait que l’ordre logique est le même que partout ailleurs, celui de l’ordre des pipelines et celui de l’ordre de toutes les surcharges de fichiers dans SPIP, càd l’ordre du PATH. D’une ce serait incohérent mais surtout c’est pas un nouveau truc ajouté, là on parle des options.php déjà utilisé partout, donc non on ne doit rien changer à l’ordre actuel.

    Si ya un truc qui doit changer c’est sur un ajout, pas sur un truc méga utilisé partout.

    Dans tous les cas, comme dit marcimat, faire de la config avec des define() c’est vraiment pas super, et encore plus définir des define() dans le options.php du plugin qui en a besoin ! Après le problème c’est quand le define() est justement utilisé directement dans ce options.php… Mais s’il ne l’est pas, le define() doit être défini dans le inc/truc, action/truc, etc, ce qui permet bien à d’autres de le définir en amont dans leur options.php.

    D’ailleurs placido a donné des exemples précis, en parlant du plugin Album. Est-ce que celui-ci utilise ces deux define() dans le code de son options.php ? Si ce n’est pas le cas c’est lui qui doit être modifié pour définir ces variables ailleurs.
    La réponse est là :
    https://zone.spip.org/trac/spip-zone/browser/_plugins_/albums/trunk/albums_options.php

    Comme vous le voyez, AUCUNE de ces variables n’est utilisée à cette endroit là. Donc c’est le plugin Albums qui ne fait pas bien les choses. Il faut absolument déplacer l’ensemble de ces variables dans les fichiers où elles sont vraiment utilisés.

    Et du coup c’est fini, problème résolu, c’est le plugin source qui était en problème, et une fois corrigé placido n’a plus de problème à définir ces valeurs avant.

    Les cas où des define() sont définis ET utilisés directement dans le options.php sont méga méga rares, et je crois même qu’il n’y a que Bonux qui fait ça, pour la prévisu temporaire :
    https://zone.spip.org/trac/spip-zone/browser/_plugins_/spip-bonux-3/spip_bonux_options.php#L25
    (et ça m’avait bien saoulé pour le surcharger, j’avais fini par le définir dans les mes_options.php du projet alors que je ne l’utilise jamais et que je voulais le faire dans le plugin de mon projet)

    (Par ailleurs, dans tous les cas ce serait bien qu’il y ait un pipeline/trigger au tout début de SPIP, j’avais déjà eu le besoin pour faire des choses avant la connexion/cookie etc, pour connecter les gens par Facebook ou autre truc extérieur au tout démarrage, et pour le moment j’avais dû le faire dans mon action PHP à moi, au lieu de pouvoir le faire dans un truc générique qui aurait valu pour n’importe quel hit PHP, et du coup j’ai jamais pu en faire un plugin générique. Mais faudrait peut-être faire un ticket dédié pour demander cet ajout.)