Recherche avancée

Médias (21)

Mot : - Tags -/Nine Inch Nails

Autres articles (82)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

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

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

Sur d’autres sites (11064)

  • How to create a video file webm from chunks by media recorder api using ffmpeg

    17 octobre 2020, par Caio Nakai

    I'm trying to create a webm video file from blobs generated by MediaRecorderAPI in a NodeJS server using FFMPEG. I'm able to create the .webm file but it's not playable, I ran this command $ ffmpeg.exe -v error -i lel.webm -f null - >error.log 2>&1 to generate an error log, the error log file contains this :

    


    


    [null @ 000002ce7501de40] Application provided invalid, non monotonically increasing dts to muxer in stream 0 : 1 >= 1

    


    [h264 @ 000002ce74a727c0] Invalid NAL unit size (804 > 74).

    


    [h264 @ 000002ce74a727c0] Error splitting the input into NAL units.

    


    Error while decoding stream #0:0 : Invalid data found when processing input

    


    


    This is my web server code

    


    const app = require("express")();
const http = require("http").createServer(app);
const io = require("socket.io")(http);
const fs = require("fs");
const child_process = require("child_process");

app.get("/", (req, res) => {
  res.sendFile(__dirname + "/index.html");
});

io.on("connection", (socket) => {
  console.log("a user connected");

  const ffmpeg = child_process.spawn("ffmpeg", [
    "-i",
    "-",
    "-vcodec",
    "copy",
    "-f",
    "flv",
    "rtmpUrl.webm",
  ]);

  ffmpeg.on("close", (code, signal) => {
    console.log(
      "FFmpeg child process closed, code " + code + ", signal " + signal
    );
  });

  ffmpeg.stdin.on("error", (e) => {
    console.log("FFmpeg STDIN Error", e);
  });

  ffmpeg.stderr.on("data", (data) => {
    console.log("FFmpeg STDERR:", data.toString());
  });

  socket.on("message", (msg) => {
    console.log("Writing blob! ");
    ffmpeg.stdin.write(msg);
  });

  socket.on("stop", () => {
    console.log("Stop recording..");
    ffmpeg.kill("SIGINT");
  });
});

http.listen(3000, () => {
  console.log("listening on *:3000");
});



    


    And this is my client code, using HTML, JS :

    


    &#xA;&#xA;  &#xA;    &#xA;    &#xA;    &#xA;  &#xA;  <code class="echappe-js">&lt;script src='http://stackoverflow.com/socket.io/socket.io.js'&gt;&lt;/script&gt;&#xA;  &lt;script&gt;&amp;#xA;    const socket = io();&amp;#xA;    let mediaRecorder = null;&amp;#xA;    const startRecording = (someStream) =&gt; {&amp;#xA;      const mediaStream = new MediaStream();&amp;#xA;      const videoTrack = someStream.getVideoTracks()[0];&amp;#xA;      const audioTrack = someStream.getAudioTracks()[0];&amp;#xA;      console.log(&quot;Video trac &quot;, videoTrack);&amp;#xA;      console.log(&quot;audio trac &quot;, audioTrack);&amp;#xA;      mediaStream.addTrack(videoTrack);&amp;#xA;      mediaStream.addTrack(audioTrack);&amp;#xA;&amp;#xA;      const recorderOptions = {&amp;#xA;        mimeType: &quot;video/webm;codecs=h264&quot;,&amp;#xA;        videoBitsPerSecond: 3 * 1024 * 1024,&amp;#xA;      };&amp;#xA;&amp;#xA;      mediaRecorder = new MediaRecorder(mediaStream, recorderOptions);&amp;#xA;      mediaRecorder.start(1000); // 1000 - the number of milliseconds to record into each Blob&amp;#xA;      mediaRecorder.ondataavailable = (event) =&gt; {&amp;#xA;        console.debug(&quot;Got blob data:&quot;, event.data);&amp;#xA;        if (event.data &amp;amp;&amp;amp; event.data.size &gt; 0) {&amp;#xA;          socket.emit(&quot;message&quot;, event.data);&amp;#xA;        }&amp;#xA;      };&amp;#xA;    };&amp;#xA;&amp;#xA;    const getVideoStream = async () =&gt; {&amp;#xA;      try {&amp;#xA;        const stream = await navigator.mediaDevices.getUserMedia({&amp;#xA;          video: true,&amp;#xA;          audio: true,&amp;#xA;        });&amp;#xA;        startRecording(stream);&amp;#xA;        myVideo.srcObject = stream;&amp;#xA;      } catch (e) {&amp;#xA;        console.error(&quot;navigator.getUserMedia error:&quot;, e);&amp;#xA;      }&amp;#xA;    };&amp;#xA;&amp;#xA;    const stopRecording = () =&gt; {&amp;#xA;      mediaRecorder.stop();&amp;#xA;      socket.emit(&quot;stop&quot;);&amp;#xA;    };&amp;#xA;  &lt;/script&gt;&#xA;  &#xA;    
    

    hello world

    &#xA;

    &#xA;

    &#xA;&#xA; &#xA; &lt;script&gt;&amp;#xA;      const myVideo = document.getElementById(&quot;myvideo&quot;);&amp;#xA;      myVideo.muted = true;&amp;#xA;    &lt;/script&gt;&#xA; &#xA;&#xA;&#xA;

    &#xA;

    Any help is appreciated !

    &#xA;

  • libav live transcode to SFML SoundStream, grabbled and noise

    19 juin 2021, par William Lohan

    I'm so close to have this working but playing with the output sample format or codec context doesn't seem to solve and don't know where to go from here.

    &#xA;

    #include <iostream>&#xA;#include <sfml></sfml>Audio.hpp>&#xA;#include "MyAudioStream.h"&#xA;&#xA;extern "C"&#xA;{&#xA;#include <libavutil></libavutil>opt.h>&#xA;#include <libavutil></libavutil>avutil.h>&#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;#include <libavformat></libavformat>avformat.h>&#xA;#include <libavutil></libavutil>audio_fifo.h>&#xA;#include <libswresample></libswresample>swresample.h>&#xA;}&#xA;&#xA;void setupInput(AVFormatContext *input_format_context, AVCodecContext **input_codec_context, const char *streamURL)&#xA;{&#xA;  // av_find_input_format("mp3");&#xA;  avformat_open_input(&amp;input_format_context, streamURL, NULL, NULL);&#xA;  avformat_find_stream_info(input_format_context, NULL);&#xA;&#xA;  AVDictionary *metadata = input_format_context->metadata;&#xA;  AVDictionaryEntry *name = av_dict_get(metadata, "icy-name", NULL, 0);&#xA;  if (name != NULL)&#xA;  {&#xA;    std::cout &lt;&lt; name->value &lt;&lt; std::endl;&#xA;  }&#xA;  AVDictionaryEntry *title = av_dict_get(metadata, "StreamTitle", NULL, 0);&#xA;  if (title != NULL)&#xA;  {&#xA;    std::cout &lt;&lt; title->value &lt;&lt; std::endl;&#xA;  }&#xA;&#xA;  AVStream *stream = input_format_context->streams[0];&#xA;  AVCodecParameters *codec_params = stream->codecpar;&#xA;  AVCodec *codec = avcodec_find_decoder(codec_params->codec_id);&#xA;  *input_codec_context = avcodec_alloc_context3(codec);&#xA;&#xA;  avcodec_parameters_to_context(*input_codec_context, codec_params);&#xA;  avcodec_open2(*input_codec_context, codec, NULL);&#xA;}&#xA;&#xA;void setupOutput(AVCodecContext *input_codec_context, AVCodecContext **output_codec_context)&#xA;{&#xA;  AVCodec *output_codec = avcodec_find_encoder(AV_CODEC_ID_PCM_S16LE); // AV_CODEC_ID_PCM_S16LE ?? AV_CODEC_ID_PCM_S16BE&#xA;  *output_codec_context = avcodec_alloc_context3(output_codec);&#xA;  (*output_codec_context)->channels = 2;&#xA;  (*output_codec_context)->channel_layout = av_get_default_channel_layout(2);&#xA;  (*output_codec_context)->sample_rate = input_codec_context->sample_rate;&#xA;  (*output_codec_context)->sample_fmt = output_codec->sample_fmts[0]; // AV_SAMPLE_FMT_S16 ??&#xA;  avcodec_open2(*output_codec_context, output_codec, NULL);&#xA;}&#xA;&#xA;void setupResampler(AVCodecContext *input_codec_context, AVCodecContext *output_codec_context, SwrContext **resample_context)&#xA;{&#xA;  *resample_context = swr_alloc_set_opts(&#xA;      *resample_context,&#xA;      output_codec_context->channel_layout,&#xA;      output_codec_context->sample_fmt,&#xA;      output_codec_context->sample_rate,&#xA;      input_codec_context->channel_layout,&#xA;      input_codec_context->sample_fmt,&#xA;      input_codec_context->sample_rate,&#xA;      0, NULL);&#xA;  swr_init(*resample_context);&#xA;}&#xA;&#xA;MyAudioStream::MyAudioStream()&#xA;{&#xA;  input_format_context = avformat_alloc_context();&#xA;  resample_context = swr_alloc();&#xA;}&#xA;&#xA;MyAudioStream::~MyAudioStream()&#xA;{&#xA;  // clean up&#xA;  avformat_close_input(&amp;input_format_context);&#xA;  avformat_free_context(input_format_context);&#xA;}&#xA;&#xA;void MyAudioStream::load(const char *streamURL)&#xA;{&#xA;&#xA;  setupInput(input_format_context, &amp;input_codec_context, streamURL);&#xA;  setupOutput(input_codec_context, &amp;output_codec_context);&#xA;  setupResampler(input_codec_context, output_codec_context, &amp;resample_context);&#xA;&#xA;  initialize(output_codec_context->channels, output_codec_context->sample_rate);&#xA;}&#xA;&#xA;bool MyAudioStream::onGetData(Chunk &amp;data)&#xA;{&#xA;&#xA;  // init&#xA;  AVFrame *input_frame = av_frame_alloc();&#xA;  AVPacket *input_packet = av_packet_alloc();&#xA;  input_packet->data = NULL;&#xA;  input_packet->size = 0;&#xA;&#xA;  // read&#xA;  av_read_frame(input_format_context, input_packet);&#xA;  avcodec_send_packet(input_codec_context, input_packet);&#xA;  avcodec_receive_frame(input_codec_context, input_frame);&#xA;&#xA;  // convert&#xA;  uint8_t *converted_input_samples = (uint8_t *)calloc(output_codec_context->channels, sizeof(*converted_input_samples));&#xA;  av_samples_alloc(&amp;converted_input_samples, NULL, output_codec_context->channels, input_frame->nb_samples, output_codec_context->sample_fmt, 0);&#xA;  swr_convert(resample_context, &amp;converted_input_samples, input_frame->nb_samples, (const uint8_t **)input_frame->extended_data, input_frame->nb_samples);&#xA;&#xA;  data.sampleCount = input_frame->nb_samples;&#xA;  data.samples = (sf::Int16 *)converted_input_samples;&#xA;&#xA;  // av_freep(&amp;converted_input_samples[0]);&#xA;  // free(converted_input_samples);&#xA;  av_packet_free(&amp;input_packet);&#xA;  av_frame_free(&amp;input_frame);&#xA;&#xA;  return true;&#xA;}&#xA;&#xA;void MyAudioStream::onSeek(sf::Time timeOffset)&#xA;{&#xA;  // no op&#xA;}&#xA;&#xA;sf::Int64 MyAudioStream::onLoop()&#xA;{&#xA;  // no loop&#xA;  return -1;&#xA;}&#xA;&#xA;</iostream>

    &#xA;

    Called with

    &#xA;

    #include <iostream>&#xA;&#xA;#include "./MyAudioStream.h"&#xA;&#xA;extern "C"&#xA;{&#xA;#include <libavutil></libavutil>opt.h>&#xA;#include <libavutil></libavutil>avutil.h>&#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;#include <libavformat></libavformat>avformat.h>&#xA;}&#xA;&#xA;const char *streamURL = "http://s5radio.ponyvillelive.com:8026/stream.mp3";&#xA;&#xA;int main(int, char **)&#xA;{&#xA;&#xA;  MyAudioStream myStream;&#xA;&#xA;  myStream.load(streamURL);&#xA;&#xA;  std::cout &lt;&lt; "Hello, world!" &lt;&lt; std::endl;&#xA;&#xA;  myStream.play();&#xA;&#xA;  while (myStream.getStatus() == MyAudioStream::Playing)&#xA;  {&#xA;    sf::sleep(sf::seconds(0.1f));&#xA;  }&#xA;&#xA;  return 0;&#xA;}&#xA;</iostream>

    &#xA;

  • libav live transcode to SFML SoundStream, garbled and noise

    20 juin 2021, par William Lohan

    I'm so close to have this working but playing with the output sample format or codec context doesn't seem to solve and don't know where to go from here.

    &#xA;

    #include <iostream>&#xA;#include <sfml></sfml>Audio.hpp>&#xA;#include "MyAudioStream.h"&#xA;&#xA;extern "C"&#xA;{&#xA;#include <libavutil></libavutil>opt.h>&#xA;#include <libavutil></libavutil>avutil.h>&#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;#include <libavformat></libavformat>avformat.h>&#xA;#include <libavutil></libavutil>audio_fifo.h>&#xA;#include <libswresample></libswresample>swresample.h>&#xA;}&#xA;&#xA;void setupInput(AVFormatContext *input_format_context, AVCodecContext **input_codec_context, const char *streamURL)&#xA;{&#xA;  // av_find_input_format("mp3");&#xA;  avformat_open_input(&amp;input_format_context, streamURL, NULL, NULL);&#xA;  avformat_find_stream_info(input_format_context, NULL);&#xA;&#xA;  AVDictionary *metadata = input_format_context->metadata;&#xA;  AVDictionaryEntry *name = av_dict_get(metadata, "icy-name", NULL, 0);&#xA;  if (name != NULL)&#xA;  {&#xA;    std::cout &lt;&lt; name->value &lt;&lt; std::endl;&#xA;  }&#xA;  AVDictionaryEntry *title = av_dict_get(metadata, "StreamTitle", NULL, 0);&#xA;  if (title != NULL)&#xA;  {&#xA;    std::cout &lt;&lt; title->value &lt;&lt; std::endl;&#xA;  }&#xA;&#xA;  AVStream *stream = input_format_context->streams[0];&#xA;  AVCodecParameters *codec_params = stream->codecpar;&#xA;  AVCodec *codec = avcodec_find_decoder(codec_params->codec_id);&#xA;  *input_codec_context = avcodec_alloc_context3(codec);&#xA;&#xA;  avcodec_parameters_to_context(*input_codec_context, codec_params);&#xA;  avcodec_open2(*input_codec_context, codec, NULL);&#xA;}&#xA;&#xA;void setupOutput(AVCodecContext *input_codec_context, AVCodecContext **output_codec_context)&#xA;{&#xA;  AVCodec *output_codec = avcodec_find_encoder(AV_CODEC_ID_PCM_S16LE); // AV_CODEC_ID_PCM_S16LE ?? AV_CODEC_ID_PCM_S16BE&#xA;  *output_codec_context = avcodec_alloc_context3(output_codec);&#xA;  (*output_codec_context)->channels = 2;&#xA;  (*output_codec_context)->channel_layout = av_get_default_channel_layout(2);&#xA;  (*output_codec_context)->sample_rate = input_codec_context->sample_rate;&#xA;  (*output_codec_context)->sample_fmt = output_codec->sample_fmts[0]; // AV_SAMPLE_FMT_S16 ??&#xA;  avcodec_open2(*output_codec_context, output_codec, NULL);&#xA;}&#xA;&#xA;void setupResampler(AVCodecContext *input_codec_context, AVCodecContext *output_codec_context, SwrContext **resample_context)&#xA;{&#xA;  *resample_context = swr_alloc_set_opts(&#xA;      *resample_context,&#xA;      output_codec_context->channel_layout,&#xA;      output_codec_context->sample_fmt,&#xA;      output_codec_context->sample_rate,&#xA;      input_codec_context->channel_layout,&#xA;      input_codec_context->sample_fmt,&#xA;      input_codec_context->sample_rate,&#xA;      0, NULL);&#xA;  swr_init(*resample_context);&#xA;}&#xA;&#xA;MyAudioStream::MyAudioStream()&#xA;{&#xA;  input_format_context = avformat_alloc_context();&#xA;  resample_context = swr_alloc();&#xA;}&#xA;&#xA;MyAudioStream::~MyAudioStream()&#xA;{&#xA;  // clean up&#xA;  avformat_close_input(&amp;input_format_context);&#xA;  avformat_free_context(input_format_context);&#xA;}&#xA;&#xA;void MyAudioStream::load(const char *streamURL)&#xA;{&#xA;&#xA;  setupInput(input_format_context, &amp;input_codec_context, streamURL);&#xA;  setupOutput(input_codec_context, &amp;output_codec_context);&#xA;  setupResampler(input_codec_context, output_codec_context, &amp;resample_context);&#xA;&#xA;  initialize(output_codec_context->channels, output_codec_context->sample_rate);&#xA;}&#xA;&#xA;bool MyAudioStream::onGetData(Chunk &amp;data)&#xA;{&#xA;&#xA;  // init&#xA;  AVFrame *input_frame = av_frame_alloc();&#xA;  AVPacket *input_packet = av_packet_alloc();&#xA;  input_packet->data = NULL;&#xA;  input_packet->size = 0;&#xA;&#xA;  // read&#xA;  av_read_frame(input_format_context, input_packet);&#xA;  avcodec_send_packet(input_codec_context, input_packet);&#xA;  avcodec_receive_frame(input_codec_context, input_frame);&#xA;&#xA;  // convert&#xA;  uint8_t *converted_input_samples = (uint8_t *)calloc(output_codec_context->channels, sizeof(*converted_input_samples));&#xA;  av_samples_alloc(&amp;converted_input_samples, NULL, output_codec_context->channels, input_frame->nb_samples, output_codec_context->sample_fmt, 0);&#xA;  swr_convert(resample_context, &amp;converted_input_samples, input_frame->nb_samples, (const uint8_t **)input_frame->extended_data, input_frame->nb_samples);&#xA;&#xA;  data.sampleCount = input_frame->nb_samples;&#xA;  data.samples = (sf::Int16 *)converted_input_samples;&#xA;&#xA;  // av_freep(&amp;converted_input_samples[0]);&#xA;  // free(converted_input_samples);&#xA;  av_packet_free(&amp;input_packet);&#xA;  av_frame_free(&amp;input_frame);&#xA;&#xA;  return true;&#xA;}&#xA;&#xA;void MyAudioStream::onSeek(sf::Time timeOffset)&#xA;{&#xA;  // no op&#xA;}&#xA;&#xA;sf::Int64 MyAudioStream::onLoop()&#xA;{&#xA;  // no loop&#xA;  return -1;&#xA;}&#xA;&#xA;</iostream>

    &#xA;

    Called with

    &#xA;

    #include <iostream>&#xA;&#xA;#include "./MyAudioStream.h"&#xA;&#xA;extern "C"&#xA;{&#xA;#include <libavutil></libavutil>opt.h>&#xA;#include <libavutil></libavutil>avutil.h>&#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;#include <libavformat></libavformat>avformat.h>&#xA;}&#xA;&#xA;const char *streamURL = "http://s5radio.ponyvillelive.com:8026/stream.mp3";&#xA;&#xA;int main(int, char **)&#xA;{&#xA;&#xA;  MyAudioStream myStream;&#xA;&#xA;  myStream.load(streamURL);&#xA;&#xA;  std::cout &lt;&lt; "Hello, world!" &lt;&lt; std::endl;&#xA;&#xA;  myStream.play();&#xA;&#xA;  while (myStream.getStatus() == MyAudioStream::Playing)&#xA;  {&#xA;    sf::sleep(sf::seconds(0.1f));&#xA;  }&#xA;&#xA;  return 0;&#xA;}&#xA;</iostream>

    &#xA;