Странное поведение 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 правильный. Почему не воспроизводится файл?
 
Например, формат файла не поддерживается плеером. (Подсказка: существует куча разных стандартов MIDI...)
 
Да один и тот же файл-то. И плейер один и тот же, откуда другому взяться. Но из html-странички фал играется, а из php - нет. Это и удивляет...
 
О боже. Там столько наверчено... и я не знаю, что может повлиять, а что можно убрать, дабы Вас не напрягать. Надеюсь, Вам не придется копать там слишком долго. Не хочется Вас мучить :)
А как тут файл-то приделать? Или куда послать?
 
А впрочем, сам-то сайт незачем ворочать, у меня же маленькая тестовая страничка точно так же себя ведет. Код ее я, кажется, показывал уже:
Код:
<!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>
Если Вам удастся заставить эту страничку звучать обоими форматами из-под Мозиллы, несмотря на расширение - то я и в самом сайте пойму, что нужно делать.
 
эту ПОД 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>
 
Я же говорил, что вписал все три тега специально для опытов. Разумеется, речь идет именно о теге "embed", я же с этого и начал тему! Разумеется, я его раскомментирую. И под расширением "html" он нормально срабатывает из Мозиллы. Но если этому файлу дать расширение "php" и поместить в правильную папку Денвера, как эмулируемый сайт, тогда этот тег играет только МР3-данные. MIDI - не играют.

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

Ладно, забудьте, достал я вас уже. Спасибо за заботу и терпение. Поищу других путей...
 
Нормально выдает - путь к файлу. Я проверил по "исходному коду страницы" в браузере. То есть, после отрабатывания "echo" атрибут "src" выглядит точно так же, как я его писал вручную в HTML. Ни малейшей разницы. Я даже пробовал тупо копипастить написанный сценарием src прямо в тег, и запускать как страницу HTML. Тогда играет нормально. А после PHP - сцуко, не хочет. MIDI-файл с сервера запрашивает и получает (по количеству байт проверил). Но получив - просто молчит.
 
Ну да, конечно. Почему для аудио нельзя написать локальный путь, если для картинок он работает нормально?
 
Ребят, ну чувствую я, что слишком уж тупой. Не двигается дело ни с места. Может, кто-нибудь из вас не пожалеет 10 минут, и набросает код минимальной странички, которая имела бы расширение ".php" и могла по JS-команде воспроизвести как MP3, так и MIDI файл. Причем как в IE, так и в FF?

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