<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>I've got the source (latest rev from the archives) and have it
      built.  It appears to run ok.</p>
    <p>I'm trying to extract video from a webcam, and running into some
      issues.  In order:</p>
    <p>1. Using MP4 format ("-4" switch) works sort-of.  The camera is
      set to a 10fps frame rate due to network bandwidth considerations
      when streamed live.  If I make an .mp4 I can play it with the
      Windows video player (assuming I cleanly terminate it) BUT VLC
      fails to play it if I transfer the file to my Android phone and if
      I attempt to feed it to ExoPlayer (using their demo app) it
      complains with the logcat that it cannot find a matching
      Extractor.  Also, on Windows, while the video displays cleanly it
      runs at 1/3 speed (in other words the 10fps rate is not honored, I
      instead get one "tick" of the real-time display every three
      seconds.)  This format, however, isn't useful for what I need
      because you must let the stream finish and the MP4 header get
      written on the file before you can play it (that is, you can't
      stream it in any event.)<br>
    </p>
    <p>2. Attempting to extract just the video track ("-v") appears to
      work, and a file command shows "test.h264: JVT NAL sequence, H.264
      video @ L 50", which should be ok.  However, I cannot play that
      with *any* of the tools in question, including VLC and feeding it
      to the ExoPlayer demo -- the latter complains once again that
      there is no valid extractor:</p>
    <p>     Caused by:
      com.google.android.exoplayer2.source.UnrecognizedInputFormatException:
      None of the available extractors (MatroskaExtractor,
      FragmentedMp4Extractor, Mp4Extractor, Mp3Extractor, AdtsExtractor,
      Ac3Extractor, TsExtractor, FlvExtractor, OggExtractor,
      PsExtractor, WavExtractor, AmrExtractor, FlacExtractor) could read
      the stream.<br>
              at
com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractorHolder.selectExtractor(ExtractorMediaPeriod.java:941)<br>
              at
com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:863)<br>
              at
com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:317)<br>
              at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)<br>
              at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)<br>
              at java.lang.Thread.run(Thread.java:761)<br>
      05-24 14:29:13.010 16486-16486/com.google.android.</p>
    <p>Of note there is now a branch of ExoPlayer (which I'm using in
      this test) that can *directly* hit the same webcam over UDP on the
      same local network via RTSP (it cannot, however, use TCP as a
      transport so it's worthless over the Internet as a whole) and it
      displays just fine -- so the H.264 codec in question has to be ok,
      or I couldn't view the stream live.</p>
    <p>The command I'm using to try to get the H.264 stream is <br>
    </p>
    <p> openRTSP -v
      'rtsp://192.168.4.212/cam/realmonitor?channel=1&subtype=0'
      > vid.h264</p>
    <p>Which, if my understanding of the docs is correct, should produce
      only the video track in the native format, which in this case is
      set on the camera as H.264.</p>
    <p>The negotiation displayed by openRTSP is:</p>
    <p>Received a complete DESCRIBE response:<br>
      RTSP/1.0 200 OK<br>
      CSeq: 4<br>
      x-Accept-Dynamic-Rate: 1<br>
      Content-Base:
      rtsp://192.168.4.212/cam/realmonitor?channel=1&subtype=0/<br>
      Cache-Control: must-revalidate<br>
      Content-Length: 506<br>
      Content-Type: application/sdp<br>
      <br>
      v=0<br>
      o=- 2252171298 2252171298 IN IP4 0.0.0.0<br>
      s=Media Server<br>
      c=IN IP4 0.0.0.0<br>
      t=0 0<br>
      a=control:*<br>
      a=packetization-supported:DH<br>
      a=rtppayload-supported:DH<br>
      a=range:npt=now-<br>
      m=video 0 RTP/AVP 96<br>
      a=control:trackID=0<br>
      a=framerate:10.000000<br>
      a=rtpmap:96 H264/90000<br>
      a=fmtp:96
packetization-mode=1;profile-level-id=4D0032;sprop-parameter-sets=Z00AMppkASAFH/gLcBAQFAAAD6AAATiDoYAaGAAaGC7y40MANDAANDBd5cKAAA==,aO48gAA=<br>
      a=recvonly<br>
      m=audio 0 RTP/AVP 8<br>
      a=control:trackID=1<br>
      a=rtpmap:8 PCMA/16000<br>
      a=recvonly<br>
    </p>
    <p>Which looks ok.....</p>
    <p>Any ideas as to what's going on and why the resulting output file
      is considered invalid?<br>
    </p>
    <div class="moz-signature">-- <br>
      Karl Denninger<br>
      <a href="mailto:karl@denninger.net">karl@denninger.net</a><br>
      <i>The Market Ticker</i><br>
      <font size="-2"><i>[S/MIME encrypted email preferred]</i></font>
    </div>
  </body>
</html>