Recherche avancée

Médias (0)

Mot : - Tags -/xmlrpc

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

Autres articles (61)

  • La sauvegarde automatique de canaux SPIP

    1er avril 2010, par

    Dans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
    Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)

  • Script d’installation automatique de MediaSPIP

    25 avril 2011, par

    Afin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
    Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
    La documentation de l’utilisation du script d’installation (...)

  • Automated installation script of MediaSPIP

    25 avril 2011, par

    To overcome the difficulties mainly due to the installation of server side software dependencies, an "all-in-one" installation script written in bash was created to facilitate this step on a server with a compatible Linux distribution.
    You must have access to your server via SSH and a root account to use it, which will install the dependencies. Contact your provider if you do not have that.
    The documentation of the use of this installation script is available here.
    The code of this (...)

Sur d’autres sites (5416)

  • Music Video Idiosyncrasies

    18 juin 2011, par Multimedia Mike — General

    So I’m watching a fairly recent music video for a song named "XXXO" from an artist named M.I.A. when I’m suddenly assaulted by this imagery :



    ... and I enter nervous convulsions. You see, while this might seem to be an odd video effect to the casual viewer, to a multimedia hacker, it appears to be deliberately antagonistic. To anyone who has written a video codec, this scene looks like an entire casserole of video bugs, combining creeping plane offsets errors, chroma problems, and interlacing havoc. The craziest part is to realize that this is probably some kind of standard video effect / filter type. Upon a repeat viewing, I realized that the entire video sort of looks like an amateur video editor’s first week using video software.

    Elsewhere in the video, a YouTube-style video frame vortex highlights the proceedings. I guess I need to come to terms with the fact that the ubiquitous player frame is just part of the digital Zeitgeist now :



    Vintage Video Strangeness
    I’m a long-time music video junkie but I have a tendency of examining them entirely too closely. I first saw Paula Abdul’s video for "Cold-Hearted" when I was just starting to understand multimedia technology and how it interacted with emerging home computers. Imagine how confused I was when I tried to make sense of the actions performed by our eMaestro "Chuck" whom Paula has instructed to "hit it". First, he hits a key followed by 3 quick strikes on a second key :



    Then, the "start music" action is apparently bound to a particular key on the electronic keyboard :



    Which kicks off the electronic metronome on the computer. Each identical-sounding beat quizzically maps to a different frequency transform :



    a one...

    and a two...

    and a three...

    I had no trouble believing things up to this point. But even though I didn’t understand what was going on with that frequency transform, I knew that it must have had something to do with the audio. And if the audio was the same, the visualization ought to be the same. Though, to be fair, I will concede that the first and third ticks pictured bear some mutual resemblance.

    Anyway, the software is probably real even if the keyboard interaction was stylized. Can anyone identify the software ? What about the computer ? This is perhaps the best view the video gives us :



    So, remember, don’t base your understanding of technology — or anything, really — on stylized media representations. Don’t even get me started on the movie "Sneakers." That had me confused about cryptography and computer security for many years.

  • Form Analytics for Piwik now available : Find the pain points on your online forms to improve conversions

    14 mars 2017, par InnoCraft — Community

    Hi, this is Tom from InnoCraft, the company of the makers of Piwik Analytics. Do you hate losing your visitors on your online or intranet forms and leaving revenue on the table ? If you feel like us, we have got you covered. Form Analytics gives you all the insights you possibly need to increase your form conversion rates with 100% data ownership and no limits.

    Whether it is a landing page, sign-up form, checkout, cart, squeeze page, feedback form, survey, or a job application form. Online forms have become super critical to all businesses. The problem is, you can only improve what you measure. Otherwise, you never really know what to change on your forms, and whether you make things better or worse.

    -> Read the rest of the story on the Form Analytics Marketplace page.

    What does the new Form Analytics reports look like ?

    Form Analytics adds over 50 new metrics, 15 new reports & widgets, new real time reports, new segments and more to your Piwik.

    To see more screenshots check out the Form Analytics preview or have a look at the Form Analytics website

    Where do I get Form Analytics ?

    Form Analytics is available on the Piwik Marketplace :

    Form Analytics is a premium plugin for Piwik and comes with our 14 day money back guarantee and 1-click installation & updates (all product updates come for free).

    You can also signup for a free Piwik Cloud-hosted trial to discover the power of Form Analytics !

  • Android FFMPEG - Low FPS & File Size is massive

    2 mai 2018, par Alexzander Flores

    I am new to Android app development and I have been asked to make a video splitter app. I am trying to use FFMPEG, but the library size is massive and makes the .APK file 140MB. How can I solve this ? Similar apps are around 15MBs in size.

    Also, the framerate starts at 30FPS and drops to around 2.2FPS over time when trying to split a 30 second long video into two parts. How can I solve this ? This is my code currently :

    package splicer.com.splicer;

    import android.Manifest;
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.database.Cursor;
    import android.media.MediaMetadataRetriever;
    import android.media.MediaScannerConnection;
    import android.net.Uri;
    import android.provider.MediaStore;
    import android.support.v4.app.ActivityCompat;
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.text.method.ScrollingMovementMethod;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;

    import com.github.hiteshsondhi88.libffmpeg.ExecuteBinaryResponseHandler;
    import com.github.hiteshsondhi88.libffmpeg.FFmpeg;
    import com.github.hiteshsondhi88.libffmpeg.LoadBinaryResponseHandler;
    import com.github.hiteshsondhi88.libffmpeg.exceptions.FFmpegNotSupportedException;

    public class MainActivity extends AppCompatActivity {

       private Button button;
       private TextView textView;
       private FFmpeg ffmpeg;

       static {
           System.loadLibrary("native-lib");
       }

       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);

           ffmpeg = FFmpeg.getInstance(getApplicationContext());
           try {
               ffmpeg.loadBinary(new LoadBinaryResponseHandler() {

                   @Override
                   public void onStart() {}

                   @Override
                   public void onFailure() {}

                   @Override
                   public void onSuccess() {}

                   @Override
                   public void onFinish() {}
               });
           } catch(FFmpegNotSupportedException e) {
               e.printStackTrace();
           }

           textView = (TextView) findViewById(R.id.textView);
           textView.setY(200);
           textView.setHeight(700);
           textView.setMovementMethod(new ScrollingMovementMethod());

           button = (Button) findViewById(R.id.button);
           button.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   openGallery();
               }
           });
       }

       /**
        * A native method that is implemented by the 'native-lib' native library,
        * which is packaged with this application.
        */
       public native String stringFromJNI();

       public void openGallery() {
           if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
               ActivityCompat.requestPermissions(this, new String [] {Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
           }

           if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
               ActivityCompat.requestPermissions(this, new String [] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
           }

           Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
           startActivityForResult(gallery, 100);
       }

       public String getRealPathFromURI(Context context, Uri contentUri) {
           Cursor cursor = null;
           try {
               String[] proj = { MediaStore.Images.Media.DATA };
               cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);
               int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
               cursor.moveToFirst();
               return cursor.getString(column_index);
           } finally {
               if (cursor != null) {
                   cursor.close();
               }
           }
       }

       @Override
       protected void onActivityResult(int requestCode, int resultCode, final Intent intent) {
           super.onActivityResult(requestCode, resultCode, intent);
           if(resultCode == RESULT_OK && requestCode == 100) {
               MediaMetadataRetriever retriever = new MediaMetadataRetriever();
               try {
                   retriever.setDataSource(getBaseContext(), intent.getData());
                   String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
                   long splitCount = Long.valueOf(time) / 1000 / 15;
                   if(splitCount > 1) {
                       final String path = getRealPathFromURI(getBaseContext(), Uri.parse(intent.getData().toString()));

                       for(int a = 0, start = 0; a < splitCount; ++a, start += 15) {
                           // I am only testing with .mp4s atm, this will change before production
                           final String targetPath = path.replace(".mp4", "_" + (a + 1) + ".mp4");

                           ffmpeg.execute(new String [] {
                                   "-r",
                                   "1",
                                   "-i",
                                   path,
                                   "-ss",
                                   String.valueOf(start),
                                   "-t",
                                   String.valueOf(start + 15),
                                   "-r",
                                   "24",
                                   targetPath
                           }, new ExecuteBinaryResponseHandler() {
                               @Override
                               public void onStart() {}

                               @Override
                               public void onProgress(String message) {
                                   textView.setText("onProcess: " + message);
                               }

                               @Override
                               public void onFailure(String message) {
                                   textView.setText("onFailure: " + message + " --- " + path);
                               }

                               @Override
                               public void onSuccess(String message) {
                                   textView.setText("onSuccess:" + message);
                                   MediaScannerConnection.scanFile(getBaseContext(),
                                   new String [] { targetPath }, null,
                                   new MediaScannerConnection.OnScanCompletedListener() {
                                       public void onScanCompleted(String path, Uri uri) {}
                                   });
                               }

                               @Override
                               public void onFinish() {}
                           });
                       }
                   }
               } catch(Exception e) {
                   e.printStackTrace();
               } finally {
                   retriever.release();
               }
           }
       }
    }

    I don’t believe everything here is as optimal as it could be, but I’m just trying to prove the concept at the moment. Any help in the right direction would be amazing, thank you !