LINUX.ORG.RU

Помогите пергнать x11grab в rtmp и вывести в jwplayer

 , ,


0

2

Всем добра!
Есть «выездной» ноутбук подключенный к LAN роутера и 2й монитор.
Задача раздать по сети (желательно через браузер) изображение со 2го монитора.

Я не очень силен во всем этом. Сделал как смог, но не работает.
Система Gentoo!


Что есть:
NGINX: /etc/nginx.nginx.conf

rtmp{
	server{
		listen 1935;
		application myapp{
			live on;
		}
	}
}


ffmpeg
ffmpeg -loglevel debug -f x11grab -framerate 5 -video_size 1024x768 -i :0.0+1366,0 -vcodec libx264 -f flv rtmp://192.168.0.4:1935/myapp/mystream


video.html
<html>
    <head>
	<script type="text/javascript" src="/jwplayer/jwplayer.js"></script>
	<script>jwplayer.key="49qBWZxY2H8VjFed/jhUawuPRs7g02DhRwCDiQ==";</script>
    </head>
<body>

<div id="container">Loading the player ...</div>
    <script type="text/javascript">
        jwplayer("container").setup({
        modes: [
            {   type: "flash",
                src: "/jwplayer/player.swf",
                config: {
                    bufferlength: 1,
                    file: "mystream",
                    streamer: "rtmp://192.168.0.4:1935/myapp",
                    provider: "rtmp",
                }
            }
        ]
});
</script>
</body>
</html>

Если с помощью плеера не получается, то

ffplay -i rtmp://192.168.0.4:1935/myapp/mystream
так должно получиться воспроизвести.

u0atgKIRznY5
()
Ответ на: комментарий от XMs

Видно что ffplay зацепился и ждет. Но после подачи потока вываливаются оба.


2016/10/26 14:58:10 [info] 5389#5389: *1 client connected '127.0.0.1'
2016/10/26 14:58:10 [info] 5389#5389: *1 connect: app='myapp' args=" flashver=" swf_url=" tc_url='rtmp://localhost/myapp' page_url=" acodecs=3191 vcodecs=252 object_encoding=0, client: 127.0.0.1, server: 0.0.0.0:1935
2016/10/26 14:58:10 [info] 5389#5389: *1 createStream, client: 127.0.0.1, server: 0.0.0.0:1935
2016/10/26 14:58:10 [info] 5389#5389: *1 play: name='mystream' args=" start=0 duration=0 reset=0 silent=0, client: 127.0.0.1, server: 0.0.0.0:1935
2016/10/26 14:58:30 [info] 5389#5389: *2 client connected '192.168.0.4'
2016/10/26 14:58:30 [info] 5389#5389: *2 connect: app='myapp' args=" flashver=" swf_url=" tc_url='rtmp://192.168.0.4:1935/myapp' page_url=" acodecs=0 vcodecs=0 object_encoding=0, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 14:58:30 [info] 5389#5389: *2 createStream, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 14:58:30 [info] 5389#5389: *2 publish: name='mystream' args=" type=live silent=0, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 14:58:30 [notice] 5388#5388: signal 17 (SIGCHLD) received
2016/10/26 14:58:30 [alert] 5388#5388: worker process 5389 exited on signal 11
2016/10/26 14:58:30 [notice] 5388#5388: start worker process 5415
2016/10/26 14:59:58 [info] 5415#5415: *3 client connected '127.0.0.1'
2016/10/26 14:59:58 [info] 5415#5415: *3 connect: app='myapp' args=" flashver=" swf_url=" tc_url='rtmp://localhost/myapp' page_url=" acodecs=3191 vcodecs=252 object_encoding=0, client: 127.0.0.1, server: 0.0.0.0:1935
2016/10/26 14:59:58 [info] 5415#5415: *3 createStream, client: 127.0.0.1, server: 0.0.0.0:1935
2016/10/26 14:59:58 [info] 5415#5415: *3 play: name='mystream' args=" start=0 duration=0 reset=0 silent=0, client: 127.0.0.1, server: 0.0.0.0:1935
2016/10/26 15:00:18 [info] 5415#5415: *4 client connected '192.168.0.4'
2016/10/26 15:00:18 [info] 5415#5415: *4 connect: app='myapp' args=" flashver=" swf_url=" tc_url='rtmp://192.168.0.4:1935/myapp' page_url=" acodecs=0 vcodecs=0 object_encoding=0, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 15:00:18 [info] 5415#5415: *4 createStream, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 15:00:18 [info] 5415#5415: *4 publish: name='mystream' args=" type=live silent=0, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 15:00:18 [notice] 5388#5388: signal 17 (SIGCHLD) received
2016/10/26 15:00:18 [alert] 5388#5388: worker process 5415 exited on signal 11
2016/10/26 15:00:18 [notice] 5388#5388: start worker process 5460
2016/10/26 15:02:03 [info] 5460#5460: *5 client connected '192.168.0.4'
2016/10/26 15:02:03 [info] 5460#5460: *5 connect: app='myapp' args=" flashver=" swf_url=" tc_url='rtmp://192.168.0.4:1935/myapp' page_url=" acodecs=3191 vcodecs=252 object_encoding=0, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 15:02:03 [info] 5460#5460: *5 createStream, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 15:02:03 [info] 5460#5460: *5 play: name='mystream' args=" start=0 duration=0 reset=0 silent=0, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 15:02:11 [info] 5460#5460: *6 client connected '192.168.0.4'
2016/10/26 15:02:11 [info] 5460#5460: *6 connect: app='myapp' args=" flashver=" swf_url=" tc_url='rtmp://192.168.0.4:1935/myapp' page_url=" acodecs=0 vcodecs=0 object_encoding=0, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 15:02:11 [info] 5460#5460: *6 createStream, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 15:02:11 [info] 5460#5460: *6 publish: name='mystream' args=" type=live silent=0, client: 192.168.0.4, server: 0.0.0.0:1935
2016/10/26 15:02:11 [notice] 5388#5388: signal 17 (SIGCHLD) received
2016/10/26 15:02:11 [alert] 5388#5388: worker process 5460 exited on signal 11
2016/10/26 15:02:11 [notice] 5388#5388: start worker process 5477

LinuxID
() автор топика
Ответ на: комментарий от LinuxID

RTMP_ReadPacket, failed to read RTMP packet header
rtmp://192.168.0.4:1935/myapp/mystream: Invalid data found when processing input

LinuxID
() автор топика

https://trac.ffmpeg.org/wiki/StreamingGuide

еще лучше использовать аппаратный кодек, а не libx264 - нагрузка на процессор будет намного меньше, для ноутбуков это важно

anonymous
()

Для начала сохрани свой скринкаст в FLV, вида -f flv test.flv

И вот его попробуй проиграть в плеере. Вангую, что ничего не заработает, пока не добавишь ключик -pix_fmt yuv420p (могу спутать).

Как только отладишь проигрывание статики, переходи на rtmp

ruzisufaka
()

Проблема решена пересборкой модуля rtmp из git`а. JWPlayer & VLC теперь нормально его хавают. Возникла другая проблема ... Android & iOS планшеты из браузера не кажут. Пробовал ставить FlashPlayer на Android. Толку ноль. VLC на iOS тоже rtmp не умеет.

Если я провильно нагуглил, мне нужно HLS. Но, как пишут, соединение с сервером не сразу (что критично).

Из вики:

HTTP Live Streaming использует стандартный веб-сервер для распространения аудиовизуального контента по запросу, при этом требует специальное ПО для того, чтобы обеспечивать передачу контента в режиме реального времени.

Серверная часть Кодирует и оборачивает входящее медиа в подходящий для доставки формат. Далее контент готовится к распределению путём сегметирования. Медиа сегментируется на фрагменты (чанки, chunks) и индексный файл (плейлист).

  • Кодировка: видео кодируется в формате H.264 и аудио в MP3, HE-AAC или AC-3. Всё это вкладывается в транспортный поток MPEG-2 для последующей доставки.
  • Сегментирование: контент в MPEG-2 TS разделяется на фрагменты одинаковой длины, записанные в файлы .ts. Также создаётся индексный файл, содержащий ссылки на фрагменты или другие индексные файлы — он сохраняется как файл .m3u8

И вот тут я застрял.

LinuxID
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.