Recherche avancée

Médias (0)

Mot : - Tags -/logo

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (39)

  • Librairies et logiciels spécifiques aux médias

    10 décembre 2010, par

    Pour un fonctionnement correct et optimal, plusieurs choses sont à prendre en considération.
    Il est important, après avoir installé apache2, mysql et php5, d’installer d’autres logiciels nécessaires dont les installations sont décrites dans les liens afférants. Un ensemble de librairies multimedias (x264, libtheora, libvpx) utilisées pour l’encodage et le décodage des vidéos et sons afin de supporter le plus grand nombre de fichiers possibles. Cf. : ce tutoriel ; FFMpeg avec le maximum de décodeurs et (...)

  • La sauvegarde automatique de canaux SPIP

    1er avril 2010, par

    Dans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
    Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)

  • Installation en mode ferme

    4 février 2011, par

    Le mode ferme permet d’héberger plusieurs sites de type MediaSPIP en n’installant qu’une seule fois son noyau fonctionnel.
    C’est la méthode que nous utilisons sur cette même plateforme.
    L’utilisation en mode ferme nécessite de connaïtre un peu le mécanisme de SPIP contrairement à la version standalone qui ne nécessite pas réellement de connaissances spécifique puisque l’espace privé habituel de SPIP n’est plus utilisé.
    Dans un premier temps, vous devez avoir installé les mêmes fichiers que l’installation (...)

