Recherche avancée

Médias (91)

Autres articles (99)

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

  • Configuration spécifique pour PHP5

    4 février 2011, par

    PHP5 est obligatoire, vous pouvez l’installer en suivant ce tutoriel spécifique.
    Il est recommandé dans un premier temps de désactiver le safe_mode, cependant, s’il est correctement configuré et que les binaires nécessaires sont accessibles, MediaSPIP devrait fonctionner correctement avec le safe_mode activé.
    Modules spécifiques
    Il est nécessaire d’installer certains modules PHP spécifiques, via le gestionnaire de paquet de votre distribution ou manuellement : php5-mysql pour la connectivité avec la (...)

  • Multilang : améliorer l’interface pour les blocs multilingues

    18 février 2011, par

    Multilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
    Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.

Sur d’autres sites (8654)

  • 'pjsip-apps/Samples' Cannot functionally run vid_streamutil.c sample

    2 décembre 2020, par ShootingKIng

    Issue Description
After building[Build Varient=Debug, Build Config=x64] the latest pjproject-vs14 (retargeted to MSVS 2017, WINSDK=8.1, because my application works at these config) as per the build instruction on trac website. Successfully built pjsua and samples.

    


    I want to use only RTP + FFMPEG APIs (pjmedia) for my application from pjproject.

    


    My config_site.h

    


    #define PJMEDIA_HAS_VIDEO           1
#define PJMEDIA_HAS_FFMPEG          1


    


    FFMPEG (pre build from ffmpeg-N-100121-g052b4c3481-win64-gpl-shared.zip)

    


    But running the example, vid_streamutil.c did not work as expected (? Whats the normal expected behaviour ?).
It says

    


    ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)


    


    To Reproduce
Steps to reproduce the behavior :

    


      

    1. run vid_streamutil.exe with parameter : --codec=H264 --remote=127.0.0.1:5000 --play-file=test.avi --send-only
(test.avi file being a sample file)
    2. 


    


    Expected behavior
Get some RTP packets in wireshark while listening to ports 4000 and 5000 maybe ? I dont know whats the expected behaviour, documentation dosent say anything about this :(

    


    Logs/Screenshots
Couldn't catch anything on Wireshark.
Console log of vid_streamutil.exe is

    


    vid_streamutil.exe --codec=H264 --remote=127.0.0.1:5000 --send-only --play-file=test.avi
10:25:24.757 os_core_win32. !pjlib 2.10 for win32 initialized
 
10:25:24.840     wmme_dev.c  WMME found 12 devices:
10:25:24.858     wmme_dev.c   dev_id 0: Wave mapper  (in=2, out=2)
10:25:24.860     wmme_dev.c   dev_id 1: Headset Microphone (Arctis 7 Ch  (in=2, out=0)
10:25:24.860     wmme_dev.c   dev_id 2: Microphone (AMM Virtual Audio D  (in=2, out=0)
10:25:24.861     wmme_dev.c   dev_id 3: CABLE Output (VB-Audio Virtual   (in=2, out=0)
10:25:24.864     wmme_dev.c   dev_id 4: VoiceMeeter Output (VB-Audio Vo  (in=2, out=0)
10:25:24.864     wmme_dev.c   dev_id 5: Microphone (Realtek Audio)  (in=2, out=0)
10:25:24.865     wmme_dev.c   dev_id 6: Headphones (Arctis 7 Game)  (in=0, out=2)
10:25:24.866     wmme_dev.c   dev_id 7: Speakers / Headphones (Realtek   (in=0, out=2)
10:25:24.867     wmme_dev.c   dev_id 8: VoiceMeeter Input (VB-Audio Voi  (in=0, out=2)
10:25:24.884     wmme_dev.c   dev_id 9: Headset Earphone (Arctis 7 Chat  (in=0, out=2)
10:25:24.885     wmme_dev.c   dev_id 10: Speakers (AMM Virtual Audio Dev  (in=0, out=2)
10:25:24.887     wmme_dev.c   dev_id 11: Speakers (VB-Audio Virtual Cabl  (in=0, out=2)
10:25:24.887     wmme_dev.c  WMME initialized
10:25:24.890          pjlib  select() I/O Queue created (0000016B2C5F9608)
10:25:24.892 colorbar_dev.c  Colorbar video src initialized with 2 device(s):
10:25:24.915 colorbar_dev.c   0: Colorbar generator
10:25:24.935 colorbar_dev.c   1: Colorbar-active
10:25:24.956   avi_player.c  The AVI file has 2 streams.
10:25:24.976   avi_player.c  AVI file player 'test.avi' created with 2 media ports
10:25:24.994 vid_streamutil  Reading video stream 1280x720 H264 @30.00fps
10:25:25.033          rtp.c  pjmedia_rtp_session_init: ses=0000016B2C6793C8, default_pt=97, ssrc=0x294823
10:25:25.053 vstdec0000016B  Decoding channel created 720x480 I420<-H264 22/1(~22)fps
10:25:25.054          rtp.c  pjmedia_rtp_session_init: ses=0000016B2C62DF1C, default_pt=97, ssrc=0x294823
10:25:25.057 vstenc0000016B  Encoding channel created 1280x720 I420->H264 30/1(~30)fps
10:25:25.060 udp0000016B2C6  SO_RCVBUF set to 65536
10:25:25.061 udp0000016B2C6  SO_SNDBUF set to 65536
10:25:25.062   vid_stream.c  Video stream vstrm0000016B2C678508 created
10:25:25.086 vstenc0000016B  Encoder stream started
10:25:25.104 vstdec0000016B  Decoder stream paused
 [VID_STEAMUTIL] Stream is active, dir is send-only, sending to 127.0.0.1:5000
10:25:25.114 vid_streamutil  Sending 1280x720 H264 @30.00fps

Commands:
  q     Quit

Command: 10:25:25.147 ffmpeg_vid_cod !ffmpeg err -22: Invalid argument
10:25:25.222 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.237 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.250 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.251 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.287 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.311 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.316 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.341 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.353 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.369 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.386 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.387 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.411 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.415 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.452 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.469 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.486 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.496 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.506 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.527 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.547 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.568 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.576 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.604 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.606 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.627 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.648 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.668 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.686 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.711 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.731 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.752 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.769 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.778 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.804 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.827 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.833 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.868 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.886 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.895 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.921 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.923 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.943 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:25.963 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:25.983 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.003 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.019 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.038 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.041 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.060 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.081 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.086 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.109 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.130 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.138 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.162 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.183 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.202 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.220 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.228 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.260 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.281 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.312 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.321 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.321 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.322 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.323 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.323 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.324 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.324 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.333 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.353 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.353 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.381 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.401 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.414 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.429 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.449 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.469 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.480 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.510 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.531 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.553 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.571 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.594 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.615 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.636 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.653 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.671 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.678 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.714 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.736 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.754 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.777 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.781 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
10:25:26.816 ffmpeg_vid_cod  ffmpeg err -22: Invalid argument
10:25:26.836 vstenc0000016B  Codec encode_begin() error: Codec internal creation error (PJMEDIA_CODEC_EFAILED)
EOF while reading stdin, will quit now..

Commands:
  q     Quit

^C


    


    Desktop information :

    


      

    • OS, Distribution & Version : MS Windows 10 Home, 1909
    • 


    • PJSIP

        

      • version : 2.10
      • 


      • applied patch(es) : Nothing Extra
      • 


      • configure script params : Default
      • 


      • config_site.h contents : Aforementioned
      • 


      • related third party libraries & versions :
FFMPEG 4.3
      • 


      


    • 


    


    #define LIBAVCODEC_VERSION_MAJOR  58
#define LIBAVCODEC_VERSION_MINOR  91
#define LIBAVCODEC_VERSION_MICRO 100


    


    Additional context
I didnt change the default program that must except adding some printf's when program goes to exit label, without this it will be very difficult to know which part of the program jumped to exit : label. Anyways, here is the full code,

    


    vid_streamutil.c (with printfs)

    


    Any help is appreciated ^^'
Thanks.

    


  • Android : Pass video path to FFmpeg

    29 septembre 2020, par marian

    I have developed an app that play video from gallery. I would like to add watermark using FFmpeg command in the video selected. But I do not know how to pass the path to the FFmpeg command. I could not find proper tutorials or reference regarding this. My coding are as follows :

    


    MainActivity.java :

    


    public class MainActivity extends Activity {
public ProgressDialog progressBar;

String workFolder = null;
String demoVideoFolder = null;
String demoVideoPath = null;
String vkLogPath = null;
LoadJNI vk;
private final int STOP_TRANSCODING_MSG = -1;
private final int FINISHED_TRANSCODING_MSG = 0;
private boolean commandValidationFailedFlag = false;

Button button;
VideoView videoView;
private static final int PICK_FROM_GALLERY = 1;


private void runTranscodingUsingLoader() {
    Log.i(Prefs.TAG, "runTranscodingUsingLoader started...");

    PowerManager powerManager = (PowerManager)MainActivity.this.getSystemService(Activity.POWER_SERVICE);
    PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "VK_LOCK");
    Log.d(Prefs.TAG, "Acquire wake lock");
    wakeLock.acquire();

    

    String[] complexCommand = {"ffmpeg","-y" ,"-i", "/sdcard/videokit/in.mp4","-strict","experimental",
            "-vf", "movie=/sdcard/videokit/watermark.png [watermark];" +
            " [in][watermark] overlay=main_w-overlay_w-10:10 [out]","-s",
            "320x240","-r", "30", "-b", "15496k", "-vcodec", "mpeg4","-ab",
            "48000", "-ac", "2", "-ar", "22050", "/sdcard/videokit/out1.mp4"};
    ///////////////////////////////////////////////////////////////////////


    vk = new LoadJNI();
    try {
        // running complex command with validation
        vk.run(complexCommand, workFolder, getApplicationContext());

        // running without command validation
        //vk.run(complexCommand, workFolder, getApplicationContext(), false);

        // running regular command with validation
        //vk.run(GeneralUtils.utilConvertToComplex(commandStr), workFolder, getApplicationContext());

        Log.i(Prefs.TAG, "vk.run finished.");
        // copying vk.log (internal native log) to the videokit folder
        GeneralUtils.copyFileToFolder(vkLogPath, demoVideoFolder);

    } catch (CommandValidationException e) {
        Log.e(Prefs.TAG, "vk run exeption.", e);
        commandValidationFailedFlag = true;

    } catch (Throwable e) {
        Log.e(Prefs.TAG, "vk run exeption.", e);
    }
    finally {
        if (wakeLock.isHeld()) {
            wakeLock.release();
            Log.i(Prefs.TAG, "Wake lock released");
        }
        else{
            Log.i(Prefs.TAG, "Wake lock is already released, doing nothing");
        }
    }

    // finished Toast
    String rc = null;
    if (commandValidationFailedFlag) {
        rc = "Command Vaidation Failed";
    }
    else {
        rc = GeneralUtils.getReturnCodeFromLog(vkLogPath);
    }
    final String status = rc;
    MainActivity.this.runOnUiThread(new Runnable() {
        public void run() {
            Toast.makeText(MainActivity.this, status, Toast.LENGTH_LONG).show();
            if (status.equals("Transcoding Status: Failed")) {
                Toast.makeText(MainActivity.this, "Check: " + vkLogPath + " for more information.", Toast.LENGTH_LONG).show();
            }
        }
    });
}


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

    button = (Button) findViewById(R.id.button);
    
    videoView = (VideoView) findViewById(R.id.videoview);

    button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent();

            intent.setType("video/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);

            startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_GALLERY);
        }
    });

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != RESULT_OK) return;

    if (requestCode == PICK_FROM_GALLERY) {
        Uri mVideoURI = data.getData();
        videoView.setVideoURI(mVideoURI);
        videoView.start();
        demoVideoFolder = mVideoURI.getPath();
        demoVideoPath = demoVideoFolder;
        savevideo(mVideoURI);

    }


}
private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        Log.i(Prefs.TAG, "Handler got message");
        if (progressBar != null) {
            progressBar.dismiss();

            // stopping the transcoding native
            if (msg.what == STOP_TRANSCODING_MSG) {
                Log.i(Prefs.TAG, "Got cancel message, calling fexit");
                vk.fExit(getApplicationContext());


            }
        }
    }
};

public void runTranscoding() {
    progressBar = new ProgressDialog(MainActivity.this);
    progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressBar.setTitle("FFmpeg4Android Direct JNI");
    progressBar.setMessage("Press the cancel button to end the operation");
    progressBar.setMax(100);
    progressBar.setProgress(0);

    progressBar.setCancelable(false);
    progressBar.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.sendEmptyMessage(STOP_TRANSCODING_MSG);
        }
    });

    progressBar.show();

    new Thread() {
        public void run() {
            Log.d(Prefs.TAG,"Worker started");
            try {
                //sleep(5000);
                runTranscodingUsingLoader();
                handler.sendEmptyMessage(FINISHED_TRANSCODING_MSG);

            } catch(Exception e) {
                Log.e("threadmessage",e.getMessage());
            }
        }
    }.start();

    // Progress update thread
    new Thread() {
        ProgressCalculator pc = new ProgressCalculator(vkLogPath);
        public void run() {
            Log.d(Prefs.TAG,"Progress update started");
            int progress = -1;
            try {
                while (true) {
                    sleep(300);
                    progress = pc.calcProgress();
                    if (progress != 0 && progress < 100) {
                        progressBar.setProgress(progress);
                    }
                    else if (progress == 100) {
                        Log.i(Prefs.TAG, "==== progress is 100, exiting Progress update thread");
                        pc.initCalcParamsForNextInter();
                        break;
                    }
                }

            } catch(Exception e) {
                Log.e("threadmessage",e.getMessage());
            }
        }
    }.start();
}

public void savevideo (Uri mVideoURI){
    demoVideoFolder = mVideoURI.getPath();
    demoVideoPath = demoVideoFolder;
    Log.i(Prefs.TAG, getString(R.string.app_name) + " version: " + GeneralUtils.getVersionName(getApplicationContext()));

    Button invoke = (Button) findViewById(R.id.button);
    invoke.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Log.i(Prefs.TAG, "run clicked.");
            runTranscoding();
        }
    });

    workFolder = getApplicationContext().getFilesDir() + "/";
    Log.i(Prefs.TAG, "workFolder (license and logs location) path: " + workFolder);
    vkLogPath = workFolder + "vk.log";
    Log.i(Prefs.TAG, "vk log (native log) path: " + vkLogPath);
    GeneralUtils.copyLicenseFromAssetsToSDIfNeeded(this, workFolder);
    GeneralUtils.copyDemoVideoFromAssetsToSDIfNeeded(this, demoVideoFolder);
    int rc = GeneralUtils.isLicenseValid(getApplicationContext(), workFolder);
    Log.i(Prefs.TAG, "License check RC: " + rc);

}
}


    


    FFmpeg command :

    


    String[] complexCommand = {"ffmpeg","-y" ,"-i",  "/sdcard/videokit/in.mp4","-strict","experimental",
            "-vf", "movie=/sdcard/videokit/watermark.png [watermark];" +
            " [in][watermark] overlay=main_w-overlay_w-10:10 [out]","-s",
            "320x240","-r", "30", "-b", "15496k", "-vcodec", "mpeg4","-ab",
            "48000", "-ac", "2", "-ar", "22050", "/sdcard/videokit/out1.mp4"};


    


    Tis command is from a sample project. How do I pass the video path to this command ? I do not know how to edit the command to support my requirement. Can someone guide me through this. Any help will be really helpful. Thank you.

    


  • Raspberry Pi USB Webcam Stream to Computer using Gstreamer

    17 mars 2016, par James

    I have a fisheye usb webcam attached to a raspberry pi that I’m trying to stream to a computer. I’ve played with ffmpeg and it seems a little laggy beyond 320x240. From what I’ve read people have been happy with gstreamer.

    So I’ve tested the usb webcam and it works locally

    gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw,width=640,height=480' ! glimagesink

    These are the commands I’ve been trying to use to get the video to my computer. However, all I’m seeing is a green window.

    TCP Sever :gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw,width=640,height=480,framerate=30/1' ! x264enc byte-stream=true ! rtph264pay ! gdppay ! tcpserversink host=192.168.200.38 port=5000 sync=false

    TCP Client : gst-launch-1.0 -v tcpclientsrc host=192.168.200.38 port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false

    or

    UDP Server :
    gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw,width=640,height=480,framerate=30/1' ! x264enc byte-stream=true  ! rtph264pay ! gdppay ! udpsink host=192.168.200.37 port=5000 sync=false

    UDP Client :
    gst-launch-1.0 -v udpsrc port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false

    I figure I must be piping the plugins wrong somehow. Any advice is appreciated.