Организация on-line трансляции на сайте FFmpeg HLS Nginx

Организация on-line трансляции на сайте FFmpeg HLS Nginx

Пример организации on-line трансляции на сайте из потоков multicast средствами ffmpeg и nginx на ubuntu server разных версий. Процесс установки и настройки не так уж сложен, это как туры во францию все просто. Для начала немного теории:

FFmpeg — набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио– и видеозаписи в различных форматах.

HLS (HTTP Live Streaming) — коммуникационный протокол для потоковой передачи медиа на основе HTTP, разработанный компанией Apple как часть программного обеспечения QuickTime, Safari, OS X и iOS. В основе работы лежит принцип разбиения цельного потока на небольшие фрагменты, последовательно скачиваемые по HTTP. Поток непрерывен и теоретически может быть бесконечным. В начале сессии скачивается плей-лист в формате M3U, содержащий метаданные об имеющихся вложенных потоках.

nginx (англ. engine x) (по-русски произносится как э́нжин-э́кс или э́нжин-и́кс) — веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах (тестировалась сборка и работа на FreeBSD, OpenBSD, Linux, Solaris, Mac OS X, AIX и HP-UX).

Потоковое мультимедиа (от. англ. streaming media) — это мультимедиа, которое непрерывно получается пользователем от провайдера потокового вещания. Это понятие применимо как к информации, распространяемой через телекоммуникации, так и к информации, которая изначально распространялась посредством потокового вещания (например, радио, телевидение) или непотоковой (например, книги, видеокассеты, аудио CD).

 

Приступим к установки по для работы
  1. Устанавливаем FFmpeg, добавляем репозиторий с последними сборками :
    sudo add-apt-repository ppa:jonathonf/ffmpeg-3
    
    sudo apt update && sudo apt install ffmpeg libav-tools x264 x265
  2. Устанавливаем Nginx, добавляем репозиторий с последними сборками :
    sudo apt-get install python-software-properties
    
    sudo add-apt-repository ppa:nginx/stable
    
    sudo apt-get update
    
    sudo apt-get install nginx
  3.   Создаем скрипт для работы над потоком:
    sudo cd /opt/
    
    sudo touch script_stream_hls.sh
    
    sudo chmod 777 script_stream_hls.sh
    
    sudo useradd ffmpeguser
    
    sudo mkdir /opt/www/
Настройка по для работы
  1. Необходима определиться потоком данных откуда будем брать исходную картинку, для примера я возьму мультикастовый поток , можно брать изображение с камеры, из файла или других ресурсов.
  2. В файл script_stream_hls.sh записываем следующее:
  3. #!/bin/sh
    
    sudo -u ffmpeguser ffmpeg -i udp://@224.0.0.1:5000 -codec:v libx264 -s 640x480 -b:v 800k -movflags +faststart -c:a aac -b:a 160000 -ac 2 -strict -2 \
    -metadata service_provider="Stream TV" \
    -metadata service_name="Stream TV" \
    -hls_time 10 -hls_list_size 6 -hls_wrap 18 -start_number 1 \
    -hls_segment_filename '/opt/www/out%03d.ts' /opt/www/playlist.m3u8
    
    
  4. Настраиваем nginx для отдачи контента.
server {
	listen 80 default_server;
	listen [::]:80 default_server ipv6only=on;

	root /opt/www;
	index index.html index.htm;

	# Make site accessible from http://localhost/
	server_name localhost;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ =404;
		# Uncomment to enable naxsi on this location
		# include /etc/nginx/naxsi.rules
	}
	add_header 'Access-Control-Allow-Origin' '*';
	
	error_page 404 /index.html;

	}
}

 

 

Добавить комментарий

Ваш адрес email не будет опубликован.

Для того, чтобы пройти тест CAPTCHA включите JavaScript

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Exit mobile version