Recherche avancée

Médias (33)

Mot : - Tags -/creative commons

Autres articles (40)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

Sur d’autres sites (6371)

  • How to restream multicast stream with ffmpeg

    26 octobre 2020, par verb

    I am new to ffmpeg and need to restream multicast and scale it. Tried different parameters and i have managed to restream and scale but it always appear some pat,pmt or pcr error and som interuptions in the stream appear.The input stream is cbr 14Mbit and i try to set the bitrate as 6Mbit please check my config and if you notice something wrong let me know :

    


    


    ffmpeg -re -i "udp ://@238.252.250.9:5000 ?overrun_nonfatal=1&fifo_size=1000000&bitrate=70000000&pkt_size=188" -map 0:0 -map 0:2 -b:v 3000k -minrate 3000k -maxrate 4000k -bufsize 8000K -pcr_period 20 -flush_packets 0 -tune zerolatency -preset ultrafast -threads 2 -c:a copy -qmax 12 -f mpegts -muxrate 6M "udp ://@239.253.251.13:5505 ?pkt_size=188&overrun_nonfatal=1&localaddr=10.253.251.66&bitrate=6000000"

    


    


    here is the input stream :

    


    Input #0, mpegts, from 'udp://@238.252.250.9:5000':
  Duration: N/A, start: 46612.831967, bitrate: N/A
  Program 2002 
    Metadata:
      service_name    : RT Doc HD
      service_provider: GLOBECAST
    Stream #0:0[0x7e5]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 50 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x7e6](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:2[0x7e7](eng): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s


    


    I don't understand all parameters especially the parameters concerning input/output udp stream so please help me to solve the correct command.

    


  • how to send the input data to FFMPEG from a C# program

    18 octobre 2020, par jstuardo

    I need to send a binary stream to FFMPEG so that it sends to an RTMP server.

    


    I did it in a nodejs script using socket.io library and in Linux. It works perfectly.

    


    I need to do the same, but in a Windows Forms application using C#.

    


    This is how I run the ffmpeg.exe application :

    


            _currentProcess = new Process();
        _currentProcess.StartInfo.FileName = _ffmpegExe;
        _currentProcess.StartInfo.Arguments = BuildOptions(framesPerSecond, audioBitRate, audioEncoding, rtmpServer);
        _currentProcess.StartInfo.UseShellExecute = false;
        _currentProcess.StartInfo.CreateNoWindow = true;
        _currentProcess.StartInfo.RedirectStandardInput = true;
        _currentProcess.StartInfo.RedirectStandardError = true;
        _currentProcess.ErrorDataReceived += CurrentProcess_ErrorDataReceived;
        _currentProcess.Start();
        _currentProcess.BeginErrorReadLine();


    


    BuildOptions method is defined this way :

    


        private string BuildOptions(int framesPerSecond, int audioBitRate, string audioEncoding, string rtmpServer)
    {
        string options;
        if (framesPerSecond == 1)
        {
            options = $"-i - -c:v libx264 -preset ultrafast -tune zerolatency -r 1 -g 2 -keyint_min 2 -x264opts keyint=2 -crf 25 -pix_fmt yuv420p -profile:v baseline -level 3 -c:a aac -b:a {audioEncoding} -ar {audioBitRate}-f flv {rtmpServer}";
        }
        else if (framesPerSecond == 15)
        {
            options = $"-i - -c:v libx264 -preset ultrafast -tune zerolatency max_muxing_queue_size 1000 -bufsize 5000 -r 15 -g 30 -keyint_min 30 -x264opts keyint=30 -crf 25 -pix_fmt yuv420p -profile:v baseline -level 3 -c:a aac -b:a {audioEncoding} -ar {audioBitRate} -f flv {rtmpServer}";
        }
        else
        {
            options = $"-i - -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -ar {audioBitRate} -b:a {audioEncoding} -bufsize 5000 -f flv {rtmpServer}";
        }

        return options;
    }


    


    I am sending the data to the standard input this way :

    


        public void EncodeAndSend(byte[] data)
    {
        if (_currentProcess != null)
        {
            var streamWriter = _currentProcess.StandardInput;
            streamWriter.Write(Encoding.GetEncoding("ISO-8859-1").GetChars(data));
        }
    }


    


    And finally, this method is for receiving the standard error which receives the result from ffmpeg.exe :

    


        private void CurrentProcess_ErrorDataReceived(object sender, DataReceivedEventArgs e)
    {
        Console.WriteLine(e.Data);
    }


    


    When I run the application, this is shown in the console :

    


    ffmpeg version 4.3.1-2020-10-01-essentials_build-www.gyan.dev Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 10.2.0 (Rev3, 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      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
pipe:: Invalid data found when processing input


    


    If I change the EncodeAndSend method to be :

    


        public void EncodeAndSend(byte[] data)
    {
        if (_currentProcess != null)
        {
            var streamWriter = _currentProcess.StandardInput;
            streamWriter.Write(data);
        }
    }


    


    pipe:: Invalid data found when processing input error is not produced, but no more outputs are shown so it seems it is not working.

    


    What is wrong with this ? how can I send the data to the FFMPEG process ?

    


    Finally, I tell you that the binary stream comes from the camera by mean of MediaRecorder in a web page (the same used for my program in nodejs server, so that it is not the issue here)

    


  • ffmpeg rtp-stream with gsm-codec

    15 octobre 2020, par Birgit

    I want to use ffmpeg for encoding and decoding gsm. I built ffmpeg with the --enable-libgsm option.

    


    I can now use the ffmpeg-command-line-tool to read gsm-encoded files, convert files to gsm, and also receive a gsm-encoded rtp stream.
So therefore I think the gsm-encoder and gsm-decoder are working properly.

    


    But for some reason I am not able to send and gsm-encoded rtp-stream.

    


    I tried the following comands :

    


    ffmpeg -re -i test.wav -c:a libgsm -f rtp rtp://127.0.0.1:5000

    


    ffmpeg -re -i test.wav -c:a gsm -f rtp rtp://127.0.0.1:5000

    


    I receive the error : Unsupported codec gsm. Could not write header for output file.

    


    I tried to use gdb to see what's going on. I think the problem is that in the file libavformat/rtpenc.c:49 gsm is not under the supported codecs. Does that mean it is not possible to use ffmpeg to create a gsm-encoded rtp-stream ? Is there a workaround, to overcome this issue ?

    


    I would appreciate any help and hints what I could try. :)