Compare commits

..

12 Commits
v4.7 ... v4.11

Author SHA1 Message Date
Maxim Devaev
496c9300fc Bump version: 4.10 → 4.11 2021-12-31 01:28:51 +03:00
Maxim Devaev
5b7780cf7c using python-3.10 2021-12-31 01:26:47 +03:00
Maxim Devaev
421f4a1f2e Bump version: 4.9 → 4.10 2021-11-28 08:43:41 +03:00
Maxim Devaev
55a5d4bbdd real bitrate range 2021-11-28 08:40:56 +03:00
Maxim Devaev
666ae0c4f1 Merge pull request #133 from jtrmal/patch-1
correct/updated package name is libgpiod-dev
2021-11-26 03:33:04 +03:00
Jan "yenda" Trmal
ca3afc074c correct/updated package name is libgpiod-dev 2021-11-21 12:19:03 -05:00
Maxim Devaev
030077fb47 Bump version: 4.8 → 4.9 2021-10-30 11:40:31 +03:00
Maxim Devaev
61ddff8b6e Merge pull request #129 from b-rad15/master
Change html links to relative not absolute
2021-10-30 11:27:20 +03:00
Bradley O'Connell
27fbfe149e changed html links to relative not absolute 2021-10-30 03:20:57 -04:00
Maxim Devaev
349f655cd9 Bump version: 4.7 → 4.8 2021-10-19 15:56:19 +03:00
Maxim Devaev
f5c0a15967 removed ansible link 2021-10-19 15:55:34 +03:00
Maxim Devaev
d822ae0890 Fixed #121: static inline 2021-10-19 15:47:42 +03:00
14 changed files with 28 additions and 30 deletions

View File

@@ -1,7 +1,7 @@
[bumpversion] [bumpversion]
commit = True commit = True
tag = True tag = True
current_version = 4.7 current_version = 4.11
parse = (?P<major>\d+)\.(?P<minor>\d+) parse = (?P<major>\d+)\.(?P<minor>\d+)
serialize = serialize =
{major}.{minor} {major}.{minor}

View File

@@ -37,7 +37,7 @@ If you're going to live-stream from your backyard webcam and need to control it,
You'll need ```make```, ```gcc```, ```libevent``` with ```pthreads``` support, ```libjpeg8```/```libjpeg-turbo``` and ```libbsd``` (only for Linux). You'll need ```make```, ```gcc```, ```libevent``` with ```pthreads``` support, ```libjpeg8```/```libjpeg-turbo``` and ```libbsd``` (only for Linux).
* Arch: `sudo pacman -S libevent libjpeg-turbo libutil-linux libbsd`. * Arch: `sudo pacman -S libevent libjpeg-turbo libutil-linux libbsd`.
* Raspbian: `sudo apt install libevent-dev libjpeg8-dev libbsd-dev`. Add `libraspberrypi-dev` for `WITH_OMX=1` and `libgpiod` for `WITH_GPIO=1`. * Raspbian: `sudo apt install libevent-dev libjpeg8-dev libbsd-dev`. Add `libraspberrypi-dev` for `WITH_OMX=1` and `libgpiod-dev` for `WITH_GPIO=1`.
* Debian/Ubuntu: `sudo apt install build-essential libevent-dev libjpeg-dev libbsd-dev`. * Debian/Ubuntu: `sudo apt install build-essential libevent-dev libjpeg-dev libbsd-dev`.
On Raspberry Pi you can build the program with OpenMAX IL. To do this pass option ```WITH_OMX=1``` to ```make```. To enable GPIO support install [libgpiod](https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/about) and pass option ```WITH_GPIO=1```. If the compiler reports about a missing function ```pthread_get_name_np()``` (or similar), add option ```WITH_PTHREAD_NP=0``` (it's enabled by default). For the similar error with ```setproctitle()``` add option ```WITH_SETPROCTITLE=0```. On Raspberry Pi you can build the program with OpenMAX IL. To do this pass option ```WITH_OMX=1``` to ```make```. To enable GPIO support install [libgpiod](https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/about) and pass option ```WITH_GPIO=1```. If the compiler reports about a missing function ```pthread_get_name_np()``` (or similar), add option ```WITH_PTHREAD_NP=0``` (it's enabled by default). For the similar error with ```setproctitle()``` add option ```WITH_SETPROCTITLE=0```.
@@ -122,7 +122,6 @@ v4l2 utilities provide the tools to manage USB webcam setting and information. S
----- -----
# See also # See also
* [Running uStreamer via systemd service](https://github.com/pikvm/ustreamer/issues/16). * [Running uStreamer via systemd service](https://github.com/pikvm/ustreamer/issues/16).
* [uStreamer Ansible Role](https://github.com/mtlynch/ansible-role-ustreamer): Use [Ansible](https://docs.ansible.com/ansible/latest/index.html) to compile uStreamer and install it as a systemd service automatically.
----- -----
# License # License

View File

@@ -122,7 +122,6 @@ V4L2 предоставляет ряд официальных утилит дл
----- -----
# Смотрите также # Смотрите также
* [Запуск с помощью systemd-сервиса](https://github.com/pikvm/ustreamer/issues/16). * [Запуск с помощью systemd-сервиса](https://github.com/pikvm/ustreamer/issues/16).
* [uStreamer Ansible Role](https://github.com/mtlynch/ansible-role-ustreamer): Использование [Ansible](https://docs.ansible.com/ansible/latest/index.html) для сборки и установки стримера как systemd-сервиса.
----- -----
# Лицензия # Лицензия

View File

@@ -3,7 +3,7 @@ envlist = cppcheck, flake8, pylint, mypy, vulture, htmlhint
skipsdist = true skipsdist = true
[testenv] [testenv]
basepython = python3.9 basepython = python3.10
changedir = /src changedir = /src
[testenv:cppcheck] [testenv:cppcheck]

View File

@@ -1,6 +1,6 @@
.\" Manpage for ustreamer-dump. .\" Manpage for ustreamer-dump.
.\" Open an issue or pull request to https://github.com/pikvm/ustreamer to correct errors or typos .\" Open an issue or pull request to https://github.com/pikvm/ustreamer to correct errors or typos
.TH USTREAMER-DUMP 1 "version 4.7" "January 2021" .TH USTREAMER-DUMP 1 "version 4.11" "January 2021"
.SH NAME .SH NAME
ustreamer-dump \- Dump uStreamer's memory sink to file ustreamer-dump \- Dump uStreamer's memory sink to file

View File

@@ -1,6 +1,6 @@
.\" Manpage for ustreamer. .\" Manpage for ustreamer.
.\" Open an issue or pull request to https://github.com/pikvm/ustreamer to correct errors or typos .\" Open an issue or pull request to https://github.com/pikvm/ustreamer to correct errors or typos
.TH USTREAMER 1 "version 4.7" "November 2020" .TH USTREAMER 1 "version 4.11" "November 2020"
.SH NAME .SH NAME
ustreamer \- stream MJPG video from any V4L2 device to the network ustreamer \- stream MJPG video from any V4L2 device to the network

View File

@@ -3,7 +3,7 @@
pkgname=ustreamer pkgname=ustreamer
pkgver=4.7 pkgver=4.11
pkgrel=1 pkgrel=1
pkgdesc="Lightweight and fast MJPG-HTTP streamer" pkgdesc="Lightweight and fast MJPG-HTTP streamer"
url="https://github.com/pikvm/ustreamer" url="https://github.com/pikvm/ustreamer"

View File

@@ -6,7 +6,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=ustreamer PKG_NAME:=ustreamer
PKG_VERSION:=4.7 PKG_VERSION:=4.11
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_MAINTAINER:=Maxim Devaev <mdevaev@gmail.com> PKG_MAINTAINER:=Maxim Devaev <mdevaev@gmail.com>

View File

@@ -8,7 +8,7 @@ from distutils.core import setup
if __name__ == "__main__": if __name__ == "__main__":
setup( setup(
name="ustreamer", name="ustreamer",
version="4.7", version="4.11",
description="uStreamer tools", description="uStreamer tools",
author="Maxim Devaev", author="Maxim Devaev",
author_email="mdevaev@gmail.com", author_email="mdevaev@gmail.com",

View File

@@ -23,7 +23,7 @@
#pragma once #pragma once
#define VERSION_MAJOR 4 #define VERSION_MAJOR 4
#define VERSION_MINOR 7 #define VERSION_MINOR 11
#define MAKE_VERSION2(_major, _minor) #_major "." #_minor #define MAKE_VERSION2(_major, _minor) #_major "." #_minor
#define MAKE_VERSION1(_major, _minor) MAKE_VERSION2(_major, _minor) #define MAKE_VERSION1(_major, _minor) MAKE_VERSION2(_major, _minor)

View File

@@ -68,7 +68,7 @@ typedef struct {
_dest->encode_end_ts = _src->encode_end_ts; \ _dest->encode_end_ts = _src->encode_end_ts; \
} }
inline void frame_copy_meta(const frame_s *src, frame_s *dest) { static inline void frame_copy_meta(const frame_s *src, frame_s *dest) {
FRAME_COPY_META(src, dest); FRAME_COPY_META(src, dest);
} }
@@ -97,6 +97,6 @@ unsigned frame_get_padding(const frame_s *frame);
const char *fourcc_to_string(unsigned format, char *buf, size_t size); const char *fourcc_to_string(unsigned format, char *buf, size_t size);
inline bool is_jpeg(unsigned format) { static inline bool is_jpeg(unsigned format) {
return (format == V4L2_PIX_FMT_JPEG || format == V4L2_PIX_FMT_MJPEG); return (format == V4L2_PIX_FMT_JPEG || format == V4L2_PIX_FMT_MJPEG);
} }

View File

@@ -12,30 +12,30 @@
<hr> <hr>
<ul> <ul>
<li> <li>
<a href="/state"><b>/state</b></a><br> <a href="state"><b>/state</b></a><br>
Get JSON structure with the state of the server. Get JSON structure with the state of the server.
</li> </li>
<br> <br>
<li> <li>
<a href="/snapshot"><b>/snapshot</b></a><br> <a href="snapshot"><b>/snapshot</b></a><br>
Get a current actual image from the server. Get a current actual image from the server.
</li> </li>
<br> <br>
<li> <li>
<a href="/stream"><b>/stream</b></a><br> <a href="stream"><b>/stream</b></a><br>
Get a live stream. Query params:<br> Get a live stream. Query params:<br>
<br> <br>
<ul> <ul>
<li> <li>
<b>key=abc123</b><br> <b>key=abc123</b><br>
The user-defined key, which is part of cookie <i>stream_client</i>, which allows<br> The user-defined key, which is part of cookie <i>stream_client</i>, which allows<br>
the stream client to determine its identifier and view statistics using <a href="/state">/state</a>. the stream client to determine its identifier and view statistics using <a href="state">/state</a>.
</li> </li>
<br> <br>
<li> <li>
<b>extra_headers=1</b><br> <b>extra_headers=1</b><br>
Add <i>X-UStreamer-*</i> headers to the <a href="/stream">/stream</a> handle Add <i>X-UStreamer-*</i> headers to the <a href="stream">/stream</a> handle
(like with the <a href="/snapshot">/snapshot</a>). (like with the <a href="snapshot">/snapshot</a>).
</li> </li>
<br> <br>
<li> <li>
@@ -62,9 +62,9 @@
The mjpg-streamer compatibility layer:<br> The mjpg-streamer compatibility layer:<br>
<br> <br>
<ul> <ul>
<li><a href="/?action=snapshot">/?action=snapshot</a> as alias to the <a href="/snapshot">/snapshot</a>.</li> <li><a href="?action=snapshot">/?action=snapshot</a> as alias to the <a href="snapshot">/snapshot</a>.</li>
<br> <br>
<li><a href="/?action=stream">/?action=stream</a> as alias to the <a href="/stream">/stream</a>.</li> <li><a href="?action=stream">/?action=stream</a> as alias to the <a href="stream">/stream</a>.</li>
</ul> </ul>
</li> </li>
</ul> </ul>

View File

@@ -37,30 +37,30 @@ const char *const HTML_INDEX_PAGE = " \
<hr> \ <hr> \
<ul> \ <ul> \
<li> \ <li> \
<a href=\"/state\"><b>/state</b></a><br> \ <a href=\"state\"><b>/state</b></a><br> \
Get JSON structure with the state of the server. \ Get JSON structure with the state of the server. \
</li> \ </li> \
<br> \ <br> \
<li> \ <li> \
<a href=\"/snapshot\"><b>/snapshot</b></a><br> \ <a href=\"snapshot\"><b>/snapshot</b></a><br> \
Get a current actual image from the server. \ Get a current actual image from the server. \
</li> \ </li> \
<br> \ <br> \
<li> \ <li> \
<a href=\"/stream\"><b>/stream</b></a><br> \ <a href=\"stream\"><b>/stream</b></a><br> \
Get a live stream. Query params:<br> \ Get a live stream. Query params:<br> \
<br> \ <br> \
<ul> \ <ul> \
<li> \ <li> \
<b>key=abc123</b><br> \ <b>key=abc123</b><br> \
The user-defined key, which is part of cookie <i>stream_client</i>, which allows<br> \ The user-defined key, which is part of cookie <i>stream_client</i>, which allows<br> \
the stream client to determine its identifier and view statistics using <a href=\"/state\">/state</a>. \ the stream client to determine its identifier and view statistics using <a href=\"state\">/state</a>. \
</li> \ </li> \
<br> \ <br> \
<li> \ <li> \
<b>extra_headers=1</b><br> \ <b>extra_headers=1</b><br> \
Add <i>X-UStreamer-*</i> headers to the <a href=\"/stream\">/stream</a> handle \ Add <i>X-UStreamer-*</i> headers to the <a href=\"stream\">/stream</a> handle \
(like with the <a href=\"/snapshot\">/snapshot</a>). \ (like with the <a href=\"snapshot\">/snapshot</a>). \
</li> \ </li> \
<br> \ <br> \
<li> \ <li> \
@@ -87,9 +87,9 @@ const char *const HTML_INDEX_PAGE = " \
The mjpg-streamer compatibility layer:<br> \ The mjpg-streamer compatibility layer:<br> \
<br> \ <br> \
<ul> \ <ul> \
<li><a href=\"/?action=snapshot\">/?action=snapshot</a> as alias to the <a href=\"/snapshot\">/snapshot</a>.</li> \ <li><a href=\"?action=snapshot\">/?action=snapshot</a> as alias to the <a href=\"snapshot\">/snapshot</a>.</li> \
<br> \ <br> \
<li><a href=\"/?action=stream\">/?action=stream</a> as alias to the <a href=\"/stream\">/stream</a>.</li> \ <li><a href=\"?action=stream\">/?action=stream</a> as alias to the <a href=\"stream\">/stream</a>.</li> \
</ul> \ </ul> \
</li> \ </li> \
</ul> \ </ul> \

View File

@@ -438,7 +438,7 @@ int options_parse(options_s *options, device_s *dev, encoder_s *enc, stream_s *s
ADD_SINK("raw-", raw_sink, RAW_SINK) ADD_SINK("raw-", raw_sink, RAW_SINK)
# ifdef WITH_OMX # ifdef WITH_OMX
ADD_SINK("h264-", h264_sink, H264_SINK) ADD_SINK("h264-", h264_sink, H264_SINK)
case _O_H264_BITRATE: OPT_NUMBER("--h264-bitrate", stream->h264_bitrate, 100, 16000, 0); case _O_H264_BITRATE: OPT_NUMBER("--h264-bitrate", stream->h264_bitrate, 25, 25000, 0);
case _O_H264_GOP: OPT_NUMBER("--h264-gop", stream->h264_gop, 0, 60, 0); case _O_H264_GOP: OPT_NUMBER("--h264-gop", stream->h264_gop, 0, 60, 0);
# endif # endif
# undef ADD_SINK # undef ADD_SINK