Назад | Перейти на главную страницу

Можете ли вы транслировать mp3-файл с помощью nginx?

У меня есть приложение Ruby On Rails, работающее на Nginx, которое обслуживает MP3 с помощью проигрывателя JW. Мне нужно установить время начала и продолжительность для элементов списка воспроизведения. Насколько я могу судить, для этого мне нужно транслировать файлы MP3. Как мне настроить Nginx для этого?

Nginx имеет встроенную поддержку потоковой передачи файлов FLV через HttpFlvStreamModule. Вы можете указать модуль при компиляции / перекомпиляции Nginx.

# ./configure --with-http_flv_module ...SOME-OTHER-OPTS...

Затем вы можете настроить свой nginx.conf для потоковой передачи файлов FLV следующим образом:

...
http {
    ...
    server {
        ...
        location ~ \.flv$ {
            flv;
        }
        ...
    }
    ...
}

Теперь, как это поможет, если исходный вопрос был о потоковой передаче файлов MP3? Что ж, вы можете использовать FFMPEG для преобразования MP3 в файлы FLV следующим образом:

ffmpeg -y -i /home/song.mp3 -f flv -acodec mp3 -ab 64 -ac 1 /home/song.flv

Вы также можете добиться этого с помощью модуля mp4

 location /mp3/ {
    root data;
    mp4;
    mp4_buffer_size      1m;
    mp4_max_buffer_size  5m;
 }

Вам не нужно конвертировать в FLV для воспроизведения mp3

AFAIK, Nginx - это HTTP-сервер. Для потоковой передачи аудио вам понадобится Icecast: http://www.icecast.org/

Технические различия между потоковой передачей и загрузкой в ​​основном связаны с клиентом и сервером. Для конечного пользователя потоковая передача означает, что они, вероятно, не смогут сохранять мультимедиа на своей машине. Скачайте, и конечный пользователь может не сразу начать просмотр. Хотя на практике большинство данных можно просмотреть, как только первые биты поступят к клиенту.

При этом вы уверены, что вам нужен потоковый сервер для использования JWplayer? Разве вы не можете просто указать ему URL-адрес и позволить JW получить его? В этом случае Nginx будет нормально обрабатывать звук.

На самом деле, я почти уверен, что делал это раньше с Apache. Видео начало воспроизводиться после небольшой буферизации - как это происходит с Youtube.