Recherche avancée

Médias (91)

Autres articles (76)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

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

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

Sur d’autres sites (4968)

  • FFmpeg conform DASH to YouTube Live Stream requirements

    4 septembre 2023, par Aniol Pagès

    I'm trying to stream to YouTube using FFmpeg and DASH. I've generated the stream key and I'm successfully sending the generated files to YouTube. However, YouTube refuses the MPD manifest because it has two AdaptationSet (one for video and one for audio), and the documentation specifies that I should use only one for both video and audio

    


    I've tried to use the -adaptation_sets flag unsuccessfully, and also the -map flag.

    


    Here is one of the commands I've tried :
ffmpeg -re -i "/Users/user/Desktop/file.mp4" \        -map 0:v -map 0:a \        -use_template 1 -use_timeline 1 -window_size 5 -min_seg_duration 5000000 \        -f dash dash.mpd

    


    And with the -adaptation_sets flag :
ffmpeg -re -i "/Users/aniolpages/Desktop/2023-09-03 Taller colar filtrar assubtilar.mp4" -map 0 -map 0 -c:a aac -c:v libx264 \ -use_timeline 1 -use_template 1 \ -window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a" \ -f dash dash.mpd

    


    Has someone been successful to conform the manifest to YouTube requirements ?

    


    Thank you very much !

    


  • How to fix muxer does not support non seekable output error on ffmpeg ?

    19 septembre 2022, par Yusuf

    I am getting this error when I try to stream my video to YouTube rtmps server and I don't know what it means or how to fix it. Can anyone help ?

    


    I first record my screen with Electron's MediaRecorder

    


    then I insert metadata of to the blob (othervise Electron exports without specifying the end of the file)

    


    I convert the webm to mp4 by executing
ffmpeg -i ${tempVideoPath} -c copy ${tempMp4VideoPath}

    


    Then I execute
ffmpeg -re -i ${tempVideoPath} -c copy -f mp4 ${youtubertmpslink}

    


    Finally I get this error :

    


    ffmpeg version 5.1.1-essentials_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 12.1.0 (Rev2, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\yussu\Desktop\Yazilim\electronJS\online-egitim-ogretmen\src\temp\stream-1663141332257.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf59.27.100
  Duration: 00:00:04.98, start: 0.000000, bitrate: 4251 kb/s
  Stream #0:0[0x1](eng): Video: vp9 (Profile 0) (vp09 / 0x39307076), yuv420p(tv), 1920x1080, 4179 kb/s, SAR 1:1 DAR 16:9, 23.07 fps, 16k tbr, 16k tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](eng): Audio: opus (Opus / 0x7375704F), 48000 Hz, stereo, fltp, 99 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
[mp4 @ 000001bd5ee76440] muxer does not support non seekable output
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:1 -- 
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
    Last message repeated 1 times

    at ChildProcess.exithandler (child_process.js:308)
    at ChildProcess.emit (events.js:210)
    at maybeClose (internal/child_process.js:1021)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:283)```


    


  • AsyncTask publishProgress() does not update progress ffmpeg android

    7 février 2014, par jay

    I am using ffmpeg commands for processing media files.In doInBackground() method i have started the process and every time i get the duration , time values and grabbing progress using time and duration and send progress to publishProgress(progress).When i tested on google nexus(android 4.4 kitkat) it is updating progress dialog correctly but this won't happen in below android 4.4 devices.It is updating with an eye blink of time after completion of the process.
    Here is my code :

    protected String doInBackground(String... params)  {
               // TODO Auto-generated method stub  
               try {
                   proc = mProcess.start();
               } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
               }
               processDuration(proc.getErrorStream());

               // Wait for process to exit
               int exitCode = 1; // Assume error
               try {
                   exitCode = proc.waitFor();
               } catch (InterruptedException e) {
                   Log.e(TAG, "Process interrupted!", e);
               }
               onExit(exitCode);          
               return null;            
           }

           private void onExit(int exitCode) {
               // TODO Auto-generated method stub
               Log.i("exit code >>>>>>>>..", ""+exitCode);
           }

           private void processDuration(InputStream errorStream) {
               // TODO Auto-generated method stub
               Scanner sc = new Scanner(errorStream);          
               // Find duration
               Pattern durPattern = Pattern.compile("(?<=Duration: )[^,]*");
               String dur = sc.findWithinHorizon(durPattern, 0);
               if (dur==null) throw new RuntimeException("Could not parse    duration.");          
               String[] hms = dur.split(":");
               try{
                   totalSecs= Integer.parseInt(hms[0]) * 3600 + Integer.parseInt(hms[1]) *  60 + Double.parseDouble(hms[2]);
                   Log.i(" progress>>>>>>>>>>>>>",""+totalSecs);
               }catch(NumberFormatException e){

               }
               Pattern timePattern = Pattern.compile("(?<=time=)[\\d:.]*");
               String match= sc.findWithinHorizon(timePattern, 0);            
               while (null != (match = sc.findWithinHorizon(timePattern, 0))) {
                   hms = match.split(":");
                   try{
                       processedSecs= Integer.parseInt(hms[0]) * 3600 + Integer.parseInt(hms[1]) *  60 + Double.parseDouble(hms[2]);
                   }catch(NumberFormatException e){

                   }
                   progress = processedSecs / totalSecs;  
                   final int finalProgress=(int)(progress*100);
                   try {

                       publishProgress(""+finalProgress);

                       Thread.sleep(1000);
                   } catch (InterruptedException e) {
                       // TODO Auto-generated catch block
                       e.printStackTrace();
                   }

               }
               publishProgress(""+100);
           }

           protected void onPostExecute(String  result) {
               super.onPostExecute(result);                
               mProgressDialog.dismiss();

           }

           protected void onPreExecute() {
               super.onPreExecute();
               showDialog(DIALOG_DOWNLOAD_PROGRESS);              
           }

           protected void onProgressUpdate(String... progress) {
               mProgressDialog.setProgress(Integer.parseInt(progress[0]));
               super.onProgressUpdate(progress);
           }

           public Dialog showDialog(int id) {
           // TODO Auto-generated method stub
           switch (id) {
           case DIALOG_DOWNLOAD_PROGRESS:
               mProgressDialog = new ProgressDialog(context);
               mProgressDialog.setMessage(loading process..");
               mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
               mProgressDialog.setCancelable(false);
               mProgressDialog.setMax(100);
               mProgressDialog.setCanceledOnTouchOutside(false);
               mProgressDialog.show();
               return mProgressDialog;
           default:
               return null;
           }
       }
       }

    Thanks for Your Help..
    Please help me out this problem..........