Recherche avancée

Médias (91)

Autres articles (111)

  • Personnaliser les catégories

    21 juin 2013, par

    Formulaire de création d’une catégorie
    Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
    Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire.
    Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
    Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

Sur d’autres sites (10259)

  • how to merge an audio file with an image in android using javaCV

    11 mai 2016, par Darshan Soni

    I have aleady tried some code but it is throwing exception like this,

    05-11 17:34:00.449 1838-2316/darshan.fragments_demo E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                                         Process: darshan.fragments_demo, PID: 1838
                                                                         java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                                             at android.os.AsyncTask$3.done(AsyncTask.java:309)
                                                                             at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                                                                             at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                                                                             at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                             at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
                                                                             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                             at java.lang.Thread.run(Thread.java:818)
                                                                          Caused by: java.lang.UnsatisfiedLinkError: org.bytedeco.javacpp.avutil
                                                                             at java.lang.Class.classForName(Native Method)
                                                                             at java.lang.Class.forName(Class.java:324)
                                                                             at org.bytedeco.javacpp.Loader.load(Loader.java:413)
                                                                             at org.bytedeco.javacpp.Loader.load(Loader.java:381)
                                                                             at org.bytedeco.javacpp.avformat$AVFormatContext.<clinit>(avformat.java:2597)
                                                                             at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:386)
                                                                             at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:380)
                                                                             at darshan.fragments_demo.Layout1$Test.doInBackground(Layout1.java:166)
                                                                             at darshan.fragments_demo.Layout1$Test.doInBackground(Layout1.java:136)
                                                                             at android.os.AsyncTask$2.call(AsyncTask.java:295)
                                                                             at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                             at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
                                                                             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                                                                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                                                                             at java.lang.Thread.run(Thread.java:818)
    </clinit>

     
    Now in gradle file I’ve included some libraries my gradle file is as follow,

    apply plugin: 'com.android.application'

    android {
       compileSdkVersion 23
       buildToolsVersion "23.0.2"

           packagingOptions {
               exclude 'META-INF/LICENSE'
               exclude 'META-INF/LICENSE-FIREBASE.txt'
               exclude 'META-INF/NOTICE'
               exclude 'META-INF/services/javax.annotation.processing.Processor'
               pickFirst  'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties'
               pickFirst  'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml'
               pickFirst  'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties'
               pickFirst  'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml'

           }


       defaultConfig {
           applicationId "darshan.fragments_demo"
           minSdkVersion 16
           targetSdkVersion 23
           versionCode 1
           versionName "1.0"
       }
       buildTypes {
           release {
               minifyEnabled false
               proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
           }
       }
    }

    dependencies {
       compile fileTree(dir: 'libs', include: ['*.jar'])
       testCompile 'junit:junit:4.12'

       compile 'com.android.support:appcompat-v7:23.1.1'
       compile 'com.android.support:design:23.1.1'
       compile group: 'org.bytedeco', name: 'javacv', version: '1.1'
       compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.11-0.11', classifier: 'android-arm'
       compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.11-0.11', classifier: 'android-x86'
       compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.6.1-0.11', classifier: 'android-arm'
       compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.6.1-0.11', classifier: 'android-x86'


    }

    And java file is as follow,

    public class Test extends AsyncTask {

       ProgressDialog dialog;
       FFmpegFrameRecorder recorder;
       String videoPath;
       protected void onPreExecute() {
           dialog = new ProgressDialog(Layout1.this);
           dialog.setMessage("Genrating video, Please wait.........");
           dialog.setCancelable(false);
           //dialog.show();
       };
       @Override
       protected Void doInBackground(Void... params) {

           File folder = Environment.getExternalStorageDirectory();
           String path = folder.getAbsolutePath() + "/DCIM/Camera";
           // ArrayList<string> paths = (ArrayList<string>) getListOfFiles(path, "jpg");
           long millis = System.currentTimeMillis();
           videoPath = path + "/" + "test_sham_"+millis+".3gp";

           try {



               //audio grabber

               FFmpegFrameGrabber grabber2 = new FFmpegFrameGrabber(folder.getAbsolutePath()+"/bluetooth/abcd.mp3");

               //video grabber
               FFmpegFrameGrabber grabber1 = new FFmpegFrameGrabber(path+"/1.jpg");
               grabber1.start();

               grabber2.start();

               recorder = new FFmpegFrameRecorder(path
                       + "/" + "test_sham_"+millis+".mp4",  grabber1.getImageWidth(), grabber1.getImageHeight(),2);

               //recorder.setVideoCodec(5);
               recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4);
               // recorder.setVideoCodec(avcodec.AV_CODEC_ID_MP4ALS);

               //recorder.setFormat("3gp");
                 recorder.setFormat("mp4");
               recorder.setFrameRate(30);
               recorder.setSampleRate(grabber2.getSampleRate());
               recorder.setVideoBitrate(30);
               long startTime = System.currentTimeMillis();
               recorder.start();

               Frame frame1, frame2 = null;

               while ((frame1 = grabber1.grabFrame()) != null ||

                       (frame2 = grabber2.grabFrame()) != null) {

                   recorder.record(frame1);

                   recorder.record(frame2);

               }

               recorder.stop();

               grabber1.stop();

               grabber2.stop();




               System.out.println("Total Time:- " + recorder.getTimestamp());

           } catch (Exception e) {
               e.printStackTrace();
           }

           return null;
       }
    }
    </string></string>

    I just cant figure out what is wrong with the implementation
    Please help

  • Is there a way to program the (Download) button to save a group of images as a one video ?

    9 février 2024, par Lina Al-fawzan

    This is my entire code. Its function is that everything the user writes or says will have images returned to him according to what he wrote/said, and the next image will be shown to him after he presses “close,” and he can save each image separately. I want to make a simple modification to it. First, instead of a close button, I want each image to be displayed for 3 seconds and the next one to be displayed, and so on... “all of them in one window”, and for the “download” button to be when the last image is displayed, and for them all to be saved in one video.

    &#xA;

    import &#x27;package:flutter/material.dart&#x27;;&#xA;import &#x27;package:flutter/services.dart&#x27; show rootBundle;&#xA;import &#x27;dart:convert&#x27;;&#xA;import &#x27;dart:typed_data&#x27;;&#xA;import &#x27;package:image_gallery_saver/image_gallery_saver.dart&#x27;;&#xA;import &#x27;package:speech_to_text/speech_to_text.dart&#x27; as stt;&#xA;&#xA;void main() {&#xA;  runApp(MyApp());&#xA;}&#xA;&#xA;class MyApp extends StatelessWidget {&#xA;  @override&#xA;  Widget build(BuildContext context) {&#xA;    return MaterialApp(&#xA;      home: MyHomePage(),&#xA;    );&#xA;  }&#xA;}&#xA;&#xA;class MyHomePage extends StatefulWidget {&#xA;  @override&#xA;  _MyHomePageState createState() => _MyHomePageState();&#xA;}&#xA;&#xA;class _MyHomePageState extends State<myhomepage> {&#xA;  TextEditingController _textEditingController = TextEditingController();&#xA;  late stt.SpeechToText _speech;&#xA;  bool _isListening = false;&#xA;&#xA;  @override&#xA;  void initState() {&#xA;    super.initState();&#xA;    _speech = stt.SpeechToText();&#xA;  }&#xA;&#xA;  void _listen() async {&#xA;    if (!_isListening) {&#xA;      bool available = await _speech.initialize(&#xA;        onStatus: (val) => print(&#x27;onStatus: $val&#x27;),&#xA;        onError: (val) => print(&#x27;onError: $val&#x27;),&#xA;      );&#xA;      if (available) {&#xA;        setState(() => _isListening = true);&#xA;        _speech.listen(&#xA;          onResult: (val) => setState(() {&#xA;            _textEditingController.text = val.recognizedWords;&#xA;            if (val.hasConfidenceRating &amp;&amp; val.confidence > 0) {&#xA;              _showImages(val.recognizedWords);&#xA;            }&#xA;          }),&#xA;        );&#xA;      }&#xA;    } else {&#xA;      setState(() => _isListening = false);&#xA;      _speech.stop();&#xA;    }&#xA;  }&#xA;&#xA;  @override&#xA;  Widget build(BuildContext context) {&#xA;    return Scaffold(&#xA;      appBar: AppBar(&#xA;        title: Text(&#x27;Image Viewer&#x27;),&#xA;      ),&#xA;      body: Padding(&#xA;        padding: const EdgeInsets.all(16.0),&#xA;        child: Column(&#xA;          mainAxisAlignment: MainAxisAlignment.center,&#xA;          children: [&#xA;            TextField(&#xA;              controller: _textEditingController,&#xA;              decoration: const InputDecoration(&#xA;                labelText: &#x27;Enter a word&#x27;,&#xA;              ),&#xA;            ),&#xA;            SizedBox(height: 16.0),&#xA;            ElevatedButton(&#xA;              onPressed: () {&#xA;                String userInput = _textEditingController.text;&#xA;                _showImages(userInput);&#xA;              },&#xA;              child: Text(&#x27;Show Images&#x27;),&#xA;            ),&#xA;            SizedBox(height: 16.0),&#xA;            ElevatedButton(&#xA;              onPressed: _listen,&#xA;              child: Text(_isListening ? &#x27;Stop Listening&#x27; : &#x27;Start Listening&#x27;),&#xA;            ),&#xA;          ],&#xA;        ),&#xA;      ),&#xA;    );&#xA;  }&#xA;&#xA;Future<void> _showImages(String userInput) async {&#xA;  String directoryPath = &#x27;assets/output_images/&#x27;;&#xA;  print("User Input: $userInput");&#xA;  print("Directory Path: $directoryPath");&#xA;&#xA;  List<string> assetFiles = await rootBundle&#xA;      .loadString(&#x27;AssetManifest.json&#x27;)&#xA;      .then((String manifestContent) {&#xA;    final Map manifestMap = json.decode(manifestContent);&#xA;    return manifestMap.keys&#xA;        .where((String key) => key.startsWith(directoryPath))&#xA;        .toList();&#xA;  });&#xA;&#xA;  List<string> imageFiles = assetFiles.where((String assetPath) =>&#xA;      assetPath.toLowerCase().endsWith(&#x27;.jpg&#x27;) ||&#xA;      assetPath.toLowerCase().endsWith(&#x27;.gif&#x27;)).toList();&#xA;&#xA;  List<string> words = userInput.split(&#x27; &#x27;); // Tokenize the sentence into words&#xA;&#xA;  for (String word in words) {&#xA;    String wordImagePath = &#x27;$directoryPath$word.gif&#x27;;&#xA;&#xA;    if (imageFiles.contains(wordImagePath)) {&#xA;      await _showDialogWithImage(wordImagePath);&#xA;    } else {&#xA;      for (int i = 0; i &lt; word.length; i&#x2B;&#x2B;) {&#xA;        String letter = word[i];&#xA;        String letterImagePath = imageFiles.firstWhere(&#xA;          (assetPath) => assetPath.toLowerCase().endsWith(&#x27;$letter.jpg&#x27;),&#xA;          orElse: () => &#x27;&#x27;,&#xA;        );&#xA;        if (letterImagePath.isNotEmpty) {&#xA;          await _showDialogWithImage(letterImagePath);&#xA;        } else {&#xA;          print(&#x27;No image found for $letter&#x27;);&#xA;        }&#xA;      }&#xA;    }&#xA;  }&#xA;}&#xA;&#xA;  &#xA;&#xA;  Future<void> _showDialogWithImage(String imagePath) async {&#xA;    await showDialog<void>(&#xA;      context: context,&#xA;      builder: (BuildContext context) {&#xA;        return AlertDialog(&#xA;          content: Image.asset(imagePath),&#xA;          actions: [&#xA;            TextButton(&#xA;              onPressed: () {&#xA;                Navigator.of(context).pop();&#xA;              },&#xA;              child: Text(&#x27;Close&#x27;),&#xA;            ),&#xA;            TextButton(&#xA;              onPressed: () async {&#xA;                await _downloadImage(imagePath);&#xA;                Navigator.of(context).pop();&#xA;              },&#xA;              child: Text(&#x27;Download&#x27;),&#xA;            ),&#xA;          ],&#xA;        );&#xA;      },&#xA;    );&#xA;  }&#xA;&#xA;  Future<void> _downloadImage(String assetPath) async {&#xA;    try {&#xA;      final ByteData data = await rootBundle.load(assetPath);&#xA;      final List<int> bytes = data.buffer.asUint8List();&#xA;&#xA;      final result = await ImageGallerySaver.saveImage(Uint8List.fromList(bytes));&#xA;&#xA;      if (result != null) {&#xA;        ScaffoldMessenger.of(context).showSnackBar(&#xA;          SnackBar(&#xA;            content: Text(&#x27;Image saved to gallery.&#x27;),&#xA;          ),&#xA;        );&#xA;      } else {&#xA;        ScaffoldMessenger.of(context).showSnackBar(&#xA;          SnackBar(&#xA;            content: Text(&#x27;Failed to save image to gallery.&#x27;),&#xA;          ),&#xA;        );&#xA;      }&#xA;    } catch (e) {&#xA;      print(&#x27;Error downloading image: $e&#x27;);&#xA;    }&#xA;  }&#xA;}&#xA;&#xA;</int></void></void></void></string></string></string></void></myhomepage>

    &#xA;

  • Android FFMpeg guardian project IOException : Permission Denied

    30 décembre 2016, par sector11

    I have cloned compiled ffmpeg binary from here https://github.com/guardianproject/android-ffmpeg and using in android project reference from here https://github.com/guardianproject/android-ffmpeg-java

    But i am not able to get -version command output as it is saying Caused by: java.io.IOException: Permission denied

    Error Logs as follow :

    Permission changed now
    12-30 02:30:20.083 3765-3765/in.ashish29agre.ffmpeg I/System.out: Permission changed now
    12-30 02:30:20.083 3765-3765/in.ashish29agre.ffmpeg I/System.out: Binary path: /data/data/in.ashish29agre.ffmpeg/app_bin/ffmpeg
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg I/TestActivity: Progress: -version
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err: java.io.IOException: Error running exec(). Command: [-version] Working Directory: /data/data/in.ashish29agre.ffmpeg/app_bin Environment: [ANDROID_ROOT=/system, LOOP_MOUNTPOINT=/mnt/obb, ANDROID_BOOTLOGO=1, LD_LIBRARY_PATH=/vendor/lib:/system/lib, EXTERNAL_STORAGE=/storage/sdcard, ANDROID_SOCKET_zygote=9, ANDROID_DATA=/data, PATH=/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin, ANDROID_ASSETS=/system/app, ASEC_MOUNTPOINT=/mnt/asec, BOOTCLASSPATH=/system/framework/core.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/webviewchromium.jar, ANDROID_PROPERTY_WORKSPACE=8,0, ANDROID_STORAGE=/storage]
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at java.lang.ProcessManager.exec(ProcessManager.java:211)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at java.lang.ProcessBuilder.start(ProcessBuilder.java:195)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at org.ffmpeg.android.FfmpegController.execProcess(FfmpegController.java:137)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at org.ffmpeg.android.FfmpegController.execFFMPEG(FfmpegController.java:101)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at org.ffmpeg.android.FfmpegController.execFFMPEG(FfmpegController.java:111)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at in.ashish29agre.ffmpeg.TestActivity.onResume(TestActivity.java:37)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at android.app.Activity.performResume(Activity.java:5310)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2778)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2817)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at android.app.ActivityThread.access$800(ActivityThread.java:135)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at android.os.Looper.loop(Looper.java:136)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5017)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at java.lang.reflect.Method.invoke(Method.java:515)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at dalvik.system.NativeStart.main(Native Method)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err: Caused by: java.io.IOException: Permission denied
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at java.lang.ProcessManager.exec(Native Method)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:     at java.lang.ProcessManager.exec(ProcessManager.java:209)
    12-30 02:30:20.093 3765-3765/in.ashish29agre.ffmpeg W/System.err:   ... 20 more

    My Activity code is as follows :

    @Override
       protected void onResume() {
           super.onResume();
           File fileTmp = getCacheDir();
           File fileAppRoot = new File(getApplicationInfo().dataDir);
           List<string> commands = new ArrayList&lt;>();
           commands.add("-version");
           try {
               FfmpegController ffmpegController = new FfmpegController(this, fileAppRoot);
               ffmpegController.installBinaries(this, true);
               System.out.println("Binary path: " + ffmpegController.getBinaryPath());

               ffmpegController.execFFMPEG(commands, new ShellUtils.ShellCallback() {
                   @Override
                   public void shellOut(String shellLine) {
                       logger.info("Progress: " + shellLine);

                   }

                   @Override
                   public void processComplete(int exitValue) {
                       logger.info("Process complete");
                   }
               });
           } catch (IOException e) {
               e.printStackTrace();
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       }
    </string>

    Just to make sure that i added permission of reading and writing external storage in manifest here is AndroidManifest.xml

    &lt;?xml version="1.0" encoding="utf-8"?>
    <manifest package="in.test.ffmpeg">

       
       

       <application>
           <activity>
               
                   <action></action>

                   <category></category>
               
           </activity>
       </application>

    </manifest>