Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Получить длину MP3 файла (https://javascript.ru/forum/server/52772-poluchit-dlinu-mp3-fajjla.html)

ruslan_mart 06.01.2015 09:25

Получить длину MP3 файла
 
Доброго времени суток!

Собираю аудио-модуль (на подобии ВК). При загрузке MP3 на сервер, мне нужно получить длительность трека для записи в БД.

Целые библиотеки ради этого подключать не хочется. Можно ли как-нибудь решить эту проблему без использования библиотек?

Заранее всем спасибо за ответы! :)

danik.js 06.01.2015 10:38

А ты изучил вообще эту тему? Как в теории можно рассчитать длину?
Она в заголовочной части файла прописана? Или там только битрейт прописан, а длину надо рассчитывать? В любом случае - чтение mp3 формата - гемор. Не подключишь стороннюю либу - так напишешь свою (только зачем??) :)

ruslan_mart 06.01.2015 11:14

danik.js, я не знаю как этот формат устроен внутри, если бы знал, то не создавал бы эту тему. :)

Цитата:

Сообщение от danik.js
Не подключишь стороннюю либу - так напишешь свою (только зачем??)

Это одно и тоже, что подключать jQuery ради одного метода. Зачем подключать либу с кучей методов для работы с аудио файлами? Мне всего-лишь нужно только получить duration аудио файла, больше мне нигде не нужно будет работать с аудио. :)

Deff 06.01.2015 12:45

http://maximals.ru/articles/mpeghdr/...r_MaximAL.html
http://mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm
http://habrahabr.ru/post/103635/
http://id3.org/Developer%20Information
http://www.php.su/articles/?cat=others&page=013

Rise 06.01.2015 13:11

А на клиенте ли не проще это сделать?
var audio = new Audio();
	audio.onloadedmetadata = function() { 
		console.log(this.duration);
	};
	audio.src = 'песенка.mp3';

ruslan_mart 06.01.2015 13:23

Rise, получить длину на клиенте и затем отправить на сервер вместе с остальными данными - не катит, ибо любой "дурак" сможет запросто подменить значения. Поэтому мне нужно делать все проверки на сервере.

Если ты имеешь ввиду получение длительности при воспроизведении, то - тоже не катит, т.к. у меня будет аналогично ВК: список аудио, около каждого из-них показана длительность, а пробегаться циклом по каждому и получать длину по событию loadedmetadata - изврещение. Ещё при том, что вызов события осуществляется только после буферации (начала воспроизведения).

Deff, открыл хабр, обрадовался, а ссылка на PHP код битая. :(

Rise 06.01.2015 14:30

Ruslan_xDD, PHP Calculate Duration of MP3

ruslan_mart 06.01.2015 15:15

Rise, натыкался сегодня на эту ссылку, но плохо присмотрелся. Спасибо, работает. :)


Zend 08.01.2015 12:12

ffmpeg не вариант установить?

http://habrahabr.ru/post/171239/

ruslan_mart 08.01.2015 14:11

Zend, вариант, то на хостинге его нет.


Часовой пояс GMT +3, время: 08:54.