Recherche avancée

Médias (0)

Mot : - Tags -/diogene

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (58)

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

  • La file d’attente de SPIPmotion

    28 novembre 2010, par

    Une file d’attente stockée dans la base de donnée
    Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
    Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

Sur d’autres sites (12759)

  • Error while compile ffmpeg on cygwin for android [closed]

    7 novembre 2011, par Satheesh

    Possible Duplicate :
    Error when run the command ./build.sh in FFmpeg decoder in Android

    I have try to implement the ffmpeg decoding library in my android project.Dowload FFmpeg.I got the ffmpeg library from the bambuser client version and unpack that into the project jni folder.Then i run the extract command(./extract.sh) in cygwin compiler tool(its becoz am using windows os) after that am trying to build ffmpeg library using the command ./build.sh

    I have googled a lot but i cant make it work. Please help me out from this.

    NDK version : NDKr5b Cygwin tool version : 1.7

    My build.sh file is

    /************Command starts here******************/

    #!/bin/bash

    if [ "$NDK" = "" ]; then
       echo NDK variable not set, assuming ${HOME}/android-ndk
       export NDK=${HOME}/android-ndk
    fi

    SYSROOT=$NDK/platforms/android-8/arch-arm
    # Expand the prebuilt/* path into the correct one
    TOOLCHAIN=`echo $NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows`
    export PATH=$TOOLCHAIN/bin:$PATH

    rm -rf build/ffmpeg
    mkdir -p build/ffmpeg
    cd ffmpeg

    # Don't build any neon version for now
    for version in armv5te armv7a
    do

       DEST=../build/ffmpeg
       FLAGS="--target-os=linux --arch=arm"
       FLAGS="$FLAGS --cross-prefix=arm-linux-androideabi- --arch=arm"
       FLAGS="$FLAGS --sysroot=$SYSROOT"
       FLAGS="$FLAGS --soname-prefix=/data/data/org.rifluxyss.androiddev.livewallpapaerffmpeg/lib/"
       FLAGS="$FLAGS --enable-cross-compile --cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc"
       FLAGS="$FLAGS --enable-shared --disable-symver"
       FLAGS="$FLAGS --nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm"
       FLAGS="$FLAGS --ar=$TOOLCHAIN/bin/arm-linux-androideabi-ar"
       FLAGS="$FLAGS --ranlib=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib"
       FLAGS="$FLAGS --enable-small --optimization-flags=-O2"
       FLAGS="$FLAGS --enable-encoder=mpeg2video --enable-encoder=nellymoser --enable-memalign-hack "
       FLAGS="$FLAGS --disable-ffmpeg --disable-ffplay"
       FLAGS="$FLAGS --disable-ffserver --disable-ffprobe --disable-encoders"
       FLAGS="$FLAGS --disable-muxers --disable-devices --disable-protocols"
       FLAGS="$FLAGS --enable-protocol=file --enable-avfilter"
       FLAGS="$FLAGS --disable-network --enable-pthreads --enable-avutil"
       FLAGS="$FLAGS --disable-avdevice --disable-asm --extra-libs=-lgcc"

       case "$version" in
           neon)
               EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon"
               EXTRA_LDFLAGS="-Wl,--fix-cortex-a8"
               # Runtime choosing neon vs non-neon requires
               # renamed files
               ABI="armeabi-v7a"
               ;;
           armv7a)
               EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp"
               EXTRA_LDFLAGS=""
               ABI="armeabi-v7a"
               ;;
           *)
               EXTRA_CFLAGS=""
               EXTRA_LDFLAGS=""
               ABI="armeabi"
               ;;
       esac
       DEST="$DEST/$ABI"
       FLAGS="$FLAGS --prefix=$DEST"

       mkdir -p $DEST
       echo $FLAGS --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="$EXTRA_LDFLAGS" > $DEST/info.txt
       ./configure $FLAGS --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="$EXTRA_LDFLAGS" | tee $DEST/configuration.txt
       [ $PIPESTATUS == 0 ] || exit 1
       make clean
       make -j4 || exit 1
       make install || exit 1

    done

    /****************Command ends here************************/

    While compiling this am getting error when linking the archive files into .so files.

    The error is look like
    "arm-linux-androideabi/bin/ld.exe : cannot find -lavutil
    Collect2:ld returned 1 exit status
    make :[libaswscale/libswscale.so] Error 1
    make :
    waititng for unfinished jobs...."

    Please anyone help me to out from this.

  • Senior Software Engineer for Enterprise Analytics Platform

    28 janvier 2016, par Matthieu Aubry — Uncategorized

    We’re looking for a lead developer to work on Piwik Enterprise Analytics core platform software. We have some exciting challenges to solve and need you !

    You’ll be working with both fellow employees and our open-source community. Piwik staff lives in New Zealand, Europe (Poland, Germany) and in the U.S. We do the vast majority of our collaboration online.

    We are a small, flexible team, so when you come aboard, you will play an integral part in engineering. As a leader you’ll help us to prioritise work and grow our community. You’ll help to create a welcoming environment for new contributors and set an example with your development practices and communications skills. You will be working closely with our CTO to build a future for Piwik.

    Key Responsibilities

    • Strong competency coding in PHP and JavaScript.
    • Scaling existing backend system to handle ever increasing amounts of traffic and new product requirements.
    • Outstanding communication and collaboration skills.
    • Drive development and documentation of internal and external APIs (Piwik is an open platform).
    • Help make our development practices better and reduce friction from idea to deployment.
    • Mentor junior engineers and set the stage for personal growth.

    Minimum qualifications

    • 5+ years of experience in product development, security, usable interface design.
    • 5+ years experience building successful production software systems.
    • Strong competency in PHP5 and JavaScript application development.
    • Skill at writing tests and reviewing code.
    • Strong analytical skills.

    Location

    • Remote work position !
    • or you can join us in our office based in Wellington, New Zealand or in Wrocław, Poland.

    Benefits

    • Competitive salary.
    • Remote work is possible.
    • Yearly meetup with the whole team abroad.
    • Be part of a successful open source company and community.
    • In our Wellington (NZ) and Wroclaw (PL) offices : snacks, coffee, nap room, Table football, Ping pong…
    • Regular events.
    • Great team of people.
    • Exciting projects.

    Learn more

    Learn more what it’s like to work on Piwik in our blog post

    About Piwik

    At Piwik we develop the leading open source web analytics platform, used by more than one million websites worldwide. Our vision is to help the world liberate their analytics data by building the best open alternative to Google Analytics.

    The Piwik platform collects, stores and processes a lot of information : hundreds of millions of data points each month. We create intuitive, simple and beautiful reports that delight our users.

    Apply online

    To apply for this position, please Apply online here. We look forward to receiving your applications !

  • Modifying FFmpeg and OpenCV source code to capture the RTP timestamp for each packet in NTP format

    22 août 2019, par Fr0sty

    I was trying a little experiment in order to get the timestamps of the RTP packets using the VideoCapture class from Opencv’s source code in python, also had to modify FFmpeg to accommodate the changes in Opencv.

    Since I read about the RTP packet format.Wanted to fiddle around and see if I could manage to find a way to get the NTP timestamps. Was unable to find any reliable help in trying to get RTP timestamps. So tried out this little hack.

    Credits to ryantheseer on github for the modified code.

    Version of FFmpeg : 3.2.3
    Version of Opencv : 3.2.0

    In Opencv source code :

    modules/videoio/include/opencv2/videoio.hpp :

    Added two getters for the RTP timestamp :

    .....  
       /** @brief Gets the upper bytes of the RTP time stamp in NTP format (seconds).
       */
       CV_WRAP virtual int64 getRTPTimeStampSeconds() const;

       /** @brief Gets the lower bytes of the RTP time stamp in NTP format (fraction of seconds).
       */
       CV_WRAP virtual int64 getRTPTimeStampFraction() const;
    .....

    modules/videoio/src/cap.cpp :

    Added an import and added the implementation of the timestamp getter :

    ....
    #include <cstdint>
    ....
    ....
    static inline uint64_t icvGetRTPTimeStamp(const CvCapture* capture)
    {
     return capture ? capture->getRTPTimeStamp() : 0;
    }
    ...
    </cstdint>

    Added the C++ timestamp getters in the VideoCapture class :

    ....
    /**@brief Gets the upper bytes of the RTP time stamp in NTP format (seconds).
    */
    int64 VideoCapture::getRTPTimeStampSeconds() const
    {
       int64 seconds = 0;
       uint64_t timestamp = 0;
       //Get the time stamp from the capture object
       if (!icap.empty())
           timestamp = icap->getRTPTimeStamp();
       else
           timestamp = icvGetRTPTimeStamp(cap);
       //Take the top 32 bytes of the time stamp
       seconds = (int64)((timestamp &amp; 0xFFFFFFFF00000000) / 0x100000000);
       return seconds;
    }

    /**@brief Gets the lower bytes of the RTP time stamp in NTP format (seconds).
    */
    int64 VideoCapture::getRTPTimeStampFraction() const
    {
       int64 fraction = 0;
       uint64_t timestamp = 0;
       //Get the time stamp from the capture object
       if (!icap.empty())
           timestamp = icap->getRTPTimeStamp();
       else
           timestamp = icvGetRTPTimeStamp(cap);
       //Take the bottom 32 bytes of the time stamp
       fraction = (int64)((timestamp &amp; 0xFFFFFFFF));
       return fraction;
    }
    ...

    modules/videoio/src/cap_ffmpeg.cpp :

    Added an import :

    ...
    #include <cstdint>
    ...
    </cstdint>

    Added a method reference definition :

    ...
    static CvGetRTPTimeStamp_Plugin icvGetRTPTimeStamp_FFMPEG_p = 0;
    ...

    Added the method to the module initializer method :

    ...
    if( icvFFOpenCV )
    ...
    ...
     icvGetRTPTimeStamp_FFMPEG_p =
                   (CvGetRTPTimeStamp_Plugin)GetProcAddress(icvFFOpenCV, "cvGetRTPTimeStamp_FFMPEG");
    ...
    ...
    icvWriteFrame_FFMPEG_p != 0 &amp;&amp;
    icvGetRTPTimeStamp_FFMPEG_p !=0)
    ...

    icvGetRTPTimeStamp_FFMPEG_p = (CvGetRTPTimeStamp_Plugin)cvGetRTPTimeStamp_FFMPEG;

    Implemented the getter interface :

    ...
    virtual uint64_t getRTPTimeStamp() const
       {
           return ffmpegCapture ? icvGetRTPTimeStamp_FFMPEG_p(ffmpegCapture) : 0;
       }
    ...

    In FFmpeg’s source code :

    libavcodec/avcodec.h :

    Added the NTP timestamp definition to the AVPacket struct :

    typedef struct AVPacket {
    ...
    ...
    uint64_t rtp_ntp_time_stamp;
    }

    libavformat/rtpdec.c :

    Store the ntp time stamp in the struct in the finalize_packet method :

    static void finalize_packet(RTPDemuxContext *s, AVPacket *pkt, uint32_t timestamp)
    {
       uint64_t offsetTime = 0;
       uint64_t rtp_ntp_time_stamp = timestamp;
    ...
    ...
    /*RM: Sets the RTP time stamp in the AVPacket */
       if (!s->last_rtcp_ntp_time || !s->last_rtcp_timestamp)
           offsetTime = 0;
       else
           offsetTime = s->last_rtcp_ntp_time - ((uint64_t)(s->last_rtcp_timestamp) * 65536);
       rtp_ntp_time_stamp = ((uint64_t)(timestamp) * 65536) + offsetTime;
       pkt->rtp_ntp_time_stamp = rtp_ntp_time_stamp;

    libavformat/utils.c :

    Copy the ntp time stamp from the packet to the frame in the read_frame_internal method :

    static int read_frame_internal(AVFormatContext *s, AVPacket *pkt)
    {
       ...
       uint64_t rtp_ntp_time_stamp = 0;
    ...
       while (!got_packet &amp;&amp; !s->internal->parse_queue) {
             ...
             //COPY OVER the RTP time stamp TODO: just create a local copy
             rtp_ntp_time_stamp = cur_pkt.rtp_ntp_time_stamp;


             ...


     #if FF_API_LAVF_AVCTX
       update_stream_avctx(s);
     #endif

     if (s->debug &amp; FF_FDEBUG_TS)
         av_log(s, AV_LOG_DEBUG,
              "read_frame_internal stream=%d, pts=%s, dts=%s, "
              "size=%d, duration=%"PRId64", flags=%d\n",
              pkt->stream_index,
              av_ts2str(pkt->pts),
              av_ts2str(pkt->dts),
              pkt->size, pkt->duration, pkt->flags);
    pkt->rtp_ntp_time_stamp = rtp_ntp_time_stamp; #Just added this line in the if statement.
    return ret;

    My python code to utilise these changes :

    import cv2

    uri = 'rtsp://admin:password@192.168.1.67:554'
    cap = cv2.VideoCapture(uri)

    while True:
       frame_exists, curr_frame = cap.read()
       # if frame_exists:
       k = cap.getRTPTimeStampSeconds()
       l = cap.getRTPTimeStampFraction()
       time_shift = 0x100000000
       #because in the getRTPTimeStampSeconds()
       #function, seconds was multiplied by 0x10000000
       seconds = time_shift * k
       m = (time_shift * k) + l
       print("Imagetimestamp: %i" % m)
    cap.release()

    What I am getting as my output :

       Imagetimestamp: 0
       Imagetimestamp: 212041451700224
       Imagetimestamp: 212041687629824
       Imagetimestamp: 212041923559424
       Imagetimestamp: 212042159489024
       Imagetimestamp: 212042395418624
       Imagetimestamp: 212042631348224
       ...

    What astounded me the most was that when i powered off the ip camera and powered it back on, timestamp would start from 0 then quickly increments. I read NTP time format is relative to January 1, 1900 00:00. Even when I tried calculating the offset, and accounting between now and 01-01-1900, I still ended up getting a crazy high number for the date.

    Don’t know if I calculated it wrong. I have a feeling it’s very off or what I am getting is not the timestamp.