Это не будет работать в таком виде, потому что это на уровне браузера стоит защита от таких вот конструкций. Вы правильно указали, что без PHP тут не обойтись. Я бы как-то решила этот вопрос:
<?php
$url = 'http://192.168.1.8/cgi-bin/mjpg/video.cgi?channel=1&subtype=1';
// Функция для digest-авторизации
function digest_parse($txt)
{
$needed_parts = array('nonce'=>1, 'realm'=>1, 'qop'=>1);
$data = array();
$keys = implode('|', array_keys($needed_parts));
preg_match_all('@('.$keys.')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $txt, $matches, PREG_SET_ORDER);
foreach ($matches as $m) {
$data[$m[1]] = $m[3] ? $m[3] : $m[4];
unset($needed_parts[$m[1]]);
}
return $needed_parts ? false : $data;
}
// Инициализация cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
// получения заголовков www-Authenticate
$response = curl_exec($ch);
// разбор заголовк а WWW-Authenticate
if (preg_match('/^WWW-Authenticate: Digest (.*)$/im', $response, $matches)) {
$digest_parts = digest_parse($matches[1]);
// Создание заголовка Authorization
// Здесь также надо сгенерить правильный ответ на основе полученных данных и вашего логина и пароля
// наподобие этого
$digest_response = ''; // ответ
// Установка опций для cURL с заголовком Authorization
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Digest username="adminka", realm="'.$digest_parts['realm'].'", nonce="'.$digest_parts['nonce'].'", uri="/cgi-bin/mjpg/video.cgi?channel=1&subtype=1", response="'.$digest_response.'", qop='.$digest_parts['qop'].', nc=00000001, cnonce="d41d8cd98f00b204e9800998ecf8427e"'));
}
// Удаление предыдущих заголовков
curl_setopt($ch, CURLOPT_HEADER, 0);
// Передача потока клиенту
curl_exec($ch);
curl_close($ch);
?>
Ну а потом уже смело в теге img можно сделать так:
<img src="вашскрипт.php" width="720" height="480">
Пример с PHP кодом не полный - я лишь натолкнула вас на мысль, как это может работать. Удачи!