Rubén,

This is extremely helpful! Thank you.

I have an Apache proxy sitting in front of my MH distribution server. My media package URLs are written like http://<my apache proxy url>/static…

Do I simply need to add a pseudo-streaming module to my apache server and I am good to go? Or will pseudo-streaming not work via mod_proxy? Does anyone have experience using this (http://h264.code-shop.com/trac/wiki) Apache psuedo-streaming module?

Thanks again for everyone's help,

- Doug

From: Rubén Pérez <[email protected]>
Reply-To: Matterhorn Users <[email protected]>
Date: Wednesday, September 26, 2012 8:04 AM
To: Matterhorn Users <[email protected]>
Subject: Re: [Matterhorn-users] qt-faststart

Sorry for the double mail. I've been told that my previous mail have not made it to the list. It contained a couple photos which I think may be too big (:S).

Please find a copy of the text below. Sorry for the inconvenience:

Hello,
As we are distributing MP4+H264 videos in production, we have been investigating this issues for a long while. So let me share some comments about what we found out.
The moov header in an MP4 files used to be required to be at the beginning of the archive, because without that header the video is not playable. However, if your download server has a pseudo-streaming module (which Itotally recommend), the players can first fetch the last part of the file, where most of the muxers (including ffmpeg) store the moov header, and then start downloading the file from the beginning. With a psudo-streaming module,qt-faststart only saves some requests to the server. The impact in the overall performance is minimum, though.
Of course if you are using Jetty (or any other plain download server with not pseudostreaming capabilities) you will need to have the moov header at the beginning of the file if you don't want to wait until all the file has been downloaded to play it.
You can run qt-faststart by using the existing CLIWorkflowOperationHandler, but there are some issues to it:
  1. CLIOperationHandler runs a CLI command in the admin server, but not in the worker(s) where it is expected.
  1. You can not specify a certain (set of) tag(s) or flavor(s) to filter the elements the operation will be applied to, as it happens in other operations such as "compose". Instead, you need to explicitly specify all the mediapackage elements on which you want to apply the operation, and that using a rather cumbersome xpath syntax.
  1. qt-faststart generates another file (it does not operate on the input file directly). Then your script needs to overwrite old file with the new one, or otherwise create an XML representation of a mediapackage that includes that result video as a new track, with proper identification to it (a "qtfaststart" tag, for instance).

However our biggest concern is the large amount of time since you start downloading the video until it is playable even if the header is at the beginning of the file. We are talking about a 4 seconds lag at least, which gives quite a negative impression in comparison with the streaming solutions that start playing almost instantly. But this is a matter for another (long) discussion.


2012/9/26 Rubén Pérez <[email protected]>
Brian,

As I said, if you have a pseudostreaming server, it is able to fetch the header at the end of the file. Please see my previous post. ffmpeg always leaves the moov header at the end of the file.

Best regards


Rubén Pérez
TELTEK Video Research



2012/9/26 Brian O'Hagan <[email protected]>
Hi Doug!

Also there is also moovrelocator, which can be used to check the location of the file's index and move if needed. Hope this helps: http://code.google.com/p/moovrelocator/

(Also fwiw: We use an Ffmpeg encoding profile (x264) for assets served via pseudostreaming and byte range requests, and time and seek calls work ok, implying the index is at the front of the file.)


--
Brian O'Hagan

On Wednesday, September 26, 2012 at 5:54 AM, Hall, Douglas wrote:

Hi Chris,

When I try to play my MP4's in the engage player via download, the video
will not start playing until the entire file has downloaded. If I encode
to FLV the video will start playing immediately. I have read the reason
for this is that H.264/MP4 files contain metadata at the end of the file
which the flash player needs before it can start playing. Using
qt-faststart to move this metadata to the beginning of the file is
supposed to resolve this issue. Has anyone had the same experience? Is
there a better solution?

Thanks,

- Doug

On 9/25/12 11:48 PM, "Christopher Brooks" <[email protected]> wrote:

On Wed, 26 Sep 2012 03:10:47 +0000
"Hall, Douglas" <[email protected]> wrote:

Hi,

Is anyone using qt-faststart to move the index information from the
end of an H.264/MP4 to the beginning? If so, how are you calling it
from your Matterhorn workflows? Is there a better way of doing this
without using qt-faststart?

Best regards,

- Doug

Why would you do this? For mp4 streaming hinting?

Chris

_______________________________________________
Matterhorn-users mailing list


_______________________________________________
Matterhorn-users mailing list
[email protected]
http://lists.opencastproject.org/mailman/listinfo/matterhorn-users



_______________________________________________
Matterhorn-users mailing list
[email protected]
http://lists.opencastproject.org/mailman/listinfo/matterhorn-users

Reply via email to