#1 2022.11.16 09:48

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Вырезать часть mp3 записи

Вопрос возник, чтобы не нагружать часто обращениями в телеге, хранить у себя "пробники файлов", например длительностью 1 минута (для ознакомления)
как например дёрнуть середину файла?
например файл продолжительностью 240 секунд, как вырвать середину файла длительностью например 30 сек.
да знаю есть так

Код:

1
ffmpeg -t 00:30

но тут возьмёт с начала файла...

сходу что в голову пришло (пример 30 секунд)

Код:

1
2
$time = $row['duration']/2;
echo 'Center - '.$time.' || Start - '.($time-15).' || End - '.($time+15);

Код:

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
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 (наверно)

Код:

1
ffmpeg -ss '.($time-15).' -t '.($time+15)

Отредактировано WapStyle (2022.11.16 10:20)

Неактивен

#2 2022.11.16 13:45

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Вырезать часть mp3 записи

Черновой вариант, но работает  big_smile

Код:

1
2
3
4
5
6
7
8
9
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:46)

Неактивен

#3 2022.11.16 15:07

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Вырезать часть mp3 записи

для пробников сойдёт
Добавлено спустя   7 минут  26 секунд:
Результат для заполнения "пробников"

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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:17)

Неактивен

#4 2022.11.16 15:26

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Вырезать часть mp3 записи

а зачем sleep?

Неактивен

#5 2022.11.16 15:34

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Вырезать часть mp3 записи

Gemorroj написал:

команды идут через крон, частый запрос (несколько в секунду) телега начинает тупить, приходится "тормозить"
примерно так "php file.php"
то что выше ни как не взаимодействует с пользователем
таймер так то дао выше ставить, примерно секунд 5, но у меня пусто...так что пока 1 секунда

Отредактировано WapStyle (2022.11.16 15:40)

Неактивен

#6 2022.11.16 15:47

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Вырезать часть mp3 записи

сейчас пишу код для файлов размером более 20 мб (по коду бота нельзя скачать более 20мб), благо их всего за пол года накопилось 50 штук из 4500

Отредактировано WapStyle (2022.11.16 15:48)

Неактивен

#7 2022.11.16 15:59

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Вырезать часть mp3 записи

с каждым разом настроек всё больше, подумаю об админке, хотя мне проще в phpmyadmin поменять


Вложения

Неактивен

#8 2022.11.16 16:28

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Вырезать часть mp3 записи

Смотри как чётко обрезало, первый оригинал, второй "пробник"


Вложения

Отредактировано WapStyle (2022.11.16 16:29)

Неактивен

#9 2022.11.16 17:55

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Вырезать часть mp3 записи

ну да, и битрейт порезало

Неактивен

#10 2022.11.16 19:03

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Вырезать часть mp3 записи

Gemorroj написал:

ну да, и битрейт порезало

но ведь для пробника само то) и понял что играет и место мало занимает
Добавлено спустя   7 минут  35 секунд:
А есть плюс в этом всём smile
Лови подкасты https://wapstyle.ru/podcast.mp3 (один трек не более минуты)
не пробовал, но если в плеер добавить URL должно писать название
AIMP проверено, показывает название трека только если в ручную листануть "следующий"
пока некогда php радио развивать))

Отредактировано WapStyle (2022.11.16 19:41)

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.016 s