Я искал форумы VLC и в основном по всему Google в течение прошлой недели, пытаясь найти некоторую информацию об этом, так как у меня возникают проблемы с потоковой передачей видео с моего сервера IIS.
К сожалению, я не смог найти решение этой проблемы, поэтому я прошу помощи здесь.
У меня есть сервер IIS 7.5, работающий на 64-разрядном сервере / компьютере под управлением Windows 7. Я использую VLC Web Plugin для Mozilla Firefox для воспроизведения видеофайла в браузере, но безуспешно.
Также следует отметить, что я добавил MIME-тип .mkv в IIS MIME-Types как video / x-matroska, так что это не должно быть проблемой. Кроме того, я дал каждому пользователю права полного доступа ко всей папке www и файлу, так что это не должно быть проблемой.
Я сократил его до очень простого HTML-файла "index.html" и сохранил видеофайл прямо рядом с HTML-страницей. Вот мой HTML-код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/ xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body style="width:100%; height:100%;">
<embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" version="VideoLAN.VLCPlugin.2"
width="720"
height="405"
autoplay="no"
id="vlc"
target="video.mkv">
</embed>
<script type="text/javascript">
var vlc = document.getElementById("vlc");
function mute(){
vlc.audio.toggleMute();
}
function play(){
vlc.playlist.play();
}
function stop(){
vlc.playlist.stop();
}
function pause(){
vlc.playlist.togglePause();
}
</script>
<br />
<input type="button" onclick='play();' value="Play" /><br>
<input type="button" onclick='pause();' value="Pause" /><br>
<input type="button" onclick='stop();' value="Stop" /><br>
<input type="button" onclick='mute();' value="Mute" /><br>
</body>
</html>
Этот код отлично работает локально, открывая HTML-файл непосредственно в Firefox без использования веб-сервера. Но как только я помещаю его на веб-сервер IIS, кнопка воспроизведения просто ничего не делает. Это не может подтвердить подлинность или что-то.
Вот журнал из VLC, когда я ввожу URL-адрес видео с веб-сервера непосредственно в VLC Media Player:
qt4 warning: Input option: http-caching=1200
main debug: adding item `http://10.0.0.30/video.mkv' ( http://10.0.0.30/video.mkv )
qt4 debug: Adding a new MRL to recent ones: http://10.0.0.30/video.mkv
main debug: rebuilding array of current - root Spilleliste
main debug: rebuild done - 1 items, index -1
main debug: processing request item http://10.0.0.30/video.mkv node null skip 0
main debug: resyncing on http://10.0.0.30/video.mkv
main debug: http://10.0.0.30/video.mkv is at 0
main debug: starting new item
main debug: creating new input thread
main debug: Creating an input for 'http://10.0.0.30/video.mkv'
main debug: thread (input) created at priority 1 (../.././src/input/input.c:220)
main debug: thread started
main debug: using timeshift granularity of 50 MiB
main debug: using timeshift path 'C:\Users\myuser\AppData\Local\Temp'
main debug: `http://10.0.0.30/video.mkv' gives access `http' demux `' path `10.0.0.30/video.mkv'
main debug: creating demux: access='http' demux='' path='10.0.0.30/video.mkv'
main debug: looking for access_demux module: 0 candidates
main debug: no access_demux module matched "http"
main debug: TIMER module_need() : 0.000 ms - Total 0.000 ms / 1 intvls (Avg 0.000 ms)
main debug: creating access 'http' path='10.0.0.30/video.mkv'
main debug: looking for access module: 2 candidates
access_http debug: http: server='10.0.0.30' port=80 file='/video.mkv'
main debug: net: connecting to 10.0.0.30 port 80
qt4 debug: IM: Setting an input
main debug: connection succeeded (socket = 1440)
access_http debug: protocol 'HTTP' answer code 401
access_http debug: Content-Type: text/html
access_http debug: Server: Microsoft-IIS/7.5
access_http debug: Authentication header: Negotiate
main warning: Unknown authentication scheme: 'Negotiate'
access_http debug: Authentication header: NTLM
main warning: Unknown authentication scheme: 'NTLM'
access_http debug: this frame size=1326
access_http debug: authentication failed for realm (null)
access_http debug: retrying with user=ServerAdmin
main debug: net: connecting to 10.0.0.30 port 80
main debug: connection succeeded (socket = 1440)
access_http debug: protocol 'HTTP' answer code 401
access_http debug: Content-Type: text/html
access_http debug: Server: Microsoft-IIS/7.5
access_http debug: Authentication header: Negotiate
main warning: Unknown authentication scheme: 'Negotiate'
access_http debug: Authentication header: NTLM
main warning: Unknown authentication scheme: 'NTLM'
access_http debug: this frame size=1326
access_http debug: authentication failed for realm (null)
main debug: net: connecting to 10.0.0.30 port 80
main debug: connection succeeded (socket = 1484)
access_mms error: error: HTTP/1.1 401 Unauthorized
main debug: no access module matching "http" could be loaded
main debug: TIMER module_need() : 11949.001 ms - Total 11949.001 ms / 1 intvls (Avg 11949.000 ms)
main debug: waitpipe: object killed
main error: open of `http://10.0.0.30/video.mkv' failed: (null)
main debug: finished input
main debug: thread ended
main debug: dead input
main debug: thread times: real 0m11.948683s, kernel 0m0.000000s, user 0m0.000000s
main debug: changing item without a request (current 0/1)
main debug: nothing to play
qt4 debug: IM: Deleting the input
main debug: TIMER input launching for 'http://10.0.0.30/video.mkv' : 11974.001 ms - Total 11974.001 ms / 1 intvls (Avg 11974.000 ms)
Итак, из того, что я вижу из этого журнала, VLC испытывает проблемы с аутентификацией на сервере IIS через аутентификацию входа Windows NTLM. Я также попытался настроить сервер Apache без системы входа в систему, которая успешно воспроизводила файл так, как я хотел, но для этого мне нужна система входа в систему.
Итак, мой вопрос: есть ли способ заставить это работать через метод входа NTLM?
И если нет, то как мне управлять этим, например, в ASP.net с использованием аутентификации на основе форм или в PHP с использованием сеансов, на самом деле не имеет значения, какой именно, мне просто нужно, чтобы потоковая передача VoD стояла за системой входа в систему, я пойму Как подключить регистрационную информацию к методу NTLM самостоятельно.
Любая помощь будет принята с благодарностью, поскольку я действительно застрял здесь.