Recherche avancée

Médias (91)

Autres articles (24)

  • Création définitive du canal

    12 mars 2010, par

    Lorsque votre demande est validée, vous pouvez alors procéder à la création proprement dite du canal. Chaque canal est un site à part entière placé sous votre responsabilité. Les administrateurs de la plateforme n’y ont aucun accès.
    A la validation, vous recevez un email vous invitant donc à créer votre canal.
    Pour ce faire il vous suffit de vous rendre à son adresse, dans notre exemple "http://votre_sous_domaine.mediaspip.net".
    A ce moment là un mot de passe vous est demandé, il vous suffit d’y (...)

  • Utilisation et configuration du script

    19 janvier 2011, par

    Informations spécifiques à la distribution Debian
    Si vous utilisez cette distribution, vous devrez activer les dépôts "debian-multimedia" comme expliqué ici :
    Depuis la version 0.3.1 du script, le dépôt peut être automatiquement activé à la suite d’une question.
    Récupération du script
    Le script d’installation peut être récupéré de deux manières différentes.
    Via svn en utilisant la commande pour récupérer le code source à jour :
    svn co (...)

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

Sur d’autres sites (7016)

  • Using libavcodec to read .mkv video file

    10 mars 2020, par Slav

    Trying to read .mkv file and write it to .bmp, but resulting .bmp is black-and-white and consists of multiple mini-images of what supposed to be written :

    int main()
    {
       av_register_all();
       avformat_network_init();
       avfilter_register_all();

       //crashes on -Ofast without =NULL initialization:
       AVFormatContext * format = NULL;
       if ( avformat_open_input( & format, VIDEO_FILE, NULL, NULL ) != 0 ) {
           cerr << "Could not open file " << VIDEO_FILE << endl;
           return -1;
       }

       // Retrieve stream information
       if ( avformat_find_stream_info( format, NULL ) < 0) {
           cerr << "avformat_find_stream_info() failed." << endl;
           return -1;
       }
       av_dump_format( format, 0, VIDEO_FILE, false );

       AVCodec * video_dec = (AVCodec*)1;
       AVCodec * audio_dec = (AVCodec*)1;
       const auto video_stream_index = av_find_best_stream( format, AVMEDIA_TYPE_VIDEO, -1, -1, & video_dec, 0 );
       const auto audio_stream_index = av_find_best_stream( format, AVMEDIA_TYPE_AUDIO, -1, -1, & audio_dec, 0 );
       if ( video_stream_index < 0 ) {
           cerr << "Failed to find video stream." << endl;
           return -1;
       }
       if ( audio_stream_index < 0 ) {
           cerr << "Failed to find audio stream." << endl;
           return -1;
       }

       AVCodecParameters * videoParams = format->streams[ video_stream_index ]->codecpar;
       cout << "Having " << videoParams->width << " | " << videoParams->height << " video." << endl;

       av_read_play( format );

       // create decoding context
       AVCodecContext * video_ctx = avcodec_alloc_context3( video_dec );
       AVCodecContext * audio_ctx = avcodec_alloc_context3( audio_dec );
       if ( ! video_ctx || ! audio_ctx ) {
           cerr << "Failed to avcodec_alloc_context3()" << endl;
           return -1;
       }
       if ( video_dec->capabilities & AV_CODEC_CAP_TRUNCATED ) video_ctx->flags |= AV_CODEC_FLAG_TRUNCATED; // we do not send complete frames

       /* For some codecs, such as msmpeg4 and mpeg4, width and height
          MUST be initialized there because this information is not
          available in the bitstream. */

       avcodec_parameters_to_context( video_ctx, format->streams[ video_stream_index ]->codecpar );
       avcodec_parameters_to_context( audio_ctx, format->streams[ audio_stream_index ]->codecpar );
       if ( avcodec_open2( video_ctx, video_dec, NULL ) < 0 ) {
           cout << "Failed to open video decoder." << endl;
           return -1;
       }
       if ( avcodec_open2( audio_ctx, audio_dec, NULL ) < 0 ) {
           cout << "Failed to open audio decoder." << endl;
           return -1;
       }

       uint8_t* picture_buffer = (uint8_t*) (av_malloc( avpicture_get_size( AV_PIX_FMT_RGB24 , videoParams->width, videoParams->height ) ));
       AVFrame* picture = av_frame_alloc();
       avpicture_fill( (AVPicture *) picture, picture_buffer, AV_PIX_FMT_RGB24, video_ctx->width, video_ctx->height );

       AVPacket packet;
       av_init_packet( & packet );

       int cnt = 0;
       while ( av_read_frame( format, & packet ) >= 0 && cnt < 10 ) {
           if ( packet.stream_index == video_stream_index ) {
               int check;
               const auto result = avcodec_decode_video2( video_ctx, picture, & check, & packet );
               cout << "Bytes decoded " << result << " check " << check << endl;

               std::string name = "debug/av/";
               name += std::to_string( cnt ) + ".bmp";
               cout << "Writing frame " << name << " with linesize " << picture->linesize[0] << " ..." << endl;
               write_bmp( (uint8_t*) picture->data, videoParams->width, videoParams->height, name.c_str() );

               av_frame_unref( picture );

               ++ cnt;
           }
           else if ( packet.stream_index == audio_stream_index ) {
               cout << "Sound packet" << endl;
           }
           av_free_packet( & packet );
           av_init_packet( & packet );
       }
    }

    How can I fix it ?

  • Evolution #3896 : Bienvenue personnalisée à l’installation d’un plugin

    6 février 2017, par jluc -

    La proposition ne vise pas à ouvrir un nouvel onglet comme les plugins firefox. J’aurais pas du écrire "mini page d’accueil" quand je voulais dire "message d’accueil".

    La proposition vise à donner tout de suite un accès clair et visible aux informations importantes concernant un plugin après son installation et/ou à un message de bienvenue dépendant du plugin.

    Ce qui m’a amené à faire cette proposition c’est le plugin menu_alpha. Voilà tous les mouvements et connaissances que j’ai du avoir pour parvenir à la page de configuration :

    • Savoir qu’il faut le configurer pour que ça marche (sinon on voit rien, pas d’interface)
    • Descendre chercher le plugin dans la liste (car je sais qu’à droite là il y a le bouton "outils" donnant habituellement accès à la config)
    • Cliquer le nom du plugin (car je sais que ça donne des infos supplémentaires dont la doc)
    • Cliquer le lien vers la doc qu’il s’est trouvé être bien là (car je savais qu’une doc bien faite me donnerait l’info cherchée)
    • J’ai alors pu lire la doc, revenir au site et chercher la page de config cherchée, dans les préférences personnelles (j’ai un peu hésité car j’y vais jamais, mais je me suis souvenu de leur accès).

    Un simple lien "configurer" comme le suggère marcimat serait suffisant ici
    mais attention ce n’est pas la même info que celle qui fait apparaître le bouton "outils" à droite de la ligne du plugin dans la liste : menu_alpha n’a pas de bouton "outil" mais a une page de config "exotique" (ailleurs)

    On pourrait alors imaginer qu’il y ait d’autres moyens de faire apparaître ce bouton "outil" (pas seulement la page de configuration classique) et de le faire apparaitre aussi pour la page de config exotique de menu_alpha.
    Ce serait une bonne amélioration.

    On peut aussi supposer que selon les plugins il peut y a d’autres infos à mettre en avant à l’installation... yc un simple message de bienvenue sympa (et non intrusif).

    L’installation de plusieurs plugins simultanés amène des contraintes sur la structure visuelle de ce message, mais il me semble que ça ne change pas grand chose aux solutions envisagées. On peut évidemment juste ajouter le lien "Configurer" à la fin des messages techniques, ou bien insérer des lignes "li" supplémentaires au milieu des messages techniques d’installation, et on peut aussi créer plusieurs nouvelles petites boites à la suite de la boite des messages techniques, une pour chacun des messages personnalisés quand il y en a un.

  • HLS MP4 Independent Segments

    7 décembre 2016, par Mido

    Long story short : Why HLS can’t just play normal MP4 files together one after one ? Why need to segment media file into .ts segments ?

    Details :

    We’ve segmented MP4 file into mini MP4 segments (not TS), each one about 30 seconds for testing. It never plays in any HLS player, just loading all segment files then nothing happens.

    Example MP4 segment Info :

    Format                      : MPEG-4
    Format profile              : Base Media
    Codec ID                    : isom
    File size                   : 1.44 MiB
    Duration                    : 32s 950ms
    Overall bit rate            : 366 Kbps
    Writing application         : Lavf56.25.101

    Video
    ID                          : 1
    Format                      : AVC
    Format/Info                 : Advanced Video Codec
    Format profile              : High@L4.1
    Format settings, CABAC      : Yes
    Format settings, ReFrames   : 6 frames
    Codec ID                    : avc1
    Codec ID/Info               : Advanced Video Coding
    Duration                    : 32s 950ms
    Bit rate                    : 230 Kbps
    Width                       : 426 pixels
    Height                      : 240 pixels
    Display aspect ratio        : 16:9
    Original display aspect rat : 16:9
    Frame rate mode             : Constant
    Frame rate                  : 23.976 fps
    Color space                 : YUV
    Chroma subsampling          : 4:2:0
    Bit depth                   : 8 bits
    Scan type                   : Progressive
    Bits/(Pixel*Frame)          : 0.094
    Stream size                 : 925 KiB (63%)
    Writing library             : x264 core 142 r2495 6a301b6

    Audio
    ID                          : 2
    Format                      : AAC
    Format/Info                 : Advanced Audio Codec
    Format profile              : LC
    Codec ID                    : 40
    Duration                    : 32s 896ms
    Bit rate mode               : Constant
    Bit rate                    : 129 Kbps
    Channel(s)                  : 2 channels
    Channel(s)_Original         : 6 channels
    Channel positions           : Front: L C R, Side: L R, LFE
    Sampling rate               : 48.0 KHz
    Compression mode            : Lossy
    Stream size                 : 517 KiB (35%)

    The Master M3U8 :

    #EXTM3U
    #EXT-X-VERSION:7
    #EXT-X-INDEPENDENT-SEGMENTS

    #EXT-X-STREAM-INF:RESOLUTION=426x240,BANDWIDTH=370000,CODECS="avc1.640015,mp4a.40.2"
    240p.m3u8

    #EXT-X-STREAM-INF:RESOLUTION=640x360,BANDWIDTH=580000,CODECS="avc1.640015,mp4a.40.2"
    360p.m3u8

    #EXT-X-STREAM-INF:RESOLUTION=896x504,BANDWIDTH=900000,CODECS="avc1.640015,mp4a.40.2"
    480p.m3u8

    #EXT-X-STREAM-INF:RESOLUTION=1280x720,BANDWIDTH=1500000,CODECS="avc1.640015,mp4a.40.2"
    720p.m3u8

    240p.m3u8

    #EXTM3U
    #EXT-X-VERSION:7
    #EXT-X-MEDIA-SEQUENCE:0
    #EXT-X-PLAYLIST-TYPE:VOD
    #EXT-X-TARGETDURATION:34

    #EXTINF:33.033033,
    240p000.mp4
    #EXTINF:33.533534,
    240p001.mp4
    #EXTINF:24.941608,
    240p002.mp4
    #EXTINF:28.611945,
    240p003.mp4
    #EXT-X-ENDLIST

    When tested with HLS.js, gives this error :

    Parsing Error:no demux matching with content found,cannot recover,
    last media error recovery failed ...

    Bitmovin Player : loads all segments of all variants and never plays any of them. just stop.

    Tested on Chrome & Firefox On Windows, Safari on Mac, Android and iPad Browsers. Never works on any of them. Are we doing anything wrong ?!