title: Audio recorded with MediaRecorder on Chrome missing duration
body: <p>I am recording audio (oga/vorbis) files with MediaRecorder. When I record these file through Chrome I get problems: I cannot edit the files on ffmpeg and when I try to play them on Firefox it says they are corrupt (they do play fine on Chrome though). </p>
  
  <p>Looking at their metadata on ffmpeg I get this:</p>
  
  <pre><code>Input #0, matroska,webm, from '91.oga':
    Metadata:
      encoder         : Chrome
    Duration: N/A, start: 0.000000, bitrate: N/A
      Stream #0:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)
  [STREAM]
  index=0
  codec_name=opus
  codec_long_name=Opus (Opus Interactive Audio Codec)
  profile=unknown
  codec_type=audio
  codec_time_base=1/48000
  codec_tag_string=[0][0][0][0]
  codec_tag=0x0000
  sample_fmt=fltp
  sample_rate=48000
  channels=1
  channel_layout=mono
  bits_per_sample=0
  id=N/A
  r_frame_rate=0/0
  avg_frame_rate=0/0
  time_base=1/1000
  start_pts=0
  start_time=0.000000
  duration_ts=N/A
  duration=N/A
  bit_rate=N/A
  max_bit_rate=N/A
  bits_per_raw_sample=N/A
  nb_frames=N/A
  nb_read_frames=N/A
  nb_read_packets=N/A
  DISPOSITION:default=1
  DISPOSITION:dub=0
  DISPOSITION:original=0
  DISPOSITION:comment=0
  DISPOSITION:lyrics=0
  DISPOSITION:karaoke=0
  DISPOSITION:forced=0
  DISPOSITION:hearing_impaired=0
  DISPOSITION:visual_impaired=0
  DISPOSITION:clean_effects=0
  DISPOSITION:attached_pic=0
  TAG:language=eng
  [/STREAM]
  [FORMAT]
  filename=91.oga
  nb_streams=1
  nb_programs=0
  format_name=matroska,webm
  format_long_name=Matroska / WebM
  start_time=0.000000
  duration=N/A
  size=7195
  bit_rate=N/A
  probe_score=100
  TAG:encoder=Chrome
  </code></pre>
  
  <p>As you can see there are problems with the duration. I have looked at posts like this:
  <a href="https://stackoverflow.com/questions/38443084/how-can-i-add-predefined-length-to-audio-recorded-from-mediarecorder-in-chrome">How can I add predefined length to audio recorded from MediaRecorder in Chrome?</a></p>
  
  <p>But even trying that, I got errors when trying to chop and merge files.For example when running: </p>
  
  <pre><code>ffmpeg -f concat  -i 89_inputs.txt -c copy final.oga
  </code></pre>
  
  <p>I get a lot of this:</p>
  
  <pre><code>[oga @ 00000000006789c0] Non-monotonous DTS in output stream 0:0; previous: 57612, current: 1980; changing to 57613. This may result in incorrect timestamps in the output file.
  [oga @ 00000000006789c0] Non-monotonous DTS in output stream 0:0; previous: 57613, current: 2041; changing to 57614. This may result in incorrect timestamps in the output file.
  DTS -442721849179034176, next:42521 st:0 invalid dropping
  PTS -442721849179034176, next:42521 invalid dropping st:0
  [oga @ 00000000006789c0] Non-monotonous DTS in output stream 0:0; previous: 57614, current: 2041; changing to 57615. This may result in incorrect timestamps in the output file.
  [oga @ 00000000006789c0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
  DTS -442721849179031296, next:42521 st:0 invalid dropping
  PTS -442721849179031296, next:42521 invalid dropping st:0
  </code></pre>
  
  <p>Does anyone know what we need to do to audio files recorded from Chrome for them to be useful? Or is there a problem with my setup?</p>
  
  <p>Recorder js:</p>
  
  <pre><code>if (navigator.getUserMedia) {
    console.log('getUserMedia supported.');
  
    var constraints = { audio: true };
    var chunks = [];
  
    var onSuccess = function(stream) {
      var mediaRecorder = new MediaRecorder(stream);
  
      record.onclick = function() {
        mediaRecorder.start();
        console.log(mediaRecorder.state);
        console.log("recorder started");
        record.style.background = "red";
  
        stop.disabled = false;
        record.disabled = true;
  
        var aud = document.getElementById("audioClip");
        start = aud.currentTime;
      }
  
      stop.onclick = function() {
        console.log(mediaRecorder.state);
        console.log("Recording request sent.");
        mediaRecorder.stop();
      }
  
      mediaRecorder.onstop = function(e) {
        console.log("data available after MediaRecorder.stop() called.");
  
        var audio = document.createElement('audio');
        audio.setAttribute('controls', '');
        audio.setAttribute('id', 'audioClip');
  
        audio.controls = true;
        var blob = new Blob(chunks, { 'type' : 'audio/ogg; codecs="vorbis"' });
        chunks = [];
        var audioURL = window.URL.createObjectURL(blob);
        audio.src = audioURL;
  
        sendRecToPost(blob);   // this just send the audio blob to the server by post
        console.log("recorder stopped");
  
      }
  </code></pre>