Recherche avancée

Médias (91)

Autres articles (54)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

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

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

Sur d’autres sites (7613)

  • How to track Google AdWords campaigns with Matomo

    19 décembre 2017, par InnoCraft

    In 2016, Google AdWords was the most popular ad service on earth. As a result, it may be your first source for ad spending. Are you interested in knowing whether you are making a profit out of it ? Would you like to know how to track users coming from AdWords with Matomo (Piwik) efficiently ? This is what this article is about.

    What you need to know about Google AdWords

    By default, each ad you create in Google AdWords is not tracked. Even worse than that, every click on your ad is identified in Matomo (Piwik) as an organic result coming from Google with the following value : “Keyword not defined”.

    To make it simple, if you do not track your AdWords campaigns both your paid and organic traffic will be biased within your Matomo (Piwik) account. It will be impossible for you to measure your return on investment and it means that you are throwing your money down the drain.

    In order to avoid this, we will show you how to track Google AdWords traffic into Matomo (Piwik).

    How to track paid Google AdWords campaigns into Matomo

    If you want to analyze Google AdWords campaigns within Matomo (Piwik) properly, you need to add additional tracking parameters to the final URL of each of your ads.

    We recommend using the following tool to add the needed additional tracking parameters : https://matomo.org/docs/tracking-campaigns-url-builder/

    You will then be able to push additional data to Matomo (Piwik) such as :

    • pk_campaign : the name of your ad campaign
    • pk_kwd : the keyword associated to this campaign
    • pk_source : the source of your campaign
    • pk_medium : the type of source, in our case either cpc, cpm, cpa
    • pk_content : the content of your ad

    If your campaign URL looks like this : https://your-website.com/, your campaign URL will then look like this after adding the campaign parameters :

    https://your-website.com/?pk_campaign=Name-Of-Your-Campaign&pk_kwd=Your-Keyword&pk_source=google&pk_medium=cpc&pk_content=My-Ad-Headline

    As each ad URL can be fired by different keywords and can correspond to different campaigns or headlines, you will need to customize the campaign parameters for each URL.

    Customizing all of your URLs individually would take you a lot of time under circumstances. That’s why you should know, that each URL parameter can be filled automatically in AdWords with a feature called “Tracking template”.

    Simplifying the campaign URL parameters with tracking templates

    You can define tracking templates either at the account, campaign or ad group level. For example, by using a tracking template at the account level, all your campaigns will have the same landing page with the URL parameters you defined in the tracking template. By defining it at the campaign level, it means that all your ad groups within the campaign will have the same landing page and so on and so forth. Any tracking template defined in a campaign, will overwrite a tracking template defined at the account level.

    Tracking template at the account level

    To edit the template at the account level, you need to click on “Settings”, then click on the “Account” settings tab and define your tracking template pattern. For example :

    https://your-website.com/?url={lpurl}&pk_campaign=AdWords&pk_kwd=Your-Keyword&pk_source=google&pk_medium=cpc&pk_content=My-Ad-Headline

    This will apply to all your URLs within your account. So it is only useful if your website domain is the same across all your ads. The URL parameter is compulsory here.

    It can be limiting to have a static value for “pk_campaign” and “pk_kwd” so Google allows you to use dynamic insertion, such as follows :

    https://your-landing-page.com/?url={lpurl}&pk_campaign={campaignid}&pk_kwd={keyword}&pk_source=google&pk_medium=cpc&pk_content={creative}

    The “keyword” means that the data is automatically replaced with the keyword which fired the ad within your account.

    Visit the following page if you want to know more about the different dynamic tags that AdWords supports : https://support.google.com/adwords/answer/6305348#urlinsertion

    Tracking template at the campaign level

    If you wish to define a tracking template at the campaign level, you will find this option within the “Campaign” settings under the campaign URL options :

    Tracking template at the Ad Group level

    You can also set it at the Ad Group level within the “Ad Group” settings :

    As Google mentions : “If you set up URL options at the campaign level, ad group level, or ad level, those settings will override the account-level options“.

    Now that your URLs are properly configured, you will be able to analyze AdWords traffic performances within Matomo (Piwik) once a click is coming from those sources.

    Did you like this article ? If yes, do not hesitate to share it or give us your feedback about the topic you would like us to write about.

  • How to track Google AdWords campaigns with Piwik

    19 décembre 2017, par InnoCraft

    In 2016, Google AdWords was the most popular ad service on earth. As a result, it may be your first source for ad spending. Are you interested in knowing whether you are making a profit out of it ? Would you like to know how to track users coming from AdWords with Piwik efficiently ? This is what this article is about.

    What you need to know about Google AdWords

    By default, each ad you create in Google AdWords is not tracked. Even worse than that, every click on your ad is identified in Piwik as an organic result coming from Google with the following value : “Keyword not defined”.

    To make it simple, if you do not track your AdWords campaigns both your paid and organic traffic will be biased within your Piwik account. It will be impossible for you to measure your return on investment and it means that you are throwing your money down the drain.

    In order to avoid this, we will show you how to track Google AdWords traffic into Piwik.

    How to track paid Google AdWords campaigns into Piwik

    If you want to analyze Google AdWords campaigns within Piwik properly, you need to add additional tracking parameters to the final URL of each of your ads.

    We recommend using the following tool to add the needed additional tracking parameters : https://piwik.org/docs/tracking-campaigns-url-builder/

    You will then be able to push additional data to Piwik such as :

    • pk_campaign : the name of your ad campaign
    • pk_kwd : the keyword associated to this campaign
    • pk_source : the source of your campaign
    • pk_medium : the type of source, in our case either cpc, cpm, cpa
    • pk_content : the content of your ad

    If your campaign URL looks like this : https://your-website.com/, your campaign URL will then look like this after adding the campaign parameters :

    https://your-website.com/?pk_campaign=Name-Of-Your-Campaign&pk_kwd=Your-Keyword&pk_source=google&pk_medium=cpc&pk_content=My-Ad-Headline

    As each ad URL can be fired by different keywords and can correspond to different campaigns or headlines, you will need to customize the campaign parameters for each URL.

    Customizing all of your URLs individually would take you a lot of time under circumstances. That’s why you should know, that each URL parameter can be filled automatically in AdWords with a feature called “Tracking template”.

    Simplifying the campaign URL parameters with tracking templates

    You can define tracking templates either at the account, campaign or ad group level. For example, by using a tracking template at the account level, all your campaigns will have the same landing page with the URL parameters you defined in the tracking template. By defining it at the campaign level, it means that all your ad groups within the campaign will have the same landing page and so on and so forth. Any tracking template defined in a campaign, will overwrite a tracking template defined at the account level.

    Tracking template at the account level

    To edit the template at the account level, you need to click on “Settings”, then click on the “Account” settings tab and define your tracking template pattern. For example :

    https://your-website.com/?url={lpurl}&pk_campaign=AdWords&pk_kwd=Your-Keyword&pk_source=google&pk_medium=cpc&pk_content=My-Ad-Headline

    This will apply to all your URLs within your account. So it is only useful if your website domain is the same across all your ads. The URL parameter is compulsory here.

    It can be limiting to have a static value for “pk_campaign” and “pk_kwd” so Google allows you to use dynamic insertion, such as follows :

    https://your-landing-page.com/?url={lpurl}&pk_campaign={campaignid}&pk_kwd={keyword}&pk_source=google&pk_medium=cpc&pk_content={creative}

    The “keyword” means that the data is automatically replaced with the keyword which fired the ad within your account.

    Visit the following page if you want to know more about the different dynamic tags that AdWords supports : https://support.google.com/adwords/answer/6305348#urlinsertion

    Tracking template at the campaign level

    If you wish to define a tracking template at the campaign level, you will find this option within the “Campaign” settings under the campaign URL options :

    Tracking template at the Ad Group level

    You can also set it at the Ad Group level within the “Ad Group” settings :

    As Google mentions : “If you set up URL options at the campaign level, ad group level, or ad level, those settings will override the account-level options“.

    Now that your URLs are properly configured, you will be able to analyze AdWords traffic performances within Piwik once a click is coming from those sources.

    Did you like this article ? If yes, do not hesitate to share it or give us your feedback about the topic you would like us to write about.

  • Can't play at a good framerate with JavaAV

    31 mars 2017, par TW2

    I have a problem in framerate when I use JavaAV (which use JavaCPP + ffmpeg). When I set my framerate as mentionned at DemuxerExample.java, the frame change each 47000ms which is too long and false. It’s better when I set 1000 / demuxer.getFrameRate() * 1000 ( 47ms) but it’s also false. I can’t have a good framerate. Here is my player class :

    package gr.av;

    import hoary.javaav.Audio;
    import hoary.javaav.AudioFrame;
    import hoary.javaav.Demuxer;
    import hoary.javaav.Image;
    import hoary.javaav.JavaAVException;
    import hoary.javaav.MediaFrame;
    import hoary.javaav.VideoFrame;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.sound.sampled.AudioFormat;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.DataLine;
    import javax.sound.sampled.LineUnavailableException;
    import javax.sound.sampled.SourceDataLine;
    import javax.sound.sampled.UnsupportedAudioFileException;
    import javax.swing.JPanel;

    public class Player extends JPanel {

       VideoThread videoTHREAD;
       AudioThread audioTHREAD;
       BufferedImage img = null;

       public Player() {
           init();
       }

       private void init(){        
           videoTHREAD = new VideoThread(this);
           audioTHREAD = new AudioThread();
       }

       public void setImage(BufferedImage img){
           this.img = img;
           repaint();
       }

       @Override
       public void paint(Graphics g){
           if(img != null){
               g.drawImage(img, 0, 0, null);
           }else{
               g.setColor(Color.blue);
               g.fillRect(0, 0, getWidth(), getHeight());
           }
       }

       public void setFilename(String filename){
           videoTHREAD.setFilename(filename);
           audioTHREAD.setFilename(filename);
       }

       public void play(){
           videoTHREAD.playThread();
           audioTHREAD.playThread();
       }

       public void stop(){
           videoTHREAD.stopThread();
           audioTHREAD.stopThread();
       }

       public static class VideoThread extends Thread {

           //The video filename and a controller
           String filename = null;
           private volatile boolean active = false;

           //Panel to see video
           Player player;

           public VideoThread(Player player) {
               this.player = player;
           }

           public void setFilename(String filename){
               this.filename = filename;
           }

           public void playThread(){
               if(filename != null && active == false){
                   active = true;
                   this.start();
               }
           }

           public void stopThread(){
               if(active == true){
                   active = false;
                   this.interrupt();
               }            
           }

           public void video() throws JavaAVException, InterruptedException, IOException, UnsupportedAudioFileException{            
               Demuxer demuxer = new Demuxer();
               demuxer.open(filename);

               MediaFrame mediaFrame;
               while (active && (mediaFrame = demuxer.readFrame()) != null) {
                   if (mediaFrame.getType() == MediaFrame.Type.VIDEO) {

                       VideoFrame videoFrame = (VideoFrame) mediaFrame;

                       player.setImage(Image.createImage(videoFrame, BufferedImage.TYPE_3BYTE_BGR));

                       double FPS = demuxer.getFrameRate() * 1000d;
                       long ms = (long)(1000d / FPS);
                       System.out.println("FPS = " + FPS + " ; Milliseconds = " + ms);
                       java.util.concurrent.TimeUnit.MILLISECONDS.sleep(ms);
                   }
               }
               demuxer.close();
           }

           @Override
           public void run() {
               if(filename != null){
                   try {
                       video();
                   } catch (JavaAVException | InterruptedException | IOException | UnsupportedAudioFileException ex) {
                          Logger.getLogger(Player.class.getName()).log(Level.SEVERE, null, ex);
                   }
               }
           }

       }

       public static class AudioThread extends Thread {

           //The video filename and a controller
           String filename = null;
           private volatile boolean active = false;

           //Audio
           AudioFormat format = new AudioFormat(44000, 16, 2, true, false);
           AudioInputStream ais;
           DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
           SourceDataLine soundLine;

           public AudioThread() {            
           }

           public void setFilename(String filename){
               this.filename = filename;
           }

           public void playThread(){
               if(filename != null && active == false){
                   active = true;
                   soundON();
                   this.start();
               }
           }

           public void stopThread(){
               if(active == true){
                   active = false;
                   soundOFF();
                   this.interrupt();
               }            
           }

           public void audio() throws JavaAVException, IOException {            
               Demuxer demuxer = new Demuxer();
               demuxer.open(filename);

               MediaFrame mediaFrame;
               while (active && (mediaFrame = demuxer.readFrame()) != null) {
                   if (mediaFrame.getType() == MediaFrame.Type.AUDIO) {
                       AudioFrame audioFrame = (AudioFrame) mediaFrame;
                       byte[] bytes = Audio.getAudio16(audioFrame);

                       try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes)) {
                           ais = new AudioInputStream(bais, format, bytes.length / format.getFrameSize());
                           try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
                               int nBufferSize = bytes.length * format.getFrameSize();
                               byte[] abBuffer = new byte[nBufferSize];

                               while (true){
                                   int nBytesRead = ais.read(abBuffer);
                                   if (nBytesRead == -1)
                                       break;

                                   baos.write(abBuffer, 0, nBytesRead);
                               }

                               byte[] abAudioData = baos.toByteArray();
                               soundLine.write(abAudioData, 0, abAudioData.length);
                           }
                           ais.close();
                       }

                   }
               }

               demuxer.close();
           }

           @Override
           public void run() {
               if(filename != null){
                   try {
                       audio();
                   } catch (JavaAVException | IOException ex) {
                       Logger.getLogger(Player.class.getName()).log(Level.SEVERE, null, ex);
                   }
               }
           }

           private void soundON(){
               try {
                   soundLine = (SourceDataLine) AudioSystem.getLine(info);
                   soundLine.open(format);
                   soundLine.start();
               } catch (LineUnavailableException ex) {
                   Logger.getLogger(Player.class.getName()).log(Level.SEVERE, null, ex);
               }
           }

           private void soundOFF(){
               soundLine.drain();
               soundLine.stop();
               soundLine.close();
           }

       }

    }