Recherche avancée

Médias (91)

Autres articles (24)

  • (Dés)Activation de fonctionnalités (plugins)

    18 février 2011, par

    Pour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
    SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
    Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
    MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...)

  • Le plugin : Podcasts.

    14 juillet 2010, par

    Le problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
    Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
    Types de fichiers supportés dans les flux
    Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

Sur d’autres sites (7626)

  • FFMPEG set -ss and -to with string

    12 mai 2017, par NewUser

    I know I can set the start with -ss and end with -to but can someone please help me to format the following so that I can enter the -ss and -to with a string ?

    I want -ss to come from

    String start = editStart.getText().toString();

    and -to to come from

    String end = editEnd.getText().toString();

    Here is my ffmpeg string I want to edit, I have entered -ss and -to to show where I want the above strings to be.

    String s = "-i" + " " + mVideoUri.toString().replace("file:///", "") + " -i " + newBackgroundBitmap.getPath() +  " -filter_complex [1:v][0:v]scale2ref=iw:ih[ovr][base];[ovr]colorchannelmixer=aa=0.7[ovrl];[base][ovrl]overlay[v] -ss -to -map [v] -c:v libx264 -preset ultrafast " + directoryToStore + "/" + FileName + mp4;

    String[] arguments = s.split(" ");

    ExecuteFFMPEG(arguments);

    EDIT

    Here is the full ffmpeg

    //Button onclick
    public void onButtonClicked(View view) {
       switch (view.getId()) {

       //WHEN THE EXPORT BUTTON IS CLICKED
       case Export:
           String s = "-i" + " " + mVideoUri.toString() + " -i " + newBackgroundBitmap.getPath() + " -filter_complex [1:v][0:v]scale2ref=iw:ih[ovr][base];[ovr]colorchannelmixer=aa=0.7[ovrl];[base][ovrl]overlay[v] -map [v] -c:v libx264 -preset ultrafast " + directoryToStore + "/" + lastSaved + mp;
           String[] arguments = s.split(" ");
           ExecuteFFMPEG(arguments);

       }
    }

    //Added onLoad FFMPEG
    public void LoadFFMPEG() {

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

               @Override
               public void onStart() {
                   super.onStart();

               }

               @Override
               public void onFailure() {
                   super.onFailure();
               }

               @Override
               public void onSuccess() {
                   super.onSuccess();

               }

               @Override
               public void onFinish() {
                   super.onFinish();
               }
           });
       } catch (FFmpegNotSupportedException e1) {
           e1.printStackTrace();
           Log.d("[FFMPEGMain Exception]-", e1.toString());
       }
    }

    //Added Exceute FFMPEG
    public void ExecuteFFMPEG(String[] command) {


       FFmpeg ffmpeg = FFmpeg.getInstance(getBaseContext());
       try {

           ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {

               @Override
               public void onStart() {
                   super.onStart();
                   Log.d("[Start]", "start");

               }

               @Override
               public void onProgress(String message) {
                   Log.d("[Progress]", message);
               }

               @Override
               public void onFailure(String message) {
                   Log.d("[fail]", message);
               }

               @Override
               public void onSuccess(String message) {
                   Log.d("[Success]", message);


               }


               @Override
               public void onFinish() {
                   super.onFinish();
                   Log.d("[Finish]", "file output done");

               }

           });
       } catch (FFmpegCommandAlreadyRunningException e) {
           // Handle if FFmpeg is already running
           Log.d("[FFMPEG Exception]-", e.toString());

       }


    }

    The above works perfectly as I was hoping. Now I want to set the start and end of the video (depending on the position the user selected). I get the start and end of the video back as a string, like this :

    String valueRight = formatter.format(getValueRight);
    String valueLeft = formatter.format(getValueLeft);

    //this strings will return 00:00:00.000 DEPENDING on the position from the user
    //just like when you would normally call -ss 00:00:50.849 -to 00:02:05.100

    As I mentioned above that I know it should be set as -ss and -to but I am looking for a wat to format my string to enter -ss and -to with a string, somthing like this :

    -ss valueLeft -to valueRight

  • java.io.IOException : Error running exec() Working Directory : null Environment : null FFmpeg Android merging mp3 and mp4

    23 avril 2017, par 1234567

    java.io.IOException : Error running exec() Working Directory : null Environment : null FFmpeg Android merging mp3 and mp4

    I am trying following code

    public class Minact1 extends Activity{
       String  videoFilePath,audioFilePath,outputFilePath;

       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.mainact);
           videoFilePath = Environment.getExternalStorageDirectory()
                   .getAbsolutePath() + "/sample2.mp4";
           audioFilePath = Environment.getExternalStorageDirectory()
                   .getAbsolutePath() + "/abc.mp3";
           outputFilePath = Environment.getExternalStorageDirectory()
                   .getAbsolutePath() + "/output.mp4";

           try {


               FFmpeg ffmpeg = FFmpeg.getInstance(this);
               String[] cmd =
                       {"-i " + videoFilePath + " -i " + audioFilePath +
                               " -shortest -threads 0 -preset ultrafast -strict -2 " + outputFilePath};

               ffmpeg.execute(cmd, mergeListener);
           } catch (FFmpegCommandAlreadyRunningException e) {
               e.printStackTrace();

               Toast.makeText(Minact1.this, "" +  e, Toast.LENGTH_SHORT).show();
           }
       }

       ExecuteBinaryResponseHandler mergeListener = new ExecuteBinaryResponseHandler() {
           @Override
           public void onStart() {
               //started
               Toast.makeText(Minact1.this, "started", Toast.LENGTH_SHORT).show();
           }

           @Override
           public void onFailure(String message) {
               //failed
               Toast.makeText(Minact1.this, "failed", Toast.LENGTH_SHORT).show();
           }

           @Override
           public void onFinish() {
               File output = new File(outputFilePath);
               //Do whatever with your muxed file

               Toast.makeText(Minact1.this, "onFinish", Toast.LENGTH_SHORT).show();
           }
       };
    }

    I have used following library for FFmpeg

    dependencies {
       compile fileTree(dir: 'libs', include: ['*.jar'])
       testCompile 'junit:junit:4.12'
       compile 'com.android.support:appcompat-v7:23.1.1'

       androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
           exclude group: 'com.android.support', module: 'support-annotations'
       })

       compile 'com.android.support:design:23.1.1'
       compile 'com.writingminds:FFmpegAndroid:0.3.2'
       compile 'org.florescu.android.rangeseekbar:rangeseekbar-library:0.3.0'
       compile 'com.android.support:cardview-v7:23.1.1'
       compile 'commons-io:commons-io:2.5'
    }

    and added following permission in manifest

       

    the files are present at the path used , but output.mp4 is not created

    the log says

    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg: Exception while trying to run: [Ljava.lang.String;@3fe418b2
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg: java.io.IOException: Error running exec(). Command: [/data/data/com.ffmpegtryer/files/ffmpeg, -i /storage/sdcard0/sample2.mp4 -i /storage/sdcard0/abc.mp3 -shortest -threads 0 -preset ultrafast -strict -2 /storage/sdcard0/output.mp4] Working Directory: null Environment: null
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at java.lang.ProcessManager.exec(ProcessManager.java:211)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at java.lang.Runtime.exec(Runtime.java:173)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at java.lang.Runtime.exec(Runtime.java:128)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at com.github.hiteshsondhi88.libffmpeg.ShellCommand.run(ShellCommand.java:10)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:38)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:10)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at android.os.AsyncTask$2.call(AsyncTask.java:288)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at java.lang.Thread.run(Thread.java:818)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:  Caused by: java.io.IOException: No such file or directory
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at java.lang.ProcessManager.exec(Native Method)
    04-23 10:43:39.278 27191-27216/com.ffmpegtryer E/FFmpeg:     at java.lang.ProcessManager.exec(ProcessManager.java:209)

    any help would be useful

  • FFmpeg Video Streaming on android app

    18 avril 2017, par Johnny Roger

    I’m trying to do a streaming of my laptop webcam to my android smartphone.
    So I set an ffserver in this way

    HTTPPort 1234
    RTSPPort 1235

    <feed>
           File /tmp/feed2.ffm
           FileMaxSize 2M
           ACL allow 127.0.0.1
    </feed>

    <stream>
       Feed feed2.ffm
       Format rtp
       Noaudio
       VideoCodec libx264
       AVOptionVideo flags +global_header
       AVOptionVideo me_range 16
       AVOptionVideo qdiff 4
       AVOptionVideo qmin 10
       AVOptionVideo qmax 51
       ACL allow 192.168.0.0 192.168.255.255
    </stream>

    and I used the following ffmpeg instruction

    ffmpeg -i /dev/video0 -vcodec libx264 -tune zerolatency -crf 18 http://localhost:1234/feed2.ffm

    in my android studio project i set in the manifest file

    That is my MainActivity.java

    package com.example.johnny.ffmpeg;

    import android.app.ProgressDialog;
    import android.content.Context;
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.app.Activity;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.SurfaceView;
    import android.view.View;
    import android.net.Uri;
    import android.widget.Button;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.MediaController;
    import android.widget.Toast;
    import android.widget.VideoView;


    public class MainActivity extends AppCompatActivity implements VideoView.OnClickListener
    {

       ProgressDialog mDialog;
       VideoView videoView;
       ImageView btnPlayPause;
       MediaController mediaController;

       String videoURL ="rtsp://192.168.1.100:1235/test1.sdp";


       @Override
       protected void onCreate(Bundle savedInstanceState)
       {
           super.onCreate(savedInstanceState);


           setContentView(R.layout.activity_main);

           videoView =(VideoView)findViewById(R.id.videoView);
           mediaController= new MediaController(this);
           mediaController.setAnchorView(videoView);
           btnPlayPause = (ImageButton)findViewById(R.id.btn_play_pause);
           btnPlayPause.setOnClickListener(this);

       }

       @Override
       public void onClick(View v) {
           mDialog = new ProgressDialog(MainActivity.this);
           mDialog.setMessage("Please wait...");
           mDialog.setCanceledOnTouchOutside(false);
           mDialog.show();

           Uri uri = Uri.parse(videoURL);
           videoView.setVideoURI(uri);

           try{
               if(!videoView.isPlaying()) {


                   videoView.setMediaController(mediaController);
                   videoView.requestFocus();

                   videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                       @Override
                       public void onCompletion(MediaPlayer mp) {
                           btnPlayPause.setImageResource(R.drawable.ic_aplay);
                       }
                   });
               }
               else
               {
                   videoView.pause();
                   btnPlayPause.setImageResource(R.drawable.ic_pause);
               }
           }
           catch(Exception ex)
           {

               Context context = getApplicationContext();
               String text = ex.toString();
               int duration = Toast.LENGTH_SHORT;

               Toast toast = Toast.makeText(context, text, duration);
               toast.show();
           }

           videoView.requestFocus();
           videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
               @Override
               public void onPrepared(MediaPlayer mp){
                   mDialog.dismiss();
                   mp.setLooping(true);



                   videoView.start();
                   btnPlayPause.setImageResource(R.drawable.ic_pause);
               }
           });

           videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {

               @Override
               public boolean onError(MediaPlayer mp, int what, int extra) {
                   Log.d("video", "setOnErrorListener ");
                   return true;
               }
           });

       }
    }

    and that is the relative activity_main.xml file :

    <relativelayout>

        <videoview></videoview>

       

       <textview></textview>

       <textview></textview>

    </relativelayout>

    I tested the streaming on vlc and it work well (even if with dealy, it’s not in real time).
    The app instead give me the message "can’t play this video" and the following error :

    V/MediaPlayer: message received msg=100, ext1=1, ext2=-38
    E/MediaPlayer: Error (1,-38)
    D/VideoView: Error: 1,-38
    D/video: setOnErrorListener
    E/MediaPlayer: error (1, -38)
    V/MediaPlayer: callback application
    V/MediaPlayer: back from callback
    E/MediaPlayer: Error (1,-38)
    D/VideoView: Error: 1,-38
    D/video: setOnErrorListener

    E/ViewRootImpl: sendUserActionEvent() mView == null

    I saw that the problem could be the format of the video, but i tried also with an mp4 file

    ffmpeg -i test.mp4 -vcodec libx264 -tune zerolatency -crf 18 http://localhost:1234/feed2.ffm

    and the result was the same. How Can I fix it and let my app work well ?