Storing a large video file in Fedora doesn't really seem to make sense plus we want to stream the file via RTMP/RTSP/etc instead of http pseudo-streaming. In order to do this we need to store just a url and keep the content outside of Fedora. There are a few ways to do this:
- External Datastream
- Redirect Datastream
- URL stored in a Managed or Inline XML Datastream
Now with #1, the content gets accessed by a call to Fedora and all of the bits are proxied through Fedora. This works well for access control as it would be entirely handled by Fedora but pushing all of the video content through Fedora doesn't seem scalable. Also, only HTTP support is available for external datastreams.
#2 seems more like what we want, but access control would need more work as Fedora merely sends a 302 Redirect back to the browser with the url of the data. Additionally, I discovered when testing that Fedora only recognizes the http protocol. Thus when trying to create a redirect datastream with an rtmp protocol, Fedora throws a 500 Internal Server Error. This is because it tries to make a Java URL object and the underlying JVM instance does not know about the rtmp protocol. This should be relatively easy to add with an URLStreamHandler and setting the java.protocol.handler.pkgs system property. (See attached file.) BUT, I wasn't able to get this working in Fedora under jetty (or tomcat).
The third approach is the most flexible as Fedora doesn't even know it exists but this would make it less obvious from a object modeling and access control standpoint and potentially more prone to breaking.