|
|
|
| Видел на одном из сайтов возможность скачать mp3-файл не полностью, т.е. вводишь в форму количество секунд, и скачиваешь отрывок заданной длины. Как такое можно сделать с помощью php и возможно ли вообще? | |
|
|
|
|
|
|
|
для: Guest11
(31.08.2006 в 03:23)
| | Попробуйте прочесть часть файла функцией fread() и сохранить. Неполные MP3 читаются нормально. | |
|
|
|
|
|
|
|
для: Саня
(31.08.2006 в 03:39)
| | Что-то жуть какая-то получается. :) Не могли бы вы на примере это показать? | |
|
|
|
|
|
|
|
для: Guest11
(31.08.2006 в 09:48)
| |
<?php
$fp = fopen("sound.mp3", "r"); // исходный файл
$buff = fread($fp, 500000); // прочитаем из него 500000 байт
$fp2 = fopen("slice.mp3", "w"); // создадим новый файл
fwrite($fp2, $buff); // и запишем в новый файл отрезок их исходного
?>
|
Но тут тонкости есть. Чтобы вырезать секунды, нужно узнать битрейт файла, вычислить количество байт, соответствующие битрейту и введённым пользователем секундам, а уже потом создавать новый файл (или выводить в браузер) и записывать в него отрезаный кусок. Если файл закодирован в VBR, то точное количество секунд вырезать неудастся. | |
|
|
|
|
|
|
|
для: Саня
(31.08.2006 в 18:50)
| | Большое спасибо! Всё получилось. Не думал, что всё так просто. А нельзя сделать такое же, но с файлом, который лежит на удаленном сервере? | |
|
|
|
|
|
|
|
для: 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($handle, 8192);
}
fclose($handle);
?>
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(31.08.2006 в 19:59)
| | Попробовал, но почему-то файл не обрезается. Указал 250000 байт, а скопировалось 2.75 мб. | |
|
|
|
|
|
|
|
для: Guest11
(01.09.2006 в 18:13)
| | А вы чей пример использовали? Скрипт касманафта копирует файл с удалённого хоста полностью. | |
|
|
|
|
|
|
|
для: Саня
(02.09.2006 в 08:28)
| | Сначала использовал ваш скрипт, но при попытке скопировать и обрезать файл с удаленного сервера, в файл записывалось только 2.65 кб. Хотя на моём хосте всё работает отлично. А затем использовал скрипт kasmanaft'a. Да, он копирует целый файл. Скажите пожалуйста, а как же обрезать удаленные файлы? | |
|
|
|