Skip to content

htaccess

Tomasz Oponowicz edited this page Jul 30, 2014 · 10 revisions

Generally speaking, the Adobe Flash Player doesn't allow the Range header. One workaround is to use a custom query for every GET request, e.g. ?range=0-499.

Use the snippet below to create a new .htaccess file and place it in the root folder of your hosting.

<IfModule headers_module>
<IfModule rewrite_module>

	# ^(.*) if .htaccess in a root; ^/(.*) otherwise
	RewriteEngine On
	RewriteCond %{QUERY_STRING} ^(.*)bytes=(.*)$
	RewriteRule ^(.*) - [L,E=range:%2]

	RequestHeader set Range "bytes=%{range}e" env=range
</IfModule>
</IfModule>

In order to test your setup use curl tool, for example (please use your own host and path):

curl -v -- "http://dashas.castlabs.com/videos/bytes/bbb/Manifest.mpd?bytes=0-18"

Your output should be similar to:

* Adding handle: conn: 0x7fbf23004000
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7fbf23004000) send_pipe: 1, recv_pipe: 0
* About to connect() to dashas.castlabs.com port 80 (#0)
*   Trying 176.34.236.36...
* Connected to dashas.castlabs.com (176.34.236.36) port 80 (#0)
> GET /videos/bytes/bbb/Manifest.mpd?bytes=0-18 HTTP/1.1
> User-Agent: curl/7.30.0
> Host: dashas.castlabs.com
> Accept: */*
> 
< HTTP/1.1 206 Partial Content
< Date: Fri, 18 Jul 2014 09:20:14 GMT
* Server Apache/2.2.22 (Ubuntu) is not blacklisted
< Server: Apache/2.2.22 (Ubuntu)
< Last-Modified: Sun, 23 Feb 2014 19:13:47 GMT
< ETag: "1c0011-937-4f317a782b0c0"
< Accept-Ranges: bytes
< Content-Length: 19
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Headers: range
< Content-Range: bytes 0-18/2359
< 
* Connection #0 to host dashas.castlabs.com left intact
<?xml version="1.0"~  

...please make sure that 206 Partial Content and Content-Range: bytes 0-18/2359 are present.

The flash is very aggressive in caching. If you notice that player doesn't respond to your server side changes, please clean browser's cache (i.e. cached images and files).

Clone this wiki locally