Sur d’autres sites (7280)

  • Add audio to Xuggler video stream (ffmpeg)

    11 avril 2017, par zholmes1

    I am trying to set up Facebook live video streaming in Java. I maintain a BufferedImage separately from this method which contains the image that is being streamed. I am connecting successfully and streaming the video, but Facebook takes the video down after two minutes because I am not sending audio as well. How can I add audio to this stream ?

       IContainer container = IContainer.make();
       IContainerFormat containerFormat_live = IContainerFormat.make();
       containerFormat_live.setOutputFormat("flv", streamUrl, null);
       container.setInputBufferLength(0);
       int retVal = container.open(streamUrl, IContainer.Type.WRITE, containerFormat_live);
       if (retVal < 0) {
           System.err.println("Could not open output container for live stream");
           System.exit(1);
       }


       IStream videoStream = container.addNewStream(0);
       IStreamCoder videoCoder = videoStream.getStreamCoder();
       ICodec videoCodec = ICodec.findEncodingCodec(ICodec.ID.CODEC_ID_H264);
       videoCoder.setNumPicturesInGroupOfPictures(5);
       videoCoder.setCodec(videoCodec);
       videoCoder.setBitRate(200000);
       videoCoder.setPixelType(IPixelFormat.Type.YUV420P);
       videoCoder.setHeight(IMAGE_HEIGHT_PX_OUTPUT);
       videoCoder.setWidth(IMAGE_WIDTH_PX_OUTPUT);
       System.out.println("[ENCODER] video size is " + IMAGE_HEIGHT_PX_OUTPUT + "x" + IMAGE_WIDTH_PX_OUTPUT);
       videoCoder.setFlag(IStreamCoder.Flags.FLAG_QSCALE, true);
       videoCoder.setGlobalQuality(0);
       IRational frameRate = IRational.make(30, 1);
       videoCoder.setFrameRate(frameRate);

       IRational timeBase = IRational.make(frameRate.getDenominator(), frameRate.getNumerator());
       videoCoder.setTimeBase(timeBase);

    //        IStream audioStream = container.addNewStream(1);
    //        IStreamCoder audioCoder = audioStream.getStreamCoder();
    //        ICodec audioCodec = ICodec.findEncodingCodec(ICodec.ID.CODEC_ID_AAC);
    //        audioCoder.setCodec(audioCodec);
    //        audioCoder.setBitRate(128 * 1024);
    //        audioCoder.setChannels(1);
    //        audioCoder.setSampleRate(44100);
    //        audioCoder.setFrameRate(IRational.make(1, 1));
    //        audioCoder.setTimeBase(timeBase);
    //
    //        IAudioResampler audioResampler = IAudioResampler.make(audioCoder.getChannels(), audioCoder.getChannels(), audioCoder.getSampleRate(), audioCoder.getSampleRate(), IAudioSamples.Format.FMT_S32, audioCoder.getSampleFormat());

       Properties props = new Properties();
       InputStream is = XugglerRtmpReferenceImpl.class.getResourceAsStream("/libx264-normal.ffpreset");
       try {
           props.load(is);
       } catch (IOException e) {
           System.err.println("You need the libx264-normal.ffpreset file from the Xuggle distribution in your classpath.");
           System.exit(1);
       }

       Configuration.configure(props, videoCoder);
    //        Configuration.configure(props, audioCoder);

       videoCoder.open();
    //        audioCoder.open();
       container.writeHeader();

    //        IAudioSamples audioSamples = IAudioSamples.make(512, audioCoder.getChannels());
    //        audioSamples.setComplete(true, 1024, audioCoder.getSampleRate(), audioCoder.getChannels(), IAudioSamples.Format.FMT_S32, 0);
    //
    //        IAudioSamples resampledAudio = IAudioSamples.make(512, audioCoder.getChannels(), IAudioSamples.Format.FMT_S32);
    //        audioResampler.resample(resampledAudio, audioSamples, 0);


       long firstTimeStamp = System.currentTimeMillis();
       long lastKeyFrameTimestamp = 0;
       long lastTimeStamp = System.currentTimeMillis();
       int i = 0;
       while (streaming) {
           //long iterationStartTime = System.currentTimeMillis();
           long now = System.currentTimeMillis();
           //convert it for Xuggler
           BufferedImage currentScreenshot = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
           currentScreenshot.getGraphics().drawImage(bufferedImage, 0, 0, null);
           //start the encoding process
           IPacket packet = IPacket.make();
           IConverter converter = ConverterFactory.createConverter(currentScreenshot, IPixelFormat.Type.YUV420P);
           long timeStamp = (now - firstTimeStamp) * 1000;
           IVideoPicture outFrame = converter.toPicture(currentScreenshot, timeStamp);

           // make sure there is a keyframe at least every 2 seconds
           if (System.currentTimeMillis() - lastKeyFrameTimestamp > 1500) {
               outFrame.setKeyFrame(true);
               lastKeyFrameTimestamp = System.currentTimeMillis();
           }
           outFrame.setQuality(0);
           videoCoder.encodeVideo(packet, outFrame, 0);
           // audioCoder.encodeAudio(packet, IAudioSamples.make(0, audioCoder.getChannels()), 0);

           outFrame.delete();
           if (packet.isComplete()) {
               container.writePacket(packet);
               System.out.println("[ENCODER] writing packet of size " + packet.getSize() + " for elapsed time " + ((timeStamp - lastTimeStamp) / 1000));
               lastTimeStamp = System.currentTimeMillis();
           }
           System.out.println("[ENCODER] encoded image " + i + " in " + (System.currentTimeMillis() - now));
           i++;
           try {
               // sleep for framerate milliseconds
               Thread.sleep(Math.max((long) (1000 / frameRate.getDouble()) - (System.currentTimeMillis() - now), 0));
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       }
       container.writeTrailer();
  • Revision 53928 : Ajout de la possibilité de ne pas afficher les photos de profil sous ...

    1er novembre 2011, par yffic@… — Log

    Ajout de la possibilité de ne pas afficher les photos de profil sous le bouton facebook like

  • Revision 55037 : Et Google +1 sous forme de lien sans JS (donc sans tracking ! (cf ...

    1er décembre 2011, par real3t@… — Log

    Et Google +1 sous forme de lien sans JS (donc sans tracking ! (cf http://www.ghacks.net/2011/11/30/embed-facebook-twitter-google-plus-without-javascript/)