Na ja, Du kannst alles machen, ich möchte Dir hier nur keinen invaliden Mist andrehen. Am einfachsten wäre sicherlich ein Eventhandler, der ist aber im Image-Element nach HTML nicht erlaubt, doch nach JavaScript soll der erlaubt sein, deshalb hatte ich das obige Beispiel vor Jahren mal so geschrieben.
Nach einer PHP-Lösung werde ich nicht weiter suchen, vielleicht stolpere ich da mal durch Zufall über eine, es sei denn, dieser MIME-Type ließe sich mit getimagesize abfragen. Eine JavaScript-Lösung würde ich heute anders angehen, die würde ich zum Beispiel beim Theme Twenty Twelve unten in der navigations.js mit reinschreiben. Alles was das Bild dann zusätzlich benötigen würde, das wäre eine richtige ID, wie id="webcam" oder so.
<img id="webcam" alt="Bilder von der Webcam" width="960" height="540" src="http://xxx.net:8015/?action=stream" />
Unten in der navigations.js falls vorhanden oder in einer andere, möglichst bereits im Footer vorhandene JS-Datei dann den Code mit einfügen und kein zu großes Bild dafür verwenden.
var bildelement = document.getElementById("webcam");
bildelement.onerror = function() {
bildelement.src = "der_richtige_pfad/ein_kleineres_ersatzbild.jpg";
bildelement.style.width = "500px";
bildelement.style.height = "378px";
}
Kann das nicht abschließend testen, da ich ja hier keine Webcam zur Hand habe, doch unter Localhost wird das Ersatzbild nach einer Verzögerungszeit von 2 bis 3 Sekunden geladen. Diese Zeit wird wohl für den fehlerhaften Request verplempert, da ja zuerst eine Anfrage wegen dem eigentlichen Bild vom Browser an den Server gesendet wird, so dass es mit PHP eigentlich zügiger gehen sollte.
Screenreader sollten den alt-Text eigentlich weiterhin lesen können, der wird ja nicht überschrieben und bleibt dem Bild weiterhin zugeordnet, kann ich aber auch nicht richtig testen. Zumindest ordnet der FF den Text weiterhin dem Bild zu.