Странное поведение embed

Mumrik

Новичок
Вот ответ, полученный Мозиллой:
Accept-Ranges: bytes
Connection: Keep-Alive
Content-Length:441
Content-Type: audio/midi
Date: Wed, 27 Aug 2014 18:11:55 GMT
Etag: "15f2c-1b9-5509766e"
Keep-Alive: timeout=5, max=99
Last-Modified: Thu, 24 Jul 2014 19:19:13 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.2.12
Как видите, Content-Type правильный. Почему не воспроизводится файл?
 

AnrDaemon

Продвинутый новичок
Например, формат файла не поддерживается плеером. (Подсказка: существует куча разных стандартов MIDI...)
 

Mumrik

Новичок
Да один и тот же файл-то. И плейер один и тот же, откуда другому взяться. Но из html-странички фал играется, а из php - нет. Это и удивляет...
 

Mumrik

Новичок
О боже. Там столько наверчено... и я не знаю, что может повлиять, а что можно убрать, дабы Вас не напрягать. Надеюсь, Вам не придется копать там слишком долго. Не хочется Вас мучить :)
А как тут файл-то приделать? Или куда послать?
 

Mumrik

Новичок
А впрочем, сам-то сайт незачем ворочать, у меня же маленькая тестовая страничка точно так же себя ведет. Код ее я, кажется, показывал уже:
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
<!---------------------------------------------
        IE        FF
bgsound        MP3/MID        -/-
embed        -/-        MP3/MID(promt,delay)
audio        -/-        MP3/-
---------------------------------------------->
<bgsound id=snd>
<!-- <embed id=snd autostart=true hidden=true> -->
<!-- <audio id=snd autoplay=true></audio> -->

<input type=button onClick={document.getElementById('snd').src='1%20звук/getero1.mid';} value='MID'>
<input type=button onClick={document.getElementById('snd').src='1%20звук/getero1.mp3';} value='MP3'>
  </body>
</html>
Если Вам удастся заставить эту страничку звучать обоими форматами из-под Мозиллы, несмотря на расширение - то я и в самом сайте пойму, что нужно делать.
 

WMix

герр M:)ller
Партнер клуба
эту ПОД FF не получится, закоментирован тэг
PHP:
<!-- <embed id=snd autostart=true hidden=true> -->
а так работает!
PHP:
<?php
$file = "a_teens-mama_mia.mid";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
<!---------------------------------------------
        IE        FF
bgsound        MP3/MID        -/-
embed        -/-        MP3/MID(promt,delay)
audio        -/-        MP3/-
---------------------------------------------->
<!-- bgsound id=snd -->
<embed id=snd autostart=true hidden=true>
<!-- <audio id=snd autoplay=true></audio> -->

<input type=button onClick={document.getElementById('snd').src='<?=$file?>';} value='MID'>
<input type=button onClick={document.getElementById('snd').src='1%20звук/getero1.mp3';} value='MP3'>
  </body>
</html>
 

Mumrik

Новичок
Я же говорил, что вписал все три тега специально для опытов. Разумеется, речь идет именно о теге "embed", я же с этого и начал тему! Разумеется, я его раскомментирую. И под расширением "html" он нормально срабатывает из Мозиллы. Но если этому файлу дать расширение "php" и поместить в правильную папку Денвера, как эмулируемый сайт, тогда этот тег играет только МР3-данные. MIDI - не играют.

Вообще, меня крайне удивляет, почему такие трудности с MIDI. Любой компьютер в мире УМЕЕТ играть MIDI - аппаратно или программно, но умеет. Стандартным проигрывателем Windows. Почему же нельзя воспользоваться теми же кодеками из браузера? Или обратиться к аппаратному MIDI-синтезатору звуковой карты ИЗ БРАУЗЕРА, а не из стандартного проигрывателя? К чему все эти сторонние плейеры?
 

Mumrik

Новичок
Вот да - Вы вписали путь к своему локальному файлу, и у вас - играет. Вы же Мозиллой проверяли, да?
Ну, а у меня такая же операция дает только тишину. А если плейеру не ставить атрибут "hidden", то он появляется в виде обесцвеченного логотипа с вопросительным знаком. Что за странность - это меня и парит....
Правда, я пишу php-вставки чуть иначе, например, "<?php echo($file); ?>"
Но вряд ли виноват такой синтаксис, да ведь?
 

WMix

герр M:)ller
Партнер клуба
да у меня работает!
попробуй мой файл у себя, подставь естесно правильный путь к файлу.
 

Mumrik

Новичок
Спасибо :) Вот в том-то и проблема - не знаю, что за ошибка и как ее увидеть...
Попробовал вставить "ini_set('display_errors',1);error_reporting(E_ALL);" - ничего не выводится на экран. В заголовках все правильно: загрузка страницы идет с типом "text/html", нажатие кнопок проигрывания того или иного файла - с типами "audio/mpeg" и "audio/mid", количество трафика в каждом случае соответствует истине. PHP вообще ни на что не жалуется.
Единственное - плейер QuickTime. Если окно не закрывать после попытки запустить MIDI, то оно через несколько минут сообщает, что "QuickTime запущен. Оставить запущенным?".
Изредка выскакивает, что плейеру нужны какие-то дополнительные компоненты, и дает ссылку, по которой идет страница со списком доступных компонентов - там их множество, разработанных энтузиастами какими-то, но нигде не отмечено, какого именно компонента не хватает моему плейеру. И вообще, чепуха это все! Он ИГРАЕТ MIDI, если находится в страничке "html", и никаких дополнений не просит!
Голову сломал уже. Может, у меня браузер "больной" какой-нибудь?

Ладно, забудьте, достал я вас уже. Спасибо за заботу и терпение. Поищу других путей...
 

Mumrik

Новичок
Нормально выдает - путь к файлу. Я проверил по "исходному коду страницы" в браузере. То есть, после отрабатывания "echo" атрибут "src" выглядит точно так же, как я его писал вручную в HTML. Ни малейшей разницы. Я даже пробовал тупо копипастить написанный сценарием src прямо в тег, и запускать как страницу HTML. Тогда играет нормально. А после PHP - сцуко, не хочет. MIDI-файл с сервера запрашивает и получает (по количеству байт проверил). Но получив - просто молчит.
 

Mumrik

Новичок
Ну да, конечно. Почему для аудио нельзя написать локальный путь, если для картинок он работает нормально?
 

Mumrik

Новичок
Ребят, ну чувствую я, что слишком уж тупой. Не двигается дело ни с места. Может, кто-нибудь из вас не пожалеет 10 минут, и набросает код минимальной странички, которая имела бы расширение ".php" и могла по JS-команде воспроизвести как MP3, так и MIDI файл. Причем как в IE, так и в FF?

Если это невозможно, тогда другие вопросы:
1. Можно ли хранить на сервере некий простенький МР3-плейер, управляемый по JS, и посылать пользователю именно его - независимо от того, какие плейеры могут быть установлены в его браузере?
2. Можно ли добиться, чтобы воспроизведение МР3 начиналось НЕМЕДЛЕННО после команды, с задержкой не более 10 мс?
Если это возможно, тогда я сам напишу программный MIDI-секвенсор для этого плейера, чтобы он играл отдельные ноты MIDI-файла по таймеру, в виде МР3-заготовок. Ну НУЖНО мне с MIDI работать, никуда не денешься!
 

AnrDaemon

Продвинутый новичок
Ну да, конечно. Почему для аудио нельзя написать локальный путь, если для картинок он работает нормально?
По кочану и по капусте.
Все реквизиты страницы должны доставляться по одному протоколу, либо протокол доставки должен быть явно указан.
При этом система безопасности скорее всего не даст скрестить file:/// с другими протоколами на одной странице.
 

Mumrik

Новичок
А что изменилось-то? Либо сервер прислал элемент с прописанным в нем текстовым "src", либо этот "src" был предварительно вписан сценарием PHP - какая разница? В любом случае это отправляется браузеру в текстовом формате. А уж ПОТОМ браузер запрашивает по этим "src" требуемые файлы. Он это действительно делает, я проследил за процессом. И запрашивает, и получает эти файлы. Картинки прибывают по требованию и отображаются на своих местах. МР3 файл (хоть он и не текстового формата) - тоже благополучно запрашивается по нажатию кнопки и ТОЖЕ отображается в своем теге (то бишь, воспроизводится). А MIDI-файл - запрашивается, отдается сервером, получается браузером, и... не играет.
Протокол браузером распознается правильно, иначе файлы разных типов не пересылались бы ему сервером успешно. Пересылаются, все нормально. Но как с полученным файлом обращаться - браузер почему-то понимает не всегда.
Вот же, херр Мюллер пробовал - у него все играет. А я пробовал точную копию его кода - у меня не играет. Очевидно, есть разница между нашими браузерами. Только вот в чем она конкретно, пока что никто не смог предположить...
 
Сверху