Вы не зашли.
Вопрос возник, чтобы не нагружать часто обращениями в телеге, хранить у себя "пробники файлов", например длительностью 1 минута (для ознакомления)
как например дёрнуть середину файла?
например файл продолжительностью 240 секунд, как вырвать середину файла длительностью например 30 сек.
да знаю есть так
но тут возьмёт с начала файла...
сходу что в голову пришло (пример 30 секунд)
Код:
$time = $row['duration']/2; |
echo 'Center - '.$time.' || Start - '.($time-15).' || End - '.($time+15); |
Код:
File 233 || Duration - 215 sec |
Center - 107.5 || Start - 77.5 || End - 137.5 |
========= |
File 3346 || Duration - 283 sec |
Center - 141.5 || Start - 111.5 || End - 171.5 |
========= |
File 127 || Duration - 170 sec |
Center - 85 || Start - 55 || End - 115 |
========= |
File 3537 || Duration - 474 sec |
Center - 237 || Start - 207 || End - 267 |
========= |
File 3480 || Duration - 230 sec |
Center - 115 || Start - 85 || End - 145 |
========= |
File 3445 || Duration - 161 sec |
Center - 80.5 || Start - 50.5 || End - 110.5 |
========= |
File 3979 || Duration - 504 sec |
Center - 252 || Start - 222 || End - 282 |
========= |
File 1845 || Duration - 448 sec |
Center - 224 || Start - 194 || End - 254 |
========= |
File 2786 || Duration - 135 sec |
Center - 67.5 || Start - 37.5 || End - 97.5 |
========= |
File 4294 || Duration - 440 sec |
Center - 220 || Start - 190 || End - 250 |
дальше ffmpeg (наверно)
Код:
ffmpeg -ss '.($time-15).' -t '.($time+15) |
Отредактировано WapStyle (2022.11.16 10:10)
Черновой вариант, но работает
Код:
echo 'File '.$row['id'].' || Duration - '.$row['duration'].' sec'.PHP_EOL; |
$time = $row['duration']/2; |
echo 'Center - '.$time.' || Start - '.($time-30).' || End - '.($time+30).PHP_EOL; |
echo '========='.PHP_EOL; |
|
...куча скрытного кода..))) |
|
exec('ffmpeg -ss "'.($time-15).'" -t "[тут указываем сколько продолжительность хотим в секундах]" -i "original.mp3" -acodec copy "temp.mp3"'); |
sleep(3); |
exec('ffmpeg -i "temp.mp3" -ar 44100 -ac 2 -ab 128k -y "'.$row['id'].'.mp3"'); |
результат - резанул ровно по середине, да нужно учесть что треки иногда короткие и длительность уменьшать или вообще не делать "превью" а отдать оригинал
Отредактировано WapStyle (2022.11.16 13:01)
для пробников сойдёт
Добавлено спустя 7 минут 26 секунд: Результат для заполнения "пробников"
Код:
echo 'File '.$row['id'].' || Duration - '.$row['duration'].' sec'.PHP_EOL; |
$center = $row['duration']/2; |
$start = $setup['duration_resize']/2; |
|
if($row['duration'] > 180 AND !file_exists($setup['files_patch'].'time_limit/'.$row['id'].'.mp3') AND $row['size'] < $setup['size_limit']) |
{ |
//скрыто)) |
|
exec('ffmpeg -ss "'.($center-$start).'" -t "'.$setup['duration_resize'].'" -i "'.$setup['files_patch'].'time_limit/'.$row['id'].'_original.mp3" -acodec copy "'.$setup['files_patch'].'time_limit/'.$row['id'].'_temp.mp3"'); |
sleep(1); |
exec('ffmpeg -i "'.$setup['files_patch'].'time_limit/'.$row['id'].'_temp.mp3" -ar 44100 -ac 2 -ab 128k -y "'.$setup['files_patch'].'time_limit/'.$row['id'].'.mp3"'); |
unlink($setup['files_patch'].'time_limit/'.$row['id'].'_original.mp3'); |
unlink($setup['files_patch'].'time_limit/'.$row['id'].'_temp.mp3'); |
exec('rm -frv '.$setup['files_patch'].'time_limit/cifs*'); //про это не спрашивай, это особенность моего хранилища, засоряет жестяк |
sleep(2); |
} |
} |
} |
Отредактировано WapStyle (2022.11.16 15:03)
Gemorroj написал:
команды идут через крон, частый запрос (несколько в секунду) телега начинает тупить, приходится "тормозить"
примерно так "php file.php"
то что выше ни как не взаимодействует с пользователем
таймер так то дао выше ставить, примерно секунд 5, но у меня пусто...так что пока 1 секунда
Отредактировано WapStyle (2022.11.16 15:03)
сейчас пишу код для файлов размером более 20 мб (по коду бота нельзя скачать более 20мб), благо их всего за пол года накопилось 50 штук из 4500
Отредактировано WapStyle (2022.11.16 15:03)
с каждым разом настроек всё больше, подумаю об админке, хотя мне проще в phpmyadmin поменять
Смотри как чётко обрезало, первый оригинал, второй "пробник"
Отредактировано WapStyle (2022.11.16 16:04)
ну да, и битрейт порезало
Gemorroj написал:
ну да, и битрейт порезало
но ведь для пробника само то) и понял что играет и место мало занимает
Добавлено спустя 7 минут 35 секунд: А есть плюс в этом всём
Лови подкасты https://wapstyle.ru/podcast.mp3 (один трек не более минуты)
не пробовал, но если в плеер добавить URL должно писать название
AIMP проверено, показывает название трека только если в ручную листануть "следующий"
пока некогда php радио развивать))
Отредактировано WapStyle (2022.11.16 19:07)
Gemorroj написал:
ну да, и битрейт порезало
так задумано, снизить размер файлов но сервере, прикинь их 4500 в хорошем качестве, примерно 60 гигов...
но я изначально шёл чтобы у меня ничего не было - сервера телеги (2 бота)
все файлы там, до 20мб, но чтобы не тратить трафик я решил сделать "пробники", наверно логично
да любой может скачать "плейлист" за прошлый день и слушать на 100% качестве
вот бери любой день https://wapstyle.ru/history/ и слушай в хорошем качестве
Отредактировано WapStyle (2022.11.16 19:07)
Давно не заходил, вот часть кода, пашет и не ругается, режет как надо и где надо)
Код:
## Ищем середину файла по времени |
$center = $row['duration']/2; |
$start = $setup['duration_resize']/2; |
## Обрезаем лишнее |
exec('ffmpeg -ss "'.($center-$start).'" -t "'.$setup['duration_resize'].'" -i "'.$setup['files_patch'].$row['id'].'.mp3" -acodec copy "'.$setup['files_patch'].$row['id'].'_temp.mp3"'); |
sleep(1); |
## Меняем битрейт на 128 |
exec('ffmpeg -i "'.$setup['files_patch'].$row['id'].'_temp.mp3" -ar 44100 -ac 2 -ab 128k -y "'.$setup['files_patch'].'time_limit/'.$row['id'].'.mp3"'); |
## Удалить лишнее |
unlink($setup['files_patch'].$row['id'].'_temp.mp3'); |
з.ы.
$setup['duration_resize'] - сколько секунд обрезок будет
Отредактировано WapStyle (2022.12.14 18:06)