При попытке забирать поток с другого домена флэш-плеерами возникает ошибка 404 crossdomain.xml not found
. Происходит это из-за политик безопасности, и решается помещением соответствующего файла в корень домена, с которого забирается поток.
1 2 3 4 | cvlc -vvv http://127.0.0.1:8081/stream --sout \ '#transcode{vcodec="FLV1",vb="600",channels="1"}\ :duplicate{dst=std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=220.220.220.220:8081/stream.flv}}' |
То есть, VLC
слушает порт 8081 на интерфейсе с адресом 220.220.220.220 (обеспечивая доступ по http-протоколу), и значит, веб-сервер, который отдавал бы нужный файл, повесить на этот же порт не удастся.
Я применил следующее решение: у VLC
есть веб-интерфейс, а значит, и
директория, в которую можно положить crossdomain.xml
.
Всё это обеспечивают следующие опции: -I
, --http-src
, --http-host
(http://wiki.videolan.org/VLC_command-line_help)
Окончательный вид команды запуска сервера:
1 2 3 4 5 | cvlc -vvv http://127.0.0.1:8081/stream --sout \ '#transcode{vcodec="FLV1",vb="600",channels="1"}:\ duplicate{dst=std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=220.220.220.220:8081/stream.flv}}' \ -I http --http-src /var/www/vhosts/vlc \ --http-host 220.220.220.220:8081 |
В директорию /var/www/vhosts/vlc
и кладётся crossdomain.xml
, например, такой:
1 2 3 4 5 | <?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="example.org" /> </cross-domain-policy> |
То есть, содержимое будет доступно флэш-плеерам только с домена example.org
.