Recherche avancée

Médias (91)

Autres articles (58)

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

  • truehd : break out part of rematrix_channels into platform-specific callback.

    20 mars 2014, par Ben Avison
    truehd : break out part of rematrix_channels into platform-specific callback.
    

    Verified with profiling that this doesn’t have a measurable effect upon
    overall performance.

    Signed-off-by : Martin Storsjö <martin@martin.st>

    • [DH] libavcodec/mlpdec.c
    • [DH] libavcodec/mlpdsp.c
    • [DH] libavcodec/mlpdsp.h
  • Google Speech - Streaming Request Returns EOF Error

    16 octobre 2017, par Josh

    Using Go, I’m taking a RTMP stream, transcoding it to FLAC (using ffmpeg) and attempting to stream to Google’s Speech API to transcribe the audio. However, I keep getting EOF errors when sending the data. I can’t find any information on this error in the docs so I’m not exactly sure what’s causing it.

    I’m chunking the received data into 3s clips (length isn’t relevant as long as it’s less than the maximum length of a streaming recognition request).

    Here is the core of my code :

    func main() {

       done := make(chan os.Signal)
       received := make(chan []byte)

       go receive(received)
       go transcribe(received)

       signal.Notify(done, os.Interrupt, syscall.SIGTERM)

       select {
       case &lt;-done:
           os.Exit(0)
       }
    }

    func receive(received chan&lt;- []byte) {
       var b bytes.Buffer
       stdout := bufio.NewWriter(&amp;b)

       cmd := exec.Command("ffmpeg", "-i", "rtmp://127.0.0.1:1935/live/key", "-f", "flac", "-ar", "16000", "-")
       cmd.Stdout = stdout

       if err := cmd.Start(); err != nil {
           log.Fatal(err)
       }

       duration, _ := time.ParseDuration("3s")
       ticker := time.NewTicker(duration)

       for {
           select {
           case &lt;-ticker.C:
               stdout.Flush()
               log.Printf("Received %d bytes", b.Len())
               received &lt;- b.Bytes()
               b.Reset()
           }
       }
    }

    func transcribe(received &lt;-chan []byte) {
       ctx := context.TODO()

       client, err := speech.NewClient(ctx)
       if err != nil {
           log.Fatal(err)
       }

       stream, err := client.StreamingRecognize(ctx)
       if err != nil {
           log.Fatal(err)
       }

       // Send the initial configuration message.
       if err = stream.Send(&amp;speechpb.StreamingRecognizeRequest{
           StreamingRequest: &amp;speechpb.StreamingRecognizeRequest_StreamingConfig{
               StreamingConfig: &amp;speechpb.StreamingRecognitionConfig{
                   Config: &amp;speechpb.RecognitionConfig{
                       Encoding:        speechpb.RecognitionConfig_FLAC,
                       LanguageCode:    "en-GB",
                       SampleRateHertz: 16000,
                   },
               },
           },
       }); err != nil {
           log.Fatal(err)
       }

       for {
           select {
           case data := &lt;-received:
               if len(data) > 0 {
                   log.Printf("Sending %d bytes", len(data))
                   if err := stream.Send(&amp;speechpb.StreamingRecognizeRequest{
                       StreamingRequest: &amp;speechpb.StreamingRecognizeRequest_AudioContent{
                           AudioContent: data,
                       },
                   }); err != nil {
                       log.Printf("Could not send audio: %v", err)
                   }
               }
           }
       }
    }

    Running this code gives this output :

    2017/10/09 16:05:00 Received 191704 bytes
    2017/10/09 16:05:00 Saving 191704 bytes
    2017/10/09 16:05:00 Sending 191704 bytes
    2017/10/09 16:05:00 Could not send audio: EOF

    2017/10/09 16:05:03 Received 193192 bytes
    2017/10/09 16:05:03 Saving 193192 bytes
    2017/10/09 16:05:03 Sending 193192 bytes
    2017/10/09 16:05:03 Could not send audio: EOF

    2017/10/09 16:05:06 Received 193188 bytes
    2017/10/09 16:05:06 Saving 193188 bytes
    2017/10/09 16:05:06 Sending 193188 bytes // Notice that this doesn't error

    2017/10/09 16:05:09 Received 191704 bytes
    2017/10/09 16:05:09 Saving 191704 bytes
    2017/10/09 16:05:09 Sending 191704 bytes
    2017/10/09 16:05:09 Could not send audio: EOF

    Notice that not all of the Sends fail.

    Could anyone point me in the right direction here ? Is it something to do with the FLAC headers or something ? I also wonder if maybe resetting the buffer causes some of the data to be dropped (i.e. it’s a non-trivial operation that actually takes some time to complete) and it doesn’t like this missing information ?

    Any help would be really appreciated.

  • Error -138 returns "Error number -138 occurred"

    29 avril 2016, par bot1131357

    I am trying to create a program that listens for a period of time, and then times out so that it can return to work on other tasks and retry again later. Here is the code I am testing with :

    AVFormatContext *pFormatCtx = NULL;
    AVCodecContext *codecCtx = NULL;
    AVCodec *codec;
    int ret = 0;

    // Register all formats and codecs
    av_register_all();
    avformat_network_init(); // for network streaming

    AVDictionary *d = NULL;           // "create" an empty dictionary
    av_dict_set(&amp;d, "timeout", "5", 0); // add an entry
    av_dict_set(&amp;d, "rtsp_flags", "listen", 0); // add an entry

    char filename[100];
    sprintf_s(filename, sizeof(filename), "%s", "rtsp://127.0.0.1:8554/demo");


    //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    printf_s("Open video file.\n");
    // Open video file
    ret = avformat_open_input(&amp;pFormatCtx, filename, NULL, &amp;d);   // Returns -138 here
    if (ret &lt;0)
    {
       printf_s("Failed: cannot open input.\n");
       av_strerror(ret, errbuf, ERRBUFFLEN);
       fprintf(stderr, "avformat_open_input() fail: %s\n", errbuf);
       continue;
       //return -1; // Couldn't find stream information
    }

    In the listening mode, avformat_open_input() returns -138. Using av_strerror() gives the following explanation : "Error number -138 occurred"

    Is this an Easter egg ? What does -138 stand for ?