Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: MP3
 
 автор: Guest11   (31.08.2006 в 03:23)   письмо автору
 
 

Видел на одном из сайтов возможность скачать mp3-файл не полностью, т.е. вводишь в форму количество секунд, и скачиваешь отрывок заданной длины. Как такое можно сделать с помощью php и возможно ли вообще?

   
 
 автор: Саня   (31.08.2006 в 03:39)   письмо автору
 
   для: Guest11   (31.08.2006 в 03:23)
 

Попробуйте прочесть часть файла функцией fread() и сохранить. Неполные MP3 читаются нормально.

   
 
 автор: Guest11   (31.08.2006 в 09:48)   письмо автору
 
   для: Саня   (31.08.2006 в 03:39)
 

Что-то жуть какая-то получается. :) Не могли бы вы на примере это показать?

   
 
 автор: Саня   (31.08.2006 в 18:50)   письмо автору
 
   для: Guest11   (31.08.2006 в 09:48)
 

<?php
$fp 
fopen("sound.mp3""r");  // исходный файл
$buff fread($fp500000);     // прочитаем из него 500000 байт
$fp2 fopen("slice.mp3""w"); // создадим новый файл
fwrite($fp2$buff);            // и запишем в новый файл отрезок их исходного
?>

Но тут тонкости есть. Чтобы вырезать секунды, нужно узнать битрейт файла, вычислить количество байт, соответствующие битрейту и введённым пользователем секундам, а уже потом создавать новый файл (или выводить в браузер) и записывать в него отрезаный кусок. Если файл закодирован в VBR, то точное количество секунд вырезать неудастся.

   
 
 автор: Guest11   (31.08.2006 в 19:53)   письмо автору
 
   для: Саня   (31.08.2006 в 18:50)
 

Большое спасибо! Всё получилось. Не думал, что всё так просто. А нельзя сделать такое же, но с файлом, который лежит на удаленном сервере?

   
 
 автор: kasmanaft   (31.08.2006 в 19:59)   письмо автору
 
   для: Guest11   (31.08.2006 в 19:53)
 

Можно, если известна ссылка на файл и включен allow_url_fopen в php.ini...
Нужно просто имя файла заменить на url адрес

Внимание
При чтении из сетевых потоков или конвееров, таких как те, что возвращаются при чтении 
удаленных файлов или из popen() и fsockopen(), чтение остановится после того, как пакет станет
 доступным. Это означает, что вы должны собирать данные вместе по кусочкам, как показано
 на примере ниже. 

<?php
$handle 
fopen("http://www.example.com/""rb");
$contents '';
while (!
feof($handle)) {
  
$contents .= fread($handle8192);
}
fclose($handle);
?>

   
 
 автор: Guest11   (01.09.2006 в 18:13)   письмо автору
 
   для: kasmanaft   (31.08.2006 в 19:59)
 

Попробовал, но почему-то файл не обрезается. Указал 250000 байт, а скопировалось 2.75 мб.

   
 
 автор: Саня   (02.09.2006 в 08:28)   письмо автору
 
   для: Guest11   (01.09.2006 в 18:13)
 

А вы чей пример использовали? Скрипт касманафта копирует файл с удалённого хоста полностью.

   
 
 автор: Guest11   (02.09.2006 в 09:00)   письмо автору
 
   для: Саня   (02.09.2006 в 08:28)
 

Сначала использовал ваш скрипт, но при попытке скопировать и обрезать файл с удаленного сервера, в файл записывалось только 2.65 кб. Хотя на моём хосте всё работает отлично. А затем использовал скрипт kasmanaft'a. Да, он копирует целый файл. Скажите пожалуйста, а как же обрезать удаленные файлы?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования