mirror of
https://github.com/pikvm/ustreamer.git
synced 2026-02-28 12:46:32 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59bd4e8dd2 | ||
|
|
ce6184b8cd | ||
|
|
9ca511d29d | ||
|
|
74de28c64a | ||
|
|
24060e8068 | ||
|
|
3a03d48855 | ||
|
|
935a9125d6 | ||
|
|
d4ea97ef2c | ||
|
|
867aa4e52a |
@@ -1,7 +1,7 @@
|
|||||||
[bumpversion]
|
[bumpversion]
|
||||||
commit = True
|
commit = True
|
||||||
tag = True
|
tag = True
|
||||||
current_version = 0.45
|
current_version = 0.48
|
||||||
parse = (?P<major>\d+)\.(?P<minor>\d+)(\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?)?
|
parse = (?P<major>\d+)\.(?P<minor>\d+)(\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?)?
|
||||||
serialize =
|
serialize =
|
||||||
{major}.{minor}
|
{major}.{minor}
|
||||||
|
|||||||
2
PKGBUILD
2
PKGBUILD
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
|
|
||||||
pkgname=ustreamer
|
pkgname=ustreamer
|
||||||
pkgver=0.45
|
pkgver=0.48
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Lightweight and fast MJPG-HTTP streamer"
|
pkgdesc="Lightweight and fast MJPG-HTTP streamer"
|
||||||
url="https://github.com/pi-kvm/ustreamer"
|
url="https://github.com/pi-kvm/ustreamer"
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
| Option to skip frames when streaming<br>static images by HTTP to save traffic |  Yes <sup>2</sup> |  No |
|
| Option to skip frames when streaming<br>static images by HTTP to save traffic |  Yes <sup>2</sup> |  No |
|
||||||
| Streaming via UNIX domain socket |  Yes |  No |
|
| Streaming via UNIX domain socket |  Yes |  No |
|
||||||
| Debug logs without recompiling,<br>performance statistics log,<br>access to HTTP broadcast parameters |  Yes |  No |
|
| Debug logs without recompiling,<br>performance statistics log,<br>access to HTTP broadcast parameters |  Yes |  No |
|
||||||
| Supported input devices |  YUYV, UYVY,<br>RGB565, ~~MJPG~~ <sup>3</sup> |  YUYV, UYVY,<br>RGB565, MJPG |
|
| Supported input formats |  YUYV, UYVY,<br>RGB565, ~~MJPG~~ <sup>3</sup> |  YUYV, UYVY,<br>RGB565, MJPG |
|
||||||
| Access to webcam controls (focus, servos)<br>and settings such as brightness via HTTP |  No |  Yes |
|
| Access to webcam controls (focus, servos)<br>and settings such as brightness via HTTP |  No |  Yes |
|
||||||
| Option to serve files<br>with a built-in HTTP server, auth settings |  No <sup>4</sup> |  Yes |
|
| Option to serve files<br>with a built-in HTTP server, auth settings |  No <sup>4</sup> |  Yes |
|
||||||
|
|
||||||
@@ -60,7 +60,6 @@ $ ./ustreamer \
|
|||||||
--format=uyvy \ # Device input format
|
--format=uyvy \ # Device input format
|
||||||
--encoder=omx \ # Hardware encoding with OpenMAX
|
--encoder=omx \ # Hardware encoding with OpenMAX
|
||||||
--dv-timings \ # Use DV-timings
|
--dv-timings \ # Use DV-timings
|
||||||
--quality=20 \ # OpenMAX has a non-linear quality scale
|
|
||||||
--drop-same-frames=30 # Save that traffic
|
--drop-same-frames=30 # Save that traffic
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ $ ./ustreamer \
|
|||||||
--format=uyvy \ # Настройка входного формата устройства
|
--format=uyvy \ # Настройка входного формата устройства
|
||||||
--encoder=omx \ # Использование аппаратного кодирования с помощью OpenMAX
|
--encoder=omx \ # Использование аппаратного кодирования с помощью OpenMAX
|
||||||
--dv-timings \ # Включение DV-таймингов
|
--dv-timings \ # Включение DV-таймингов
|
||||||
--quality=20 \ # У OpenMAX нелинейная шкала качества
|
|
||||||
--drop-same-frames=30 # Экономим трафик
|
--drop-same-frames=30 # Экономим трафик
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
@@ -21,4 +22,4 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define VERSION "0.45"
|
#define VERSION "0.48"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
@@ -440,10 +441,10 @@ static int _device_apply_resolution(struct device_t *dev, const unsigned width,
|
|||||||
|
|
||||||
static const char *_format_to_string_auto(char *buf, const size_t size, const unsigned format) {
|
static const char *_format_to_string_auto(char *buf, const size_t size, const unsigned format) {
|
||||||
assert(size >= 8);
|
assert(size >= 8);
|
||||||
buf[0] = format & 0x7f;
|
buf[0] = format & 0x7F;
|
||||||
buf[1] = (format >> 8) & 0x7f;
|
buf[1] = (format >> 8) & 0x7F;
|
||||||
buf[2] = (format >> 16) & 0x7f;
|
buf[2] = (format >> 16) & 0x7F;
|
||||||
buf[3] = (format >> 24) & 0x7f;
|
buf[3] = (format >> 24) & 0x7F;
|
||||||
if (format & (1 << 31)) {
|
if (format & (1 << 31)) {
|
||||||
buf[4] = '-';
|
buf[4] = '-';
|
||||||
buf[5] = 'B';
|
buf[5] = 'B';
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
@@ -296,7 +297,7 @@ static void _http_callback_snapshot(struct evhttp_request *request, void *v_serv
|
|||||||
assert(!evbuffer_add(buf, (const void *)EXPOSED(picture.data), EXPOSED(picture.size)));
|
assert(!evbuffer_add(buf, (const void *)EXPOSED(picture.data), EXPOSED(picture.size)));
|
||||||
|
|
||||||
ADD_HEADER("Access-Control-Allow-Origin:", "*");
|
ADD_HEADER("Access-Control-Allow-Origin:", "*");
|
||||||
ADD_HEADER("Cache-Control", "no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0");
|
ADD_HEADER("Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate, pre-check=0, post-check=0, max-age=0");
|
||||||
ADD_HEADER("Pragma", "no-cache");
|
ADD_HEADER("Pragma", "no-cache");
|
||||||
ADD_HEADER("Expires", "Mon, 3 Jan 2000 12:34:56 GMT");
|
ADD_HEADER("Expires", "Mon, 3 Jan 2000 12:34:56 GMT");
|
||||||
|
|
||||||
@@ -447,7 +448,7 @@ static void _http_callback_stream_write(struct bufferevent *buf_event, void *v_c
|
|||||||
assert(evbuffer_add_printf(buf,
|
assert(evbuffer_add_printf(buf,
|
||||||
"HTTP/1.0 200 OK" RN
|
"HTTP/1.0 200 OK" RN
|
||||||
"Access-Control-Allow-Origin: *" RN
|
"Access-Control-Allow-Origin: *" RN
|
||||||
"Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0" RN
|
"Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate, pre-check=0, post-check=0, max-age=0" RN
|
||||||
"Pragma: no-cache" RN
|
"Pragma: no-cache" RN
|
||||||
"Expires: Mon, 3 Jan 2000 12:34:56 GMT" RN
|
"Expires: Mon, 3 Jan 2000 12:34:56 GMT" RN
|
||||||
"Set-Cookie: stream_client=%s/%s; path=/; max-age=30" RN
|
"Set-Cookie: stream_client=%s/%s; path=/; max-age=30" RN
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# This source file based on code of MJPG-Streamer. #
|
# This source file based on code of MJPG-Streamer. #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ def main():
|
|||||||
text = "const char *%s = \" \\\n%s\n\";\n" % (name, text)
|
text = "const char *%s = \" \\\n%s\n\";\n" % (name, text)
|
||||||
text = textwrap.dedent("""
|
text = textwrap.dedent("""
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ def main():
|
|||||||
for ch in jpg_data:
|
for ch in jpg_data:
|
||||||
if len(rows[-1]) > 20:
|
if len(rows[-1]) > 20:
|
||||||
rows.append([])
|
rows.append([])
|
||||||
rows[-1].append(hex(ch))
|
rows[-1].append("0x%.2X" % (ch))
|
||||||
|
|
||||||
text = ",\n\t".join(", ".join(row) for row in rows)
|
text = ",\n\t".join(", ".join(row) for row in rows)
|
||||||
text = "const unsigned char %s_JPG_DATA[] = {\n\t%s\n};\n" % (prefix, text)
|
text = "const unsigned char %s_JPG_DATA[] = {\n\t%s\n};\n" % (prefix, text)
|
||||||
@@ -51,6 +51,7 @@ def main():
|
|||||||
text = "const unsigned %s_JPG_WIDTH = %d;\n" % (prefix, width) + text
|
text = "const unsigned %s_JPG_WIDTH = %d;\n" % (prefix, width) + text
|
||||||
text = textwrap.dedent("""
|
text = textwrap.dedent("""
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
# #
|
||||||
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
# uStreamer - Lightweight and fast MJPG-HTTP streamer. #
|
||||||
# #
|
# #
|
||||||
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
# Copyright (C) 2018 Maxim Devaev <mdevaev@gmail.com> #
|
||||||
|
|||||||
Reference in New Issue
Block a user