Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Михаил87
7 / 7 / 3
Регистрация: 22.02.2012
Сообщений: 108
#1

Web player с поддержкой AACplus v2 - JavaScript

01.01.2015, 23:31. Просмотров 394. Ответов 16
Метки нет (Все метки)

Добрый день, уважаемые форумчане!

Прошу заранее простить мне если задаю тему не в том разделе.
У меня к вам вот какой вопрос - можно ли сделать web player с поддержкой AACplus v2, чтобы он играл и на десктопах и на мобилках? То есть встроить его в html и проигрывать поток через него. Я сам пишу на ActionScript, но он под это дело не подойдет - на мобилках флеша нет к сожалению.
Если да - подскажите пожалуйста с помощью чего, а еще лучше - мож где то готовое решение есть в опен сорсе))
Заранее спасибо!
http://www.cyberforum.ru/windows-forms/thread1213647.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2015, 23:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Web player с поддержкой AACplus v2 (JavaScript):

Dr.Web для Lotus Domino с поддержкой 64-bit
Компания «Доктор Веб» выпустила обновленный плагин Dr.Web для Lotus Domino ...

Chromium и Unity Web Player
Всем доброго времени суток! Создал небольшой браузер на основе движка...

Unity Web Player не работает
Здравствуйте, уважаемые форумчане! Прошу подсказки. Для работы на ноуте (Тошиба...

C++ Builder 6 и Unity web player
Собственно, как подключить оный к оному? на форме есть CppWebBrowser...

TChromium и Unity Web Player
Как подключить плагин Unity Web Player к компоненту Chromium? За ранее...

16
Lazy_Den
2913 / 2593 / 1307
Регистрация: 15.01.2014
Сообщений: 5,686
02.01.2015, 00:39 #2
Михаил87, Плеер от uppod, если не ошибаюсь, поддерживает AAC+ v2, автоматическое переключение с Flash на HTML5.
0
Михаил87
7 / 7 / 3
Регистрация: 22.02.2012
Сообщений: 108
02.01.2015, 01:30  [ТС] #3
Lazy_Den, спасибо большое! Но это немного не то. Мне нужно будет дорабатывать визуальную часть плеера - брать из RDS данные о проигрываемой композиции и отображать это. Может бегущей строкой, может статично.
0
Опан
Юзер с абсолютным слухом
559 / 370 / 152
Регистрация: 17.12.2010
Сообщений: 1,124
02.01.2015, 15:55 #4
Что касается плеера от uppod, тут: Теги для радио описывается, как это сделать. Другим вариантом может быть отображение информации о треках не в самом плеере, а над или под ним, т. е. в виде бегущей строки там же, на странице, но не имея общего с дизайном и функционалом плеера.
0
Михаил87
7 / 7 / 3
Регистрация: 22.02.2012
Сообщений: 108
02.01.2015, 17:11  [ТС] #5
Опан, спасибо за ответ, но там каждый год нужно оплачивать это все дело и т д. Для руководства не удобно это все, да и потом хочется чего то своего.

Я тут нарыл такую штуку -
Javascript
1
<audio src="http://fm101.uz:9900/fm101_high" controls="controls" autoplay> </audio>
вроде все играет, но у меня вопрос - правильно ли это играет, если полная ссылка -
Javascript
1
http://fm101.uz:9900/fm101_high.m3u
0
Опан
Юзер с абсолютным слухом
559 / 370 / 152
Регистрация: 17.12.2010
Сообщений: 1,124
02.01.2015, 17:47 #6
Правильная ссылка радиопотока - первая. Вторая ведёт к текстовому файлу, в котором в качестве плейлиста указана та же самая первая ссылка.
0
Михаил87
7 / 7 / 3
Регистрация: 22.02.2012
Сообщений: 108
02.01.2015, 17:55  [ТС] #7
Ага... минут пять как прочитал про это. Скажите пожалуйста, я не совсем понимаю как это все работает - если поток идет с кодеком aac в плеере тоже должен быть некий декодер для этого кодека?
0
Опан
Юзер с абсолютным слухом
559 / 370 / 152
Регистрация: 17.12.2010
Сообщений: 1,124
02.01.2015, 18:08 #8
Разумеется, без встроенного декодера воспроизведения бы не было. Правда, в опере это не работает, как и МП3.
0
Михаил87
7 / 7 / 3
Регистрация: 22.02.2012
Сообщений: 108
02.01.2015, 18:14  [ТС] #9
А этот встроенный декодер где должен быть, в браузере или же подключаться к плееру как отдельный модуль?
К чему такой вопрос - html страничка с
Javascript
1
audio src="http://fm101.uz:9900/fm101_high" controls="controls" autoplay> </audio>
проигрывает поток с этим кодеком. Это значит, что в браузере стоит этот декодер или же браузер каким-то образом конвертирует этот поток в другой формат?
0
Опан
Юзер с абсолютным слухом
559 / 370 / 152
Регистрация: 17.12.2010
Сообщений: 1,124
02.01.2015, 18:19 #10
В браузере стоит этот декодер. К тому же, формат определяется автоматически.
0
Михаил87
7 / 7 / 3
Регистрация: 22.02.2012
Сообщений: 108
02.01.2015, 18:22  [ТС] #11
То есть, если я правильно вас понял - проигрывать поток с AAC кодеком можно просто указав ссылку на него, да? Никаких заморочек, типа декодирования этого потока и т д, придумывать не нужно? Все на столько просто?
0
Опан
Юзер с абсолютным слухом
559 / 370 / 152
Регистрация: 17.12.2010
Сообщений: 1,124
02.01.2015, 18:30 #12
Заморочки - это по части старых версий браузеров. Для этого их и всё время обновляют, чтобы всё было как можно лучше автоматизированно, и нам было проще.
0
Михаил87
7 / 7 / 3
Регистрация: 22.02.2012
Сообщений: 108
02.01.2015, 18:37  [ТС] #13
Здорово! Пишут, что Android только в новых версия поддерживает этот кодек. Значит для того, чтобы этот поток играл и на новых и на старых версиях нужно "заморачиваться" или же там браузер отдельно от системы может играть этот поток.
То есть - открыв сайт с плеером на мобилке в новом хроме, но версией андроида постарше, браузер будет играть этот поток или нет?
0
Опан
Юзер с абсолютным слухом
559 / 370 / 152
Регистрация: 17.12.2010
Сообщений: 1,124
02.01.2015, 18:51 #14
Цитата Сообщение от Михаил87 Посмотреть сообщение
Пишут, что Android только в новых версия поддерживает этот кодек
Это значит, что новый браузер с этим кодеком может не потянуть этот формат на старом андроиде.
0
Михаил87
7 / 7 / 3
Регистрация: 22.02.2012
Сообщений: 108
02.01.2015, 18:56  [ТС] #15
Печально это... Спасибо за помощь )
0
Опан
Юзер с абсолютным слухом
559 / 370 / 152
Регистрация: 17.12.2010
Сообщений: 1,124
02.01.2015, 22:44 #16
Я проверил, действительно, чтобы плеер от uppod заставить читать радиотеги, нужно иметь аккаунт ПРО на сайте uppod. А вот PHP-скрипт, который при этом прилагается, оказывается, можно использовать и без плеера uppod, а как что-то самостоятельное:
Кликните здесь для просмотра всего текста

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?php
///////////////////////////////////////////////
// RADIO TAGS
// BASED ON (C) plugin JOERG KRUEGER 
///////////////////////////////////////////////
error_reporting(0);
header('Content-type: text/plain');
header('Pragma: no-cache');
header('Expires: 0');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0');
$WIN1251=0;
if (isset($_REQUEST['url'])):
    $titlelink = $_REQUEST['url'];
 
    if ($titlelink == ""):
        echo "";
    else:
        $station=Station($titlelink);
        $song=Song($titlelink);
        $output=$station.'|uppod|'.$song;
        echo $output;
    endif;
endif;
function Song($sURL) {
    $aPathInfo = parse_url($sURL);
    $sHost = $aPathInfo['host'];
    $sPort = empty($aPathInfo['port']) ? 80 : $sPort = $aPathInfo['port'];
    $sPath = empty($aPathInfo['path']) ? '/' : $sPath = $aPathInfo['path'];
    $fp = fsockopen($sHost, $sPort, $errno, $errstr, "1");
    
    if (!$fp):
        fclose($fp);
        return StreamTitle($sURL);
    else: 
        fputs($fp, "GET /7.html HTTP/1.0\r\nUser-Agent: Mozilla\r\n\r\n");
        while (!feof($fp)):
            $info = fgets($fp);
        endwhile;
        $info = str_replace('<HTML><meta http-equiv="Pragma" content="no-cache"></head><body>', "", $info);
        $info = str_replace('</body></html>', "", $info);
        $stats = explode(',', $info);
        if (empty($stats[1]) ):
            fclose($fp);
            return StreamTitle($sURL);
        else:
            if ($stats[1] == "1"):
                $song = $stats[6];
                $listeners = $stats[0];
                $max =  $stats[3];
                $bitrate = $stats[5];
                $peak = $stats[2];
                return toUTF($song);
            else:
                fclose($fp);
                return StreamTitle($sURL);
            endif;
        endif;
    endif;
}
function StreamTitle($sURL) {
    $aPathInfo = parse_url($sURL);
    $sHost = $aPathInfo['host'];
    $sPort = empty($aPathInfo['port']) ? 80 : $sPort = $aPathInfo['port'];
    $sPath = empty($aPathInfo['path']) ? '/' : $sPath = $aPathInfo['path'];
    $fp = fsockopen($sHost, $sPort, $errno, $errstr, 2);
    if (!$fp):
        return "";
    else: 
        fputs($fp, "GET $sPath  HTTP/1.0\r\n");
        fputs($fp, "Host: $sHost\r\n");
        fputs($fp, "Accept: */*\r\n");
        fputs($fp, "Icy-MetaData:1\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
        $char = "";
        $info = "";
        while (!strpos($input, "StreamTitle")){
            if (@feof($fp) || @ftell($fp)>300000){ //max 366kb
                    exit;
                }   
            $char = @fread($fp, 16);
            $input .= $char;
        }
        $input .=@fread($fp, 255);
        $startstr = "StreamTitle='";
        $endstr = "';";
        $start = strpos($input, $startstr);
        $subinput = substr($input, $start + strlen($startstr));
        $end = strpos($subinput, $endstr);
        fclose($fp);
        $output = substr($subinput, 0, $end);
        $output = Replacer($output);
        return toUTF($output);
    endif;
}
function Station($sURL) {
    $aPathInfo = parse_url($sURL);
    $sHost = $aPathInfo['host'];
    $sPort = empty($aPathInfo['port']) ? 80 : $sPort = $aPathInfo['port'];
    $sPath = empty($aPathInfo['path']) ? '/' : $sPath = $aPathInfo['path'];
    $fp = fsockopen($sHost, $sPort, $errno, $errstr, 2);
    if (!$fp):
        return "";
    else: 
        fputs($fp, "GET $sPath HTTP/1.0\r\n");
        fputs($fp, "Host: $sHost\r\n");
        fputs($fp, "Accept: */*\r\n");
        fputs($fp, "Icy-MetaData:1\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
        $char = "";
        $info = "";
        while ($char != Chr(255)){  //END OF MPEG-HEADER
            if (@feof($fp) || @ftell($fp)>14096){  //Spezial, da my-Mojo am Anfang leere Zeichen hat
                exit;
            }
            $char = @fread($fp,1);
            $info .= $char;
        }
        fclose($fp);
        $info = str_replace("\n", "",$info);
        $info = str_replace("\r", "",$info);
        $info = str_replace("\n\r", "",$info);
        $info = str_replace("<BR>", "",$info);
        $info = str_replace(":", "=",$info);
        $info = str_replace("icy", "&icy",$info);
        $info = strtolower($info);
        parse_str($info, $output);
        if ($output['icy-br']!=""){
            $streambitrate = intval($output['icy-br']);
        }
        if ($output['icy-name']==""){
            return "";  
        } else {
            return toUTF(Replacer($output['icy-name']));
        }
    endif;
}
function toUTF($str){
    global $WIN1251;
    return $WIN1251==1?iconv("WINDOWS-1251", "UTF-8",$str):$str;
}
function Replacer($str){
    $str = str_replace("- 0:00", "", $str);
    $str = str_replace("101.ru= ", "", $str);
    return $str;
}
?>

В этот скрипт нужно методом GET или POST передавать адрес радиопотока, присваивая его при этом переменной url, а возвращает он название станции и название композиции, которую передают. Вызывать скрипт можно с помощью ajax. Единственное, что смущает, перепробовал я больше десятка разных станций, и почему-то лишь маленькая часть из них выдаёт такие данные. В примере Вашей станции прочитать их не удалось.
0
Михаил87
7 / 7 / 3
Регистрация: 22.02.2012
Сообщений: 108
02.01.2015, 23:52  [ТС] #17
Да, скрипт я тоже видел, но мне он ни к чему. В моем случае нужно сделать плеер который будет встроен на сайт радиостанции http://fm101.uz/ вместо того флешевого который сейчас там есть. Чтобы он мог играть с сайта и на мобилках тоже. С проигрыванием кодека AAC вроде разобрались, осталось сделать бегущую строку текущей композиции или другой инфы из рдс, доступ к которой тоже есть. Единственное, что для меня остается не совсем понятным - если взять готовое решение типа того же uppod или jPlayer, которые по описанию могут играть этот кодек, будет ли все это дело играть на стареньких андроидах или нет?
0
02.01.2015, 23:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2015, 23:52
Привет! Вот еще темы с решениями:

Где взять web сервер с поддержкой asp для XP?
Где взять web сервер с поддержкой asp для XP и есть ли встроенный в xp...

Очень нужен mail сервер с поддержкой WEB, POP3, SMTP
Если кто знает, подскажите mail сервер, чтобы поддерживал WEB, POP3, SMTP, не...

Подскажите бесплатный хостинг с поддержкой MySQL баз и с поддержкой внешних подключений к базе данных
Нужен бесплатный хостинг, у которого нет такого прикола как указание IP адреса...

Обновила Flash Player а вместо видеороликов на экране запрос о необходимости включить Adobe flash player
Здравствуйте. я сразу скажу, что я так скажем неуверенный пользователь ПК))....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru