Recherche avancée

Médias (0)

Mot : - Tags -/auteurs

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

Autres articles (61)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Mise à jour de la version 0.1 vers 0.2

    24 juin 2013, par

    Explications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
    Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...)

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

Sur d’autres sites (11431)

  • ffmpeg : split mp3, encode aac and join produce artifacts and empty space

    18 juin 2016, par aganeiro

    Source mp3

       ffprobe -show_frames -select_streams a -print_format csv -show_entries  
    frame=index,pkt_dts_time ~/demo_files/000.orig.5352357791787324393.mp3
    frame,0.000000
    frame,0.026122
    frame,0.052245
    frame,0.078367

    every part I make with command, -ss position and -t time I got and calculate from previous ffprobe output

       /home/xxx/bin/ffmpeg -analyzeduration 50000000 -probesize 50000000  
    -ss 0.000000 -i /home/xxx/demo_files/000.orig.5352357791787324393.mp3  
    -s 0 -t 0.926276 -flags +global_header -c:a libfdk_aac -strict -2  
    -b:a 64k -ac 2 -ar 44100 -vn -f mpegts -y /tmp/p0.ts

       /home/xxx/bin/ffmpeg -analyzeduration 50000000 -probesize 50000000  
    -ss 1.018776 -i /home/xxx/demo_files/000.orig.5352357791787324393.mp
    -s 0 -t 0.900153 -flags +global_header -c:a libfdk_aac -strict -2  
    -b:a 64k -ac 2 -ar 44100 -vn -f mpegts -y /tmp/p1.ts

    it’s produce

    [mp3 @ 0x39ca980] Estimating duration from bitrate, this may be inaccurate
       Input #0, mp3, from '/home/xxx/demo_files/000.orig.5352357791787324393.mp3':
       Duration: 00:05:17.20, start: 0.000000, bitrate: 320 kb/s
       Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
       [mpegts @ 0x39ccea0] Using AVStream.codec to pass codec  
    parameters to muxers is deprecated, use AVStream.codecpar instead.
       [mpegts @ 0x39ccea0] frame size not set
       Output #0, mpegts, to '/tmp/p0.ts':
         Metadata:
           encoder         : Lavf57.38.100
           Stream #0:0: Audio: aac (libfdk_aac), 44100 Hz, stereo, s16, 64 kb/s
           Metadata:
             encoder         : Lavc57.46.100 libfdk_aac
       Stream mapping:
         Stream #0:0 -> #0:0 (mp3 (native) -> aac (libfdk_aac))
       Press [q] to stop, [?] for help
       size=      10kB time=00:00:00.92 bitrate=  92.3kbits/s speed=39.8x    
       video:0kB audio:8kB subtitle:0kB other streams:0kB global  
    headers:0kB muxing overhead: 24.619143%
         Duration: 00:00:00.63, start: 1.400000, bitrate: 127 kb/s

    Part info

       ffmpeg -hide_banner -i /tmp/p0.ts 2>&1 |grep -P 'Duration|Stream'
       Duration: 00:00:00.95, start: 1.400000, bitrate: 90 kb/s
       Stream #0:0[0x100]: Audio: aac (LC) ([15][0][0][0] / 0x000F),  
    44100 Hz, stereo, fltp, 68 kb/s

    Then I join all parts together with

       /home/xxx/bin/ffmpeg -i /tmp/p0.ts -i /tmp/p1.ts -i /tmp/p2.ts  
    -i /tmp/p3.ts -i /tmp/p4.ts -i /tmp/p5.ts -filter_complex  
    "[0:a]asetpts=PTS-STARTPTS[a0];[1:a]asetpts=PTS-STARTPTS[a1];  
    [2:a]asetpts=PTS-STARTPTS[a2];[3:a]asetpts=PTS-STARTPTS[a3];  
    [4:a]asetpts=PTS-STARTPTS[a4];[5:a]asetpts=PTS-STARTPTS[a5];  
    [a0][a1][a2][a3][a4][a5] concat=n=6:v=0:a=1 [a]"  
    -map [a] -strict experimental -fflags +genpts -flags +global_header  
    -c libfdk_aac -bsf:a aac_adtstoasc -y /tmp/res.m4a

    waveform of original and joined on the left
    i68.tinypic.com/magcnl.jpg

    So, as you can see joined have delays and waveforms starte later. Why ? maybe it depens that all encoded parts have start time 1.400000, ?? How to set start time to 0 on encode ?

    Also I tried to cut empty space on joining with filter_complex but result stil not good and contains artifacts because trim position looks different in every part.

       /home/xxx/bin/ffmpeg -i /tmp/p0.ts -i /tmp/p1.ts -i /tmp/p2.ts  
    -i /tmp/p3.ts -i /tmp/p4.ts -i /tmp/p5.ts -filter_complex  
    "[0:a]atrim=0.020000,asetpts=PTS-STARTPTS[a0];  
    [1:a]atrim=0.020000,asetpts=PTS-STARTPTS[a1];  
    [2:a]atrim=0.020000,asetpts=PTS-STARTPTS[a2];  
    [3:a]atrim=0.020000,asetpts=PTS-STARTPTS[a3];  
    [4:a]atrim=0.020000,asetpts=PTS-STARTPTS[a4];  
    [5:a]atrim=0.020000,asetpts=PTS-STARTPTS[a5];  
    [a0][a1][a2][a3][a4][a5] concat=n=6:v=0:a=1 [a]"  
    -map [a] -strict experimental -fflags +genpts  
    -flags +global_header -c libfdk_aac -bsf:a aac_adtstoasc  
    -y /tmp/res.m4a

    Whyyyy and how to solve it ?

  • Affectiva drops every second frame

    19 juin 2019, par machinery

    I am running Affectiva SDK 4.0 on a GoPro video recording. I’m using a C++ program on Ubuntu 16.04. The GoPro video was recorded with 60 fps. The problem is that Affectiva only provides results for around half of the frames (i.e. 30 fps). If I look at the timestamps provided by Affectiva, the last timestamp matches the video duration, that means Affectiva somehow skips around every second frame.

    Before running Affectiva I was running ffmpeg with the following command to make sure that the video has a constant frame rate of 60 fps :

    ffmpeg -i in.MP4 -vf -y -vcodec libx264 -preset medium -r 60 -map_metadata 0:g -strict -2 out.MP4 null 2>&1

    When I inspect the presentation timestamp using ffprobe -show_entries frame=pict_type,pkt_pts_time -of csv -select_streams v in.MP4 I’m getting for the raw video the following values :

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/media/GoPro_concat/GoPro_concat.MP4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf58.20.100
     Duration: 01:14:46.75, start: 0.000000, bitrate: 15123 kb/s
       Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1280x720 [SAR 1:1 DAR 16:9], 14983 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
       Metadata:
         handler_name    :  GoPro AVC
         timecode        : 13:17:26:44
       Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)
       Metadata:
         handler_name    :  GoPro AAC
       Stream #0:2(eng): Data: none (tmcd / 0x64636D74)
       Metadata:
         handler_name    :  GoPro AVC
         timecode        : 13:17:26:44
    Unsupported codec with id 0 for input stream 2
    frame,0.000000,I
    frame,0.016683,P
    frame,0.033367,P
    frame,0.050050,P
    frame,0.066733,P
    frame,0.083417,P
    frame,0.100100,P
    frame,0.116783,P
    frame,0.133467,I
    frame,0.150150,P
    frame,0.166833,P
    frame,0.183517,P
    frame,0.200200,P
    frame,0.216883,P
    frame,0.233567,P
    frame,0.250250,P
    frame,0.266933,I
    frame,0.283617,P
    frame,0.300300,P
    frame,0.316983,P
    frame,0.333667,P
    frame,0.350350,P
    frame,0.367033,P
    frame,0.383717,P
    frame,0.400400,I
    frame,0.417083,P
    frame,0.433767,P
    frame,0.450450,P
    frame,0.467133,P
    frame,0.483817,P
    frame,0.500500,P
    frame,0.517183,P
    frame,0.533867,I
    frame,0.550550,P
    frame,0.567233,P
    frame,0.583917,P
    frame,0.600600,P
    frame,0.617283,P
    frame,0.633967,P
    frame,0.650650,P
    frame,0.667333,I
    frame,0.684017,P
    frame,0.700700,P
    frame,0.717383,P
    frame,0.734067,P
    frame,0.750750,P
    frame,0.767433,P
    frame,0.784117,P
    frame,0.800800,I
    frame,0.817483,P
    frame,0.834167,P
    frame,0.850850,P
    frame,0.867533,P
    frame,0.884217,P
    frame,0.900900,P
    frame,0.917583,P
    frame,0.934267,I
    frame,0.950950,P
    frame,0.967633,P
    frame,0.984317,P
    frame,1.001000,P
    frame,1.017683,P
    frame,1.034367,P
    frame,1.051050,P
    frame,1.067733,I
    ...

    I have uploaded the full output on OneDrive.

    If I run Affectiva on the raw video (not processed by ffmpeg) I face the same problem of dropped frames. I was using Affectiva with affdex::VideoDetector detector(60);

    Is there a problem with the ffmpeg command or with Affectiva ?

    Edit : I think I have found out where the problem could be. It seems that Affectiva is not processing the whole video but just stops after a certain amount of processed frames without any error message. Below I have posted the C++ code I’m using. In the onProcessingFinished() method I’m printing something to the console when the processing is finished. But this message is never printed, so Affectiva never comes to the end.

    Is there something wrong with my code or should I encode the videos into another format than MP4 ?

    #include "VideoDetector.h"
    #include "FrameDetector.h"

    #include <iostream>
    #include <fstream>
    #include <mutex>
    #include

    std::mutex m;
    std::condition_variable conditional_variable;
    bool processed = false;

    class Listener : public affdex::ImageListener {
    public:
       Listener(std::ofstream * fout) {
           this->fout = fout;
     }
     virtual void onImageCapture(affdex::Frame image){
         //std::cout &lt;&lt; "called";
     }
     virtual void onImageResults(std::map faces, affdex::Frame image){
         //std::cout &lt;&lt; faces.size() &lt;&lt; " faces detected:" &lt;&lt; std::endl;

         for(auto&amp; kv : faces){
           (*this->fout) &lt;&lt; image.getTimestamp() &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.first &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.emotions.joy &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.emotions.fear &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.emotions.disgust &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.emotions.sadness &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.emotions.anger &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.emotions.surprise &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.emotions.contempt &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.emotions.valence &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.emotions.engagement &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.measurements.orientation.pitch &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.measurements.orientation.yaw &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.measurements.orientation.roll &lt;&lt; ",";
           (*this->fout) &lt;&lt; kv.second.faceQuality.brightness &lt;&lt; std::endl;


           //std::cout &lt;&lt;  kv.second.emotions.fear &lt;&lt; std::endl;
           //std::cout &lt;&lt;  kv.second.emotions.surprise  &lt;&lt; std::endl;
           //std::cout &lt;&lt;  (int) kv.second.emojis.dominantEmoji;
         }
     }
    private:
       std::ofstream * fout;
    };

    class ProcessListener : public affdex::ProcessStatusListener{
    public:
       virtual void onProcessingException (affdex::AffdexException ex){
           std::cerr &lt;&lt; "[Error] " &lt;&lt; ex.getExceptionMessage();
       }
       virtual void onProcessingFinished (){
           {
               std::lock_guard lk(m);
               processed = true;
               std::cout &lt;&lt; "[Affectiva] Video processing finised." &lt;&lt; std::endl;
           }
           conditional_variable.notify_one();
       }
    };

    int main(int argc, char ** argsv)
    {
       affdex::VideoDetector detector(60, 1, affdex::FaceDetectorMode::SMALL_FACES);
       //affdex::VideoDetector detector(60, 1, affdex::FaceDetectorMode::LARGE_FACES);
       std::string classifierPath="/home/wrafael/affdex-sdk/data";
       detector.setClassifierPath(classifierPath);
       detector.setDetectAllEmotions(true);

       // Output
       std::ofstream fout(argsv[2]);
       fout &lt;&lt; "timestamp" &lt;&lt; ",";
       fout &lt;&lt; "faceId" &lt;&lt; ",";
       fout &lt;&lt; "joy" &lt;&lt; ",";
       fout &lt;&lt; "fear" &lt;&lt; ",";
       fout &lt;&lt; "disgust" &lt;&lt; ",";
       fout &lt;&lt; "sadness" &lt;&lt; ",";
       fout &lt;&lt; "anger" &lt;&lt; ",";
       fout &lt;&lt; "surprise" &lt;&lt; ",";
       fout &lt;&lt; "contempt" &lt;&lt; ",";
       fout &lt;&lt; "valence" &lt;&lt; ",";
       fout &lt;&lt; "engagement"  &lt;&lt; ",";
       fout &lt;&lt; "pitch" &lt;&lt; ",";
       fout &lt;&lt; "yaw" &lt;&lt; ",";
       fout &lt;&lt; "roll" &lt;&lt; ",";
       fout &lt;&lt; "brightness" &lt;&lt; std::endl;

       Listener l(&amp;fout);
       ProcessListener pl;
       detector.setImageListener(&amp;l);
       detector.setProcessStatusListener(&amp;pl);

       detector.start();
       detector.process(argsv[1]);

       // wait for the worker
       {
       std::unique_lock lk(m);
       conditional_variable.wait(lk, []{return processed;});
       }
       fout.flush();
       fout.close();
    }
    </mutex></fstream></iostream>

    Edit 2 : I have now digged further into the problem and looked only at one GoPro file with a duration of 19min 53s (GoPro splits the recordings). When I run Affectiva with affdex::VideoDetector detector(60, 1, affdex::FaceDetectorMode::SMALL_FACES); on that raw video the following file is produced. Affectiva stops after 906s without any error message and without printing "[Affectiva] Video processing finised".

    When I now transform the video using ffmpeg -i raw.MP4 -y -vcodec libx264 -preset medium -r 60 -map_metadata 0:g -strict -2 out.MP4 and then run Affectiva with affdex::VideoDetector detector(60, 1, affdex::FaceDetectorMode::SMALL_FACES);, Affectiva runs until the end and prints
    "[Affectiva] Video processing finised" but the frame rate is only at 23 fps. Here is the file.

    When I now run Affectiva with affdex::VideoDetector detector(62, 1, affdex::FaceDetectorMode::SMALL_FACES); on this transformed file, Affectiva stops after 509s and "[Affectiva] Video processing finised" is not printed. Here is the file.

  • No such file or directory - the ffprobe binary could not be found error

    22 juin 2016, par rahul

    I am using carrierwave-video gem uploading videos through carrierwave and it’s not working.

    video_uploader.rb

    class VideoUploader &lt; CarrierWave::Uploader::Base
     include CarrierWave::Video
     storage :file
     def store_dir
       "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
     end
    end

    video.rb

    class Video &lt; ActiveRecord::Base
     mount_uploader :file, VideoUploader

     def set_success(format, opts)
       self.success = true
     end
    end

    The error I am getting is :

    No such file or directory - the ffprobe binary could not be found in /home/administrator/.rvm/gems/ruby-2.3.0/bin:/home/administrator/.rvm/gems/ruby-2.3.0@global/bin:/usr/share/rvm/rubies/ruby-2.3.0/bin:/usr/share/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games