ФорумПрограммированиеPHP для идиотов → Посоветуйте, какой музыкальный плеер установить на сайт

Посоветуйте, какой музыкальный плеер установить на сайт

  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 9 июня 2011 г. 9:09

    Собственно сабж.
    Разных плееров миллион, хотелось бы узнать кто чем пользуется и кто что посоветует. Нужен простой в управлении и настройке.
    from TRIAL with LOVE
  • ivanscm

    Сообщения: 1251 Репутация: N Группа: Джедаи

    Spritz 9 июня 2011 г. 9:13, спустя 4 минуты 15 секунд

    можешь свой написать. минут 10 уйдет. на флеше. крякнутом. и разукрасить как хочешь. :) я бы так поступил
    С возвращением, Пiха!
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 9 июня 2011 г. 9:34, спустя 20 минут 44 секунды

    Я во шлэше не шарю, так что нужен готовый )))
    from TRIAL with LOVE
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 9 июня 2011 г. 11:15, спустя 1 час 41 минуту 2 секунды

    я этого юзал недавно - http://www.longtailvideo.com/players/
    дружит с жс, гуттаперчив, легко на него рисуются шаблоны… главное маны покурить и быстро разберешься))
    Высокоуровневое абстрактное говно
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 9 июня 2011 г. 12:51, спустя 1 час 36 минут 10 секунд

    поддерживаю
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 10 июня 2011 г. 7:37, спустя 18 часов 45 минут 38 секунд

    С плеером разобрался, спасибо.
    Теперь такой вопрос возник - Как изменить битрейт при загрузке музыки на сайт, а то когда 320 уж больно много весит.
    Нашел вот такую штуку
    //файл, который конвертим
    $input_file="music.mp3";

    //требуемый битрейт
    $bit=64;

    //куда сохранить выходной файл
    $output_file="out.mp3";

    //выполняем команду
    exec("lame '".escapeshellcmd($input_file)."' -b $bit –mp3input '".escapeshellcmd($output_file)."' ");

    Для этого этот самый Lame нужно на сервере установить.
    Вопрос: что скажете на счет этого способа и можно ли еще как-то это сделать?
    from TRIAL with LOVE
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 10 июня 2011 г. 9:47, спустя 2 часа 9 минут 36 секунд

    Установили мне это дело на хостинге.
    Скрипт даже отработал 1 раз но больше работать отказывается. Никто не подскажет в чем может быть дело? И можно как-то следить за выполнением или ошибки где-нибудь посмотреть почему работать перестал?
    from TRIAL with LOVE
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 10 июня 2011 г. 10:01, спустя 14 минут 47 секунд

    ошибки смотри в логах
    все умрут, а я изумруд
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 15 июня 2011 г. 8:04, спустя 4 дня 22 часа 2 минуты

    С этой проблемой разобрался. Оказалось внимательнее надо за копи-пастом следить, а то начальный и конечный файл были одинаковыми вот ничего и не работало )))
    Щас столкнулся вот с какой проблемой. Нашел функцию которая из файла выдергивает всю инфу о песне.
    function readframe($file) {

    global $mp3, $id3tag;

    if (! ($f = fopen($file, 'rb')) ) die("Unable to open " . $file);
    $mp3['filesize'] = filesize($file);
    do {
    while (fread($f,1) != Chr(255)) { // Find the first frame
    if (feof($f)) die( "No mpeg frame found") ;
    }
    fseek($f, ftell($f) - 1); // back up one byte

    $frameoffset = ftell($f);

    $r = fread($f, 4);

    $bits = sprintf("%'08b%'08b%'08b%'08b", ord($r{0}), ord($r{1}), ord($r{2}), ord($r{3}));
    }
    while (!$bits[8] and !$bits[9] and !$bits[10]); // 1st 8 bits true from the while

    // Detect VBR header
    if ($bits[11] == 0) {
    if (($bits[24] == 1) && ($bits[25] == 1)) {
    $vbroffset = 9; // MPEG 2.5 Mono
    } else {
    $vbroffset = 17; // MPEG 2.5 Stereo
    }
    } else if ($bits[12] == 0) {
    if (($bits[24] == 1) && ($bits[25] == 1)) {
    $vbroffset = 9; // MPEG 2 Mono
    } else {
    $vbroffset = 17; // MPEG 2 Stereo
    }
    } else {
    if (($bits[24] == 1) && ($bits[25] == 1)) {
    $vbroffset = 17; // MPEG 1 Mono
    } else {
    $vbroffset = 32; // MPEG 1 Stereo
    }
    }

    fseek($f, ftell($f) + $vbroffset);
    $r = fread($f, 4);

    switch ($r) {
    case 'Xing':
    $mp3['encoding_type'] = 'VBR';
    case 'VBRI':
    default:
    if ($vbroffset != 32) {
    // VBRI Header is fixed after 32 bytes, so maybe we are looking at the wrong place.
    fseek($f, ftell($f) + 32 - $vbroffset);
    $r = fread($f, 4);

    if ($r != 'VBRI') {
    $mp3['encoding_type'] = 'CBR';
    break;
    }
    } else {
    $mp3['encoding_type'] = 'CBR';
    break;
    }

    $mp3['encoding_type'] = 'VBR';
    }

    fclose($f);

    if ($bits[11] == 0) {
    $mp3['mpeg_ver'] = "2.5";
    $bitrates = array(
    '1' => array(0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 0),
    '2' => array(0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0),
    '3' => array(0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0),
    );
    } else if ($bits[12] == 0) {
    $mp3['mpeg_ver'] = "2";
    $bitrates = array(
    '1' => array(0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 0),
    '2' => array(0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0),
    '3' => array(0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0),
    );
    } else {
    $mp3['mpeg_ver'] = "1";
    $bitrates = array(
    '1' => array(0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 0),
    '2' => array(0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 0),
    '3' => array(0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0),
    );
    }

    $layer = array(
    array(0,3),
    array(2,1),
    );
    $mp3['layer'] = $layer[$bits[13]][$bits[14]];

    if ($bits[15] == 0) {
    // It's backwards, if the bit is not set then it is protected.
    $mp3['crc'] = true;
    }

    $bitrate = 0;
    if ($bits[16] == 1) $bitrate += 8;
    if ($bits[17] == 1) $bitrate += 4;
    if ($bits[18] == 1) $bitrate += 2;
    if ($bits[19] == 1) $bitrate += 1;
    $mp3['bitrate'] = $bitrates[$mp3['layer']][$bitrate];

    $frequency = array(
    '1' => array(
    '0' => array(44100, 48000),
    '1' => array(32000, 0),
    ),
    '2' => array(
    '0' => array(22050, 24000),
    '1' => array(16000, 0),
    ),
    '2.5' => array(
    '0' => array(11025, 12000),
    '1' => array(8000, 0),
    ),
    );
    $mp3['frequency'] = $frequency[$mp3['mpeg_ver']][$bits[20]][$bits[21]];

    $mode = array(
    array('Stereo', 'Joint Stereo'),
    array('Dual Channel', 'Mono'),
    );
    $mp3['mode'] = $mode[$bits[24]][$bits[25]];

    $samplesperframe = array(
    '1' => array(
    '1' => 384,
    '2' => 1152,
    '3' => 1152
    ),
    '2' => array(
    '1' => 384,
    '2' => 1152,
    '3' => 576
    ),
    '2.5' => array(
    '1' => 384,
    '2' => 1152,
    '3' => 576
    ),
    );
    $mp3['samples_per_frame'] = $samplesperframe[$mp3['mpeg_ver']][$mp3['layer']];

    if ($mp3['encoding_type'] != 'VBR') {
    if ($mp3['bitrate'] == 0) {
    $s = -1;
    } else {
    $s = ((8*filesize($file))/1000) / $mp3['bitrate'];
    }
    $mp3['length'] = sprintf('%02d:%02d',floor($s/60),floor($s-(floor($s/60)*60)));
    $mp3['lengthh'] = sprintf('%02d:%02d:%02d',floor($s/3600),floor($s/60),floor($s-(floor($s/60)*60)));
    $mp3['lengths'] = (int)$s;

    $mp3['samples'] = ceil($mp3['lengths'] * $mp3['frequency']);
    if(0 != $mp3['samples_per_frame']) {
    $mp3['frames'] = ceil($mp3['samples'] / $mp3['samples_per_frame']);
    } else {
    $mp3['frames'] = 0;
    }
    $mp3['musicsize'] = ceil($mp3['lengths'] * $mp3['bitrate'] * 1000 / 8);
    } else {
    $mp3['samples'] = $mp3['samples_per_frame'] * $mp3['frames'];
    $s = $mp3['samples'] / $mp3['frequency'];

    $mp3['length'] = sprintf('%02d:%02d',floor($s/60),floor($s-(floor($s/60)*60)));
    $mp3['lengthh'] = sprintf('%02d:%02d:%02d',floor($s/3600),floor($s/60),floor($s-(floor($s/60)*60)));
    $mp3['lengths'] = (int)$s;

    $mp3['bitrate'] = (int)(($mp3['musicsize'] / $s) * 8 / 1000);
    }

    $f = fopen($file, 'rb');
    rewind($f);
    fseek($f, -128, SEEK_END);
    $tmp = fread($f,128);
    if ($tmp[125] == Chr(0) and $tmp[126] != Chr(0)) {
    // ID3 v1.1
    $format = 'a3TAG/a30NAME/a30ARTISTS/a30ALBUM/a4YEAR/a28COMMENT/x1/C1TRACK/C1GENRENO';
    } else {
    // ID3 v1
    $format = 'a3TAG/a30NAME/a30ARTISTS/a30ALBUM/a4YEAR/a30COMMENT/C1GENRENO';
    }

    $id3tag = unpack($format, $tmp);

    return $mp3;
    return $id3tag;
    }

    Всё отлично работает, но вот почему то реальная длительность песни не совпадает с данными. Никто не сталкивался с таким? Показано что песня на 8 минут а она реально 4. Может скрипт не совсем верные данные берет или не оттуда. Мне бы точное время воспроизведения получать. Кто что знает отпишитесь плиз.
    from TRIAL with LOVE
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 июня 2011 г. 8:19, спустя 15 минут 28 секунд

    отличная функция :-)

    я писал подобную для делания скриншотов флв файлов не скачивая файл))) недописал правда пока, задача другая появилась)
    Сапожник без сапог
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 15 июня 2011 г. 8:29, спустя 9 минут 28 секунд

    Отличная да вот только приверает с длительностью звучания. Щас смотрю вообще отрицательное значение показала для файла.
    Если у кого есть еще какие варианты особо не громоздкие. Пока нужно только длительность дергать. Остальное и эта делает неплохо. Хотя у народа с кодировками проблемы иногда возникают.
    from TRIAL with LOVE
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 15 июня 2011 г. 8:38, спустя 9 минут 9 секунд

    я тебе больше скажу - она скорее всего неверно считает длинну просто, длинна явно есть в метаданных заголовков …
    Сапожник без сапог
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 15 июня 2011 г. 8:46, спустя 8 минут 19 секунд

    Ну у меня в итоге 2 таких массива, данные из которых я в базу пишу
    Array
    (
    [filesize] => 15968406
    [encoding_type] => CBR
    [mpeg_ver] => 1
    [layer] => 3
    [bitrate] => 320
    [frequency] => 44100
    [mode] => Joint Stereo
    [samples_per_frame] => 1152
    [length] => 06:39
    [lengthh] => 00:06:39
    [lengths] => 399
    [samples] => 17595900
    [frames] => 15275
    [musicsize] => 15960000
    )
    Array
    (
    [TAG] => TAG
    [NAME] => Ohne Dich
    [ARTISTS] => Umbra et Imago
    [ALBUM] => Opus Magnus
    [YEAR] => 2010
    [COMMENT] => ExactAudioCopy v0.99pb5
    [TRACK] => 1
    [GENRENO] => 255
    )

    Вон в первом массиве и есть длительность. В данном случае правильная. Но к сожалению не всегда.
    from TRIAL with LOVE
  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 15 июня 2011 г. 9:17, спустя 31 минуту 18 секунд

    в тех заголовках пишут что хотят, поэтому это нормально
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 27 июля 2011 г. 5:59, спустя 41 день 20 часов 42 минуты

    Снова вернулся к данной теме. С музыкой проблем нет, теперь встала проблема с видео :)
    Не подскажете, есть какой всеядный плеер, который будет проигрывать все форматы а не как JW только .H264? Устанавливать на хост какие-то конверторы не хочется.
    from TRIAL with LOVE

Пожалуйста, авторизуйтесь, чтобы написать комментарий!