LINUX.ORG.RU

5
Всего сообщений: 105

Сервер для ретрансляции MPEG-TS потока

Столкнулся с такой задачей - есть некий источник видео и его надо сделать доступным по http в виде mpegts потока (заранее приношу извинения, если тут терминологическая каша).

Публиковать его, очевидно, можно ffmpeg'ом, в простейшем случае как-то так

ffmpeg -i /dev/urandom -f mpegts http://whatever/foo/bar

Но непонятно, что можно использовать в качестве сервера, который будет этот поток принимать и ретранслировать. Беглый поиск выдает только коммерческие комбайны, вроде Wowza и Flussonic, есть nginx-ts-module, но он по факту генерит HLS и DASH из ts потока.

Хотя вроде магии там нет - публикатор просто делает POST запрос и постоянно шлёт данные, а плеер, соответственно, GET и постоянно получает их. Т.е. запилить кривой, но более-менее рабочий сервер можно и самому, но прыгать по граблям на своем велосипеде не хочется. Или может есть какой универсальный сервер, в котором такое реализовано?

 ,

WDWTFWW ()

GeForce NOW

https://www.youtube.com/watch?v=zceUpFI16UE

Для Ъ: Это виртуалка а-ля VDS с проброшенной видеокартой для запуска игр. Разумеется, всё через удобный интерфейс, чтобы Plug'n'Play.

Для Ъ^Ъ: проприетарщина, проходите мимо, но не уходите далеко: я бы хотел с вами обсудить саму суть технологии и все её достоинства и недостатки.

Сервис предоставляет возможность играть удалённо в трипл-эй проекты на любом ведре, в данный момент PC, Mac и Android. И прямо сейчас оно вышло из стадии бета-тестирования. Для пользователей из стран СНГ один месяц подписки стоит 999 рублей, шесть месяцев — 4999 рублей, и 12 месяцев — 9999 рублей. Помимо этого необходимо будет приобретать отдельно сами игры. Накладно, очень, отдавать условные 2000 рублей за игру плюс 1000 рублей за месяц «поиграть» в неё, но об этом чуть позже. Однако, если у вас уже есть игры в какой-то библиотеке типа Steam, тогда ещё раз покупать их уже не нужно. Прямо сейчас можно попробовать сервис бесплатно в течении 14 дней.

Для западных геймеров GeForce NOW предлагает бесплатный тариф, с ограничением игровой сессии в 1 (один) час. При этом количество одновременно запущенных сессий не ограничено. Расчехляем (гусары, молчать!) VPN'ы.

В общем-то суть понятна, нам выделяют ресурсы а-ля «VDS с видеокартой» с удобным интерфейсом для запуска игр. Отпугивает пока только одно: ценник. Впрочем, иначе мы бы получили засилье «танкистов» на серверах GeForce NOW и сервера бы быстро полегли. :)

Доводы ЗА и ЗА, — тут всё как с обычными VDS, к которым привыкли линуксоиды.

ЗА подкроватный локалхост.

Твоя железка — только твоя. Однако, речь не идёт про личные данные, которые обычно хранятся у линуксоида на подкроватном сервере. «Это же всего лишь игра».

ЗА удалённый гейминг.

Железо имеет свойство выходить из строя, т.е. всё обслуживание на тебе. Амортизация оборудования. В данном случае обслуживание железа на других плечах.

В случае игр, к амортизации железа нужно добавить ещё поддержку его в актуальном состоянии. Про апгрейд в принципе можно забыть и сидеть на одном поколении ПК все 30 лет. Для игр хватит любого ноутбука, который может воспроизвести 720p видео.

Мобильность. Если вы часто переезжаете с места на место, в разъездах, командировках, или у вас мало жилого места: всегда есть возможность скатать катку в любимый StarCraft II на любом «тонком клиенте». Не нужно за собой тащить ПК.

А вы что думаете? Предвидятся ли свободные альтернативы у этого сервиса?

 , ,

Spoofing ()

Какие есть торрент клиенты ориентированные на headless системы

Хочу попробовать сварганить решение аля сервер на полочке качает, а смотрю в браузере (ну да два раза качать…).

Соответственно ищу подходящую связку ПО.

Кто-то может уже заморачивался на эту тему?

 , , ,

pon4ik ()

Музыку слушать хочется

Всем привет! Какие линуксовые музыкальные плееры имеют интеграцию с музыкой вконтача? Или с любым стриминговым сервисом, доступным из РФ.

 ,

dnb ()

Стриминг звука на Ubuntu Server 16.04.6

Всем привет! У меня на старом ноуте стоит файлопомойка с Ubuntu server 16.04.6 и я хочу по веб интерфейсу(или из какой-то проги) с телефона или пк выбирать из списка песен на телефоне, пк или выбирать файл на самом серваке и выбранной мной файл воспроизводился на колонки подключённые к серверу. Надо полный гайд от А до Я. Есть идеи?

Перемещено leave из job

 , , ,

red2211 ()

Стриминг звука на Ubuntu Server 16.04.6

Всем привет! У меня на старом ноуте стоит файлопомойка с Ubuntu server 16.04.6 и я хочу по веб интерфейсу с телефона или пк выбирать из списка песен на телефоне, пк или выбирать файл на самом серваке и выбранной мной файл воспроизводился на колонки подключённые к серверу. Есть идеи?

Ссылочка на пост в тема Job: Стриминг звука на Ubuntu Server 16.04.6

 , , ,

red2211 ()

ElectronJS, запись и конвертирование в mp3 в real-time

Задача

Получать поток данных с микрофона, конвертировать на лету в mp3 формат и передавать на сервер. Цифровой аналог рации.

Используется

  • ElectronJS (ver. 6.0.10);
  • fluent-ffmpeg (ver. 2.1.2)
  • ffmpeg (ver. 4.2-static)

Комментарий

Сейчас используется следующий алгоритм: В renderer процессе через navigator.getUserMedia инициализируется микрофон и получаем поток. Поток скармливается MediaRecorder. Когда приходит команда начать запись, данные собираются в blob, blob скармливается FileReader, чтобы получить base64 строку. Полученный результат передаётся через IPC из renderer процесса в main. В main процессе данные сохраняются во временный файл. Временный файл скармливается ffmpeg, который в виде выходного файла некий url адрес конечного файла, куда производится запись/передача. Это одинаково работает, и в Windows системе, и в Linux системах.

Сейчас требуется real-time реализация, чтобы данные конвертировались в mp3 и передавались в процессе записи.

Что пробовал:

  • Скармливать данные из MediaRecorder в ffmpeg через Stream API. Мысль такова: Пока «активен» поток, ffmpeg конвертирует и передаёт данные в real-time режиме. Поток закрываем, конвертирование останавливается, в файл записывается окончание. Через remote.require подключил ffmpeg в renderer процессе. Создал сквозной Transform поток, который входящие данные трансформировал в Blob’ы. Поток скармливался ffmpeg. Аналогично действующему решению, только данные передаются сразу в ffmpeg. ffmpeg ругается на входные данные, это странно, потому что такие же данные записываются во временный файл. Ещё не разобрался в причинах такого поведения.

  • Передавать в ffmpeg адрес микрофона. Мысль такова: ffmpeg всеяден и может самостоятельно брать поток данных с микрофона. ElectronJS будет только управлять командами «старт», «стоп» и предоставлять конечный url. Здесь всплывает пласт проблем, связанных с поиском и объявлением аудио устройств.

Вопросы

Какие ещё можно рассмотреть доступные варианты, что мог упустить из виду или сделать неправильно?

 , , ,

Adeptus-Mechanicus ()

Стриминг содержимого эмулятора терминала

Сабж, есть ли какое-то готовое решение? Т.е., один в терминале что-то делает, а другой реал-тайм наблюдает в своём терминале действия другого.

 ,

john_snake ()

Видеорегистратор из cvlc

Всем добра!
Есть задача: писать с камеры поток в файл с разбитием по размеру, добавлением префикса даты/времени, и желательно, удалением старых файлов по времени или нехватки свободного места.
Как это всё реализовать на cvlc?

Просто запись работает так:

cvlc  v4l2:// :v4l2-dev=/dev/video0 --sout '#transcode{vcodec=theo,vb=2048}:file{access=file,mux=ogg,dst=out.ogg}' --sout-keep

 ,

Strannik-j ()

Вещать изображение с камеры телефона на Youtube без Youtube application

Гугель некоторое время назад запретил вести трансляции с телефона если на канале меньше 1000 «подписчиков», а у меня их целых 5. При этом для настольной ЭВМ такого ограничения нет.

Есть ли для LineageOS или Android'а какой-то аналог OBS чтобы вещать изображение с камеры будто я это делаю с настольной ЭВМ?

 , , ,

Camel ()

ReadableStream

Как правильно потоковый json обрабатывать?

Набросал пример сервера:

#!/usr/bin/env python
import random
import time

from flask import Flask, Response, jsonify, request, stream_with_context

app = Flask(__name__)

@app.route('/stream')
def streamed_response():
  def generate():
    while True:
      time.sleep(random.uniform(1, 3))
      yield jsonify({'r': random.random()}).data
  return Response(stream_with_context(generate()), content_type='application/json')

if __name__ == '__main__':
  app.run(debug=True)

а вот клиентский код:

(async () => {
  const response = await fetch('http://127.0.0.1:5000/stream')
  console.log(response)
  const reader = response.body.getReader()
  for (;;) {
    const result = await reader.read()
    console.log(result)
    if (result.done) {
      break
    }
    let data = new TextDecoder('utf-8').decode(result.value)
    data = JSON.parse(data)
    console.log(data)
  }
})()


Выхлоп:

Promise {<pending>}
VM97:3 Response {type: "basic", url: "http://127.0.0.1:5000/stream", redirected: false, status: 200, ok: true, …}
VM97:8 {value: Uint8Array(30), done: false}
VM97:11 {r: 0.3893236675026768}
VM97:8 {value: Uint8Array(31), done: false}
VM97:11 {r: 0.14124995684129193}

Никто не знает можно ли вместо Uint8Array получать распарсенный json? Так-то оно работает, но даже в документации к fetch на MDN в примерах какая-то херня, а мне интересно как правильно то делать?

 , ,

tz4678 ()

AdbBlock для потокового аудио (интернет-радиостанций)

Простите, что с хабра, но читать лучше в оригинале статьи, там много букв.

Вкратце: чел с 2015 года пилит продукт, сейчас открыл в OpenSource. В статье его опыт над работой и о граблях с блюстителями законов во Франции.

 , , , ,

bvn13 ()

RTSP и поток RTP c параметром ptime

Привет всем! Всё работает прекрасно, запускается поток rtp в сеть с сервера rtsp с локальным адресом 127.0.0.1 и публичным адресом 192.168.0.10 этой командой:

/usr/bin/ffmpeg -re -f alsa -i plughw:0,0 -ac 1 -ar 32000 -acodec pcm_s16be -af "highpass=f='300', lowpass=f='4000'" -hide_banner -loglevel panic -nostdin -initial_pause 1 -f rtsp rtsp://127.0.0.1:5545/stream0

Но... Народ говорит, что есть некий параметр ptime для rtp потока, который фиксирует минимальный уровень фрагментации потока UDP и он должен быть 20 ms (ну т.е. в UDP пакете должно быть минимум 20 ms звука), а у меня 0.5 - 1 ms и пакеты получаются слишком маленькие, нагрузка на сеть большая.

Вопросы: Как сунуть этот параметр в ffmpeg? Или это надо сунуть в rtsp-сервер?

 , , , ,

linuxmaster ()

Блеск, нищета и лицемерие копирастов

Большинство людей на этом форуме, не трудно заметить, относятся весьма лояльно к нарушению авторских прав на контент. Но есть и те, которые придерживаются иного мнения и даже на полном серьезе называют пользователей торрентов мудаками и ворами.

Давайте разберемся, кто же на самом деле в этом противостоянии мудаки - правообладатели или правонарушители.

Копирастам всегда, несмотря на неизменно бешеные прибыли, было жить очень тяжело. Все их обижали и обворовывали. Вот и сейчас - пожалуй, их лицемерие достигло наибольшего максимума за всю историю. Но сделаем небольшой экскурс в прошлое.

В моем детстве не было интернета, не было флешек и CD болванок. А были магнитофоны. А в чем суть этого устройства? Оно позволяет копировать музыку. Копирасты 2018 года спросили бы - а откуда ты собираешься копировать, ведь мы все запретили? Зачем вообще производить магнитофон?

Но тогда таких вопросов ни у кого не возникало, и даже в США ЕМНИП до 1992 года не было законодательно запрещено делать некоммерческие копии на магнитофон. Люди ходили друг к другу в гости и делали копии еще со времен бобинников. И никто не называл их за это ворами!

В суровые 90-е начался расцвет «настоящих», коммерческих пиратов. Сначала в городе открывались конторы, которые за деньги записывали на твою чистую кассету что угодно. Потом на каждой остановке появились ларьки, где продавалась пиратская продукция, изготовленная промышленным(!!!) путем, с уплатой налогов и НДС!

Потом появились торренты и безлимитный интернет. Это подняло на новый уровень практику ходить друг к другу с магнитофонами - тепперь не нужно было ходить, а можно просто раздавать на весь мир. Пользователи торрентов перестали быть пиратами в прежнем понимании - они не получали прибыли от чужой интеллектуальной собственности. Развитие торрентов убило настоящих пиратов, которые на самом деле воровали прибыли у правообладателей.

Но правообладателям смерть пиратов была совсем не в радость, и они обрушились на людей, совершающих некоммерческий обмен. Решили запретить обмениваться файлами любой ценой - и достигли довольно больших успехов в развитых странах - люди теперь боятся что-либо качать, потому что можно получить «письмо счастья». На фоне этого появилась куча легальных сервисов и стриминг.

И вот тут самое интересное. Стриминг растет бешеными темпами, индустрия впервые за пару десятков лет начала расти, но копирастам плохо! Их опять обворовали!

Они начинают вой и целые демарши, как например Taylor Swift, по поводу того что Spotify их обворовал! Как же так? Какой закон нарушил Spotify? Никакой. Но они все равно воры.

Эта замечательная певица приводит такие метафоры - она повесила в музее картину, а посетители ее разрезали на куски и растащили. Но извините меня, ее картина никуда со стены не исчезла. Так кто же ее обокрал?

Вы, копирасты, не хотели чтобы люди обменивались файлами. Люди сказали ладно, раз так - нам не нужны вообще никакие файлы, мы будем слушать поток. И теперь копирастов уничтожают не воры из стран третьего мира, а Goole, Apple, Spotify. Вы подавали в суд на девочку, которая скачала с торрента мультик? Подайте теперь на Apple. Только сейчас закон на стороне стриминга, и величина роялти за стриминг установлена совершенно законно. Ни в какой суд уже не подашь, остается только готовиться к отправке в биореактор.

Так а в чем лицемерие? А в том, что индустрия (легальная!!!) растет, а копирастов обворовали. Как же это так?

 , ,

curufinwe ()

Готов ли Linux для игровых стримов и летсплеев?

Здаровки. Решил попробовать немного экзотики, а именно Linux в качестве игровой платформы для стримов и записи игрового процесса для последующей заливки на Youtube. Я в этом деле девственник, Linux разве что на Youtube тыкал. В связи с развитием Vulkan и выходом первой игры для Linux на этом API, я посчитал что Linux готов, можно пробовать. Но есть ли софт для полной и комфортной работы, я пока такой не нашел.

1. В Windows в принципе без разницы какая видеокарта, они все неплохо работают, и выдают нормальный ФПС в играх. Но в Linux как я слышал только Nvidia, особенно если играешь и записываешь. Так ли это?

2. Среди десятков версий Linux для нормальной работы ставить надо Ubuntu, вроде как и с мультимедиа она отлично справляется, и постабильнее, и ковыряться с настройками не надо. Все правильно?

3. Как обстоит дело с видеозаписью игрового процесса в Linux? Читал что проседает ФПС по сравнению с Windows при записи тех же игр на тех же настройках. Но посты старые, все это датировано до появления Vulkan. Как оно сегодня?

4. Какой набор софта посоветуете для записи летсплеев и стримов? Есть нормальный софт, а не фанатские поделки? Касательно стримерских платформ - твич под Linux работает нормально?

5. Что еще надо знать стримерам и летсплейщикам под Linux? Сенкю.

 , , ,

TheGideonGames ()

python-vlc не воспроизводит .pls

import vlc
import time

url = "listen.di.fm/premium_high/vocaltrance.pls?38af6c59409db3cfade9e2ed"

Instance = vlc.Instance()
player = Instance.media_player_new()
Media = Instance.media_new(url)
#Media_list = Instance.media_list_new([url])
Media.get_mrl()
player.set_media(Media)
player.play()


time.sleep(20)

Что тут не так? Не происходит ровно ничего, хотя вроде все правильно

 , ,

foozzi ()

Как можно использовать встроенный в GNOME Screencast для стримов?

Хочу вещать часть своего экрана, нашёл для этого подходящий метод:

    <!--
        ScreencastArea:
        @x: the X coordinate of the area to capture
        @y: the Y coordinate of the area to capture
        @width: the width of the area to capture
        @height: the height of the area to capture
        @file_template: the template for the filename to use
        @options: a dictionary of optional parameters
        @success: whether the screencast was started successfully
        @filename_used: the file where the screencast is being saved
        Records a screencast of the passed in area and saves it
        (by default) as webm video under a filename derived from
        @file_template. The template is either a relative or absolute
        filename which may contain some escape sequences - %d and %t
        will be replaced by the start date and time of the recording.
        If a relative name is used, the screencast will be saved in the
        $XDG_VIDEOS_DIR if it exists, or the home directory otherwise.
        The actual filename of the saved video is returned in @filename_used.
        The set of optional parameters in @options currently consists of:
            'draw-cursor'(b): whether the cursor should be included in the
                              recording (true)
            'framerate'(i): the number of frames per second that should be
                            recorded if possible (30)
            'pipeline'(s): the GStreamer pipeline used to encode recordings
                           in gst-launch format; if not specified, the
                           recorder will produce vp8 (webm) video (unset)
    -->
    <method name="ScreencastArea">
      <arg type="i" direction="in" name="x"/>
      <arg type="i" direction="in" name="y"/>
      <arg type="i" direction="in" name="width"/>
      <arg type="i" direction="in" name="height"/>
      <arg type="s" direction="in" name="file_template"/>
      <arg type="a{sv}" direction="in" name="options"/>
      <arg type="b" direction="out" name="success"/>
      <arg type="s" direction="out" name="filename_used"/>
</method>
Каким должен быть pipeline для GStreamer, чтобы передавать видео по сети? Какой использовать сервер?

 , , , ,

CYB3R ()

Есть ли аналоги стимовского in-home streaming?

Сабж. Есть железо, которое сможет запустить то что мне надо но без монитора.

Хотелось бы вывод всего стримить на ноут как игрульки в стиме

т.е с управлением и изображением в 60 кадров

Есть ли аналоги такой вещи?

 , ,

Deleted ()

Пишем игру 'Убийца доты!' на RUST, Unity3D.

Картинка-скриншот: https://imgur.com/1EnG6PY

https://www.youtube.com/playlist?list=PLJOi03xWjFiZaacMrwG30a_EXfp-dcWcv

Пишем игру.
Жанр: IDC.

Серверная часть на RUST под Ubuntu. Исходники
Клиентская на Unity 3D. Исходники

Смысл игры:
Обучать аборигенов и помогать им в развитии поселения.

Отличительные особенности:
* Саморазвивающийся мир. Растения и животные растут, едят, размножаются. (реализовано)
* Аборигены будут принимать решения самостоятельно. Сами выбирать место для строительства и строить. Развивать сельское хозяйство, сажать растения, собирать их. Самостоятельно создавать отряды воинов, вести «переговоры» с соседями. (в процессе)
* Мир живет и развивается даже если игрок оффлайн. (работает)
* Игрок может отбить поселение у другого игрока, либо взять под свою опеку незанятое никем, либо управлять совместно с другим игроком. (в планах)

На какие игры похоже:
1. Majesty.
2. The Guild.
3. Травиан.
4. Dwarf Fortress.
5. Screeps.

Что сделано:
+1. Запилить чат, с кириллицей.(начало 19 сентября 2016)
+2. Перемещение игрока.
+3. Запилить растения.
+4. Смайлики в чат. (огромное спасибо lokivoid)
+5. Добавить монстров.
+6. Монстры едят растения.
+7. Монстры собираются в группы(стаи).
-8. Добавить аборигенов.
-9. Аборигены едят растения и монстров.
-10. Аборигены объединяются в группы(племена).

Сcылки:
Посмотреть процесс создания на стриме
Анонсы стримов

 , , , ,

Gexon ()

Лучший hosted стриминговый сервис

Доброй ночи. Хотелось бы узнать, чем пользуются и что могут порекомендовать люди среди self-hosted стриминговых сервисов. Пробовал plex, emby, kodi.
Plex не понравился отсутсвием поддержки flac`а, и в целом он какой-то платный, все время выскакивала реклама. Не то, чтобы жалко купить, но зачем? Их фильмы мне не нужны, синхронизация и облако - тоже).
Emby - опять таки за каждый чих надо платить - в браузере можно слушать только первую минуту, нет поддержки flac`a опять.
Были надежды на kodi, даже кодеки для лосслеса есть, но все очень плохо само собой:
Падал с ошибками иксов (какие иксы могут быть на NASе я не очень понимаю правда, но поставил специально), для дебиана нет нормальной поддержки, предлагают ставить убунту. Пытался поставить готовый образ из докера, но там оказалось что-то очень невнятное и кривое.
В общем, пока вариантов «слушать музыку и смотреть фильмы с NAS`а на планшете» я не нашел...

 , ,

Nightfall ()