Recherche avancée

Médias (1)

Mot : - Tags -/3GS

Autres articles (46)

  • 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

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

Sur d’autres sites (8964)

  • Upgrading Transcooding system, Ideal database to store chunk metadata [closed]

    11 mai 2022, par Vitoo

    I try to update my transcoding system, to make it more efficient and failure resistant. Right now service transcode the whole video at once generating multiply resolution it consumes a lot of resources and when transcoding crash it has to start from beginning.

    


    I think the better method is to chop a video into small 5-10 sec pieces and encode it separately and at the end merge it, but the main problem is to delegate pieces to different encoder workers. I need to store chunks in some database and every worker should lock that it is already working on it and if successful change state to true.

    


    What do you think about this ?
What kind of database should I use ?
Do you have some additional ideas or propositions ?

    


  • Android using JNI without static variables

    21 février 2013, par William Seemann

    I created my own version of Android's MediaMetadataRetriever using the source code for MediaMetadataRetriever.java as the basis. My version uses FFmpeg to retrieve the metadata. This approach works however it relies on static variables in the C code to retain state in between JNI calls. This means I can only use one instance of this class at a time or the state can get corrupted. The two Java functions are defined as follows :

    public class MediaMetadataRetriever
    {
       static {
           System.loadLibrary("metadata_retriever_jni");
       }

       public MediaMetadataRetriever() {

       }

       public native void setDataSource(String path) throws IllegalArgumentException;
       public native String extractMetadata(String key);

    }

    The corresponding C (JNI) code code is :

    const char *TAG = "Java_com_example_metadataexample_MediaMetadataRetriever";
    static AVFormatContext *pFormatCtx = NULL;

    JNIEXPORT void JNICALL
    Java_com_example_metadataexample_MediaMetadataRetriever_setDataSource(JNIEnv *env, jclass obj, jstring jpath) {

       if (pFormatCtx) {
           avformat_close_input(&pFormatCtx);
       }

       char duration[30] = "0";
       const char *uri;

       uri = (*env)->GetStringUTFChars(env, jpath, NULL);

       if (avformat_open_input(&pFormatCtx, uri, NULL, NULL) != 0) {
           __android_log_write(ANDROID_LOG_INFO, TAG, "Metadata could not be retrieved");
           (*env)->ReleaseStringUTFChars(env, jpath, uri);
           jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
           return;
       }

       if (avformat_find_stream_info(pFormatCtx, NULL) < 0) {
           __android_log_write(ANDROID_LOG_INFO, TAG, "Metadata could not be retrieved");
           avformat_close_input(&pFormatCtx);
           (*env)->ReleaseStringUTFChars(env, jpath, uri);
           jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
           return;
       }

       (*env)->ReleaseStringUTFChars(env, jpath, uri);
    }

    JNIEXPORT jstring JNICALL
    Java_com_example_metadataexample_MediaMetadataRetriever_extractMetadata(JNIEnv *env, jclass obj, jstring jkey) {

       const char *key;
       jstring value = NULL;

       key = (*env)->GetStringUTFChars(env, jkey, NULL) ;

       if (!pFormatCtx) {
           goto fail;
       }

       if (key) {
           if (av_dict_get(pFormatCtx->metadata, key, NULL, AV_DICT_IGNORE_SUFFIX)) {
               value = (*env)->NewStringUTF(env, av_dict_get(pFormatCtx->metadata, key, NULL, AV_DICT_IGNORE_SUFFIX)->value);
           }
       }

       fail:
       (*env)->ReleaseStringUTFChars(env, jkey, key);

       return value;
    }

    Sample usage that outlines my issue would be :

    MediaMetadataRetriever mmr = new MediaMetadataRetriever();
    mmr.setDataSource("one.mp3");

    MediaMetadataRetriever mmr2 = new MediaMetadataRetriever();
    // This line resets the data source to two.mp3
    mmr2.setDataSource("two.mp3");

    // should retrieve the artist from one.mp3 but retrieves it from two.mp3 due to the static
    // variable being reset in the previous statement      
    String artist = mmr.extractMetadata(MediaMetadataRetriever.ARTIST);

    Can someone explain how I would structure this code so I could use multiple instances of MediaMetadataRetriever without them interfering with one another ? I don't want to switch the code to C++ and I'm fairly certain I don't need to modify MediaMetadataRetriever.java since this code is taken line-for-line from the Android framework (which allows multiple instances, see example below). It appears I need to re-structure the C code but I'm unsure how to retain state across JNI calls without using a static variable. Thanks in advance.

    File file1 = new File(Environment.getExternalStorageDirectory(), "Music/one.mp3");
    File file2 = new File(Environment.getExternalStorageDirectory(), "Music/two.mp3");

    android.media.MediaMetadataRetriever mmr = new android.media.MediaMetadataRetriever();
    mmr.setDataSource(file1.toString());

    android.media.MediaMetadataRetriever mmr2 = new android.media.MediaMetadataRetriever();
    mmr2.setDataSource(file2.toString());

    // Returns the artist of one.mp3, not two.mp3, as expected. This is the expected behavior
    // and confirms that multiple instances of MediaMetadataRetriever can be used simultaneously
    mmr.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_ARTIST));
  • FFmpeg input file type detection

    17 août 2021, par andbi

    I'm using FFmpeg for converting audio files, and I see that it can automatically derive the correct input source's type regardless of the file's extension and without providing any input type/codec information. At least it works for mp3 and wav files.

    


    The question is which audio file types it might fail to recognize or when it's better to state the input format explicitly (of course, excluding the PCM* types).