This adds the crtmpserver package from the old svn package tree. I adopt the licensing information and will maintain the package in the future. I also updated the package to the latest version and ensure that is building on x86_64, ar71xx and avr32. Signed-off-by: Thomas Heil <heil@terminal-consulting.de>lilik-openwrt-22.03
@ -0,0 +1,95 @@ | |||
# | |||
# Copyright (C) 2010 OpenWrt.org | |||
# | |||
# This is free software, licensed under the GNU General Public License v2. | |||
# See /LICENSE for more information. | |||
# | |||
include $(TOPDIR)/rules.mk | |||
PKG_NAME:=crtmpserver | |||
PKG_REV:=811 | |||
PKG_VERSION:=r$(PKG_REV) | |||
PKG_RELEASE:=1 | |||
PKG_BUILD_PARALLEL:=2 | |||
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de> | |||
PKG_LICENSE:=GPL-3.0 | |||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 | |||
PKG_SOURCE_URL:=--username=anonymous --password= https://svn.rtmpd.com/crtmpserver/branches/1.0 | |||
PKG_SOURCE_SUBDIR:=crtmpserver-$(PKG_VERSION) | |||
PKG_SOURCE_VERSION:=$(PKG_REV) | |||
PKG_SOURCE_PROTO:=svn | |||
include $(INCLUDE_DIR)/package.mk | |||
define Package/crtmpserver | |||
SECTION:=multimedia | |||
CATEGORY:=Multimedia | |||
DEPENDS:=+libopenssl +libstdcpp +liblua | |||
TITLE:=C++ RTMP Server | |||
URL:=http://www.rtmpd.com/ | |||
endef | |||
define Package/crtmpserver/description | |||
C++ RTMP Server it is a high performance streaming server able to | |||
stream (live or recorded) in the following technologies: | |||
* To and from Flash (RTMP,RTMPE, RTMPS, RTMPT, RTMPTE) | |||
* To and from embedded devices: iPhone, Android | |||
* From surveillance cameras | |||
* IP-TV using MPEG-TS and RTSP/RTCP/RTP protocols | |||
Also, crtmpserver can be used as a high performance rendes-vous | |||
server. For example, it enables you to do: | |||
* Audio/Video conferencing | |||
* Online gaming | |||
* Online collaboration | |||
* Simple/complex chat applications | |||
endef | |||
define Package/crtmpserver/conffiles | |||
/etc/crtmpserver.lua | |||
endef | |||
# XXX: this hack handles the usr/bin vs bin difference of backfire and trunk | |||
TS_BASE:=$(wildcard $(TOOLCHAIN_DIR)/bin/$(TARGET_CC)) | |||
TS_BASE:=$(dir $(if $(TS_BASE),$(TS_BASE),$(wildcard $(TOOLCHAIN_DIR)/usr/bin/$(TARGET_CC)))) | |||
define Build/Configure | |||
(cd $(PKG_BUILD_DIR)/builders/make; \ | |||
cp linux.mk linux-openwrt-uclibc.mk; \ | |||
$(SED) 's,^TOOLCHAIN_BASE[[:space:]]*=.*,TOOLCHAIN_BASE=$(TS_BASE),' \ | |||
-e 's,^TOOLCHAIN_PREFIX[[:space:]]*=.*,TOOLCHAIN_PREFIX=$(TARGET_CROSS),' \ | |||
-e 's,^CCOMPILER[[:space:]]*=.*,CCOMPILER=$(TARGET_CC),' \ | |||
-e 's,^CXXCOMPILER[[:space:]]*=.*,CXXCOMPILER=$(TARGET_CXX),' \ | |||
-e 's,^OPTIMIZATIONS[[:space:]]*=.*,OPTIMIZATIONS=-O2,' \ | |||
-e 's,^SSL_BASE[[:space:]]*=.*,SSL_BASE=$(STAGING_DIR)/usr,' \ | |||
linux-openwrt-uclibc.mk) | |||
endef | |||
define Build/Compile | |||
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/builders/make \ | |||
PLATFORM=linux-openwrt-uclibc -Wno-error -j6 | |||
endef | |||
define Package/crtmpserver/install | |||
$(INSTALL_DIR) $(1)/usr/bin | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/crtmpserver $(1)/usr/bin/ | |||
$(INSTALL_DIR) $(1)/usr/lib/crtmpserver | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/*.so $(1)/usr/lib/crtmpserver/ | |||
$(foreach app,flvplayback samplefactory admin stresstest appselector vptests applestreamingclient proxypublish, \ | |||
$(INSTALL_DIR) $(1)/usr/lib/crtmpserver/$(app); \ | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/applications/$(app)/lib$(app).so \ | |||
$(1)/usr/lib/crtmpserver/$(app)/; \ | |||
) | |||
$(INSTALL_DIR) $(1)/etc | |||
$(INSTALL_CONF) $(PKG_BUILD_DIR)/builders/make/output/dynamic/crtmpserver.lua $(1)/etc/ | |||
$(INSTALL_DIR) $(1)/usr/share/crtmpserver/appselector | |||
$(INSTALL_DIR) $(1)/usr/share/crtmpserver/media | |||
$(INSTALL_DIR) $(1)/etc/init.d | |||
$(INSTALL_BIN) ./files/crtmpserver.init $(1)/etc/init.d/crtmpserver | |||
endef | |||
$(eval $(call BuildPackage,crtmpserver)) | |||
@ -0,0 +1,30 @@ | |||
#!/bin/sh /etc/rc.common | |||
# Copyright (C) 2009-2010 OpenWrt.org | |||
START=99 | |||
STOP=80 | |||
SERVICE_USE_PID=1 | |||
CRTMPSERVER_BIN="/usr/bin/crtmpserver" | |||
CRTMPSERVER_CONFIG="/etc/crtmpserver.lua" | |||
CRTMPSERVER_PID="/var/run/crtmpserver.pid" | |||
start() | |||
{ | |||
echo "start $CRTMPSERVER_BIN" | |||
start-stop-daemon -S -x "$CRTMPSERVER_BIN" -- --daemon --pid="$CRTMPSERVER_PID" \ | |||
"$CRTMPSERVER_CONFIG" | |||
} | |||
stop() { | |||
echo "stop $CRTMPSERVER_BIN" | |||
start-stop-daemon -K -x $CRTMPSERVER_BIN -p $CRTMPSERVER_PID | |||
} | |||
reload() | |||
{ | |||
stop | |||
start | |||
} | |||
@ -0,0 +1,11 @@ | |||
--- a/builders/make/compile.mk | |||
+++ b/builders/make/compile.mk | |||
@@ -67,7 +67,7 @@ TINYXML_OBJS = $(TINYXML_SRCS:.cpp=.tiny | |||
#common | |||
COMMON_INCLUDE=$(LUA_INCLUDE) $(TINYXML_INCLUDE) $(SSL_INCLUDE) -I$(PROJECT_BASE_PATH)/sources/common/include | |||
-COMMON_LIBS=$(SSL_LIB) -L$(OUTPUT_DYNAMIC) -llua -ltinyxml | |||
+COMMON_LIBS=$(SSL_LIB) -L$(OUTPUT_DYNAMIC) -llua -ltinyxml -lcrypt | |||
COMMON_SRCS = $(shell find $(PROJECT_BASE_PATH)/sources/common/src -type f -name "*.cpp") | |||
COMMON_OBJS = $(COMMON_SRCS:.cpp=.common.o) | |||
@ -0,0 +1,13 @@ | |||
--- a/builders/make/linux.mk | |||
+++ b/builders/make/linux.mk | |||
@@ -31,8 +31,8 @@ OPTIMIZATIONS = -O3 | |||
COMPILE_FLAGS = $(FPIC) $(OPTIMIZATIONS) $(CFLAGS) | |||
#linking flags | |||
-dynamic_lib_flags = $(FPIC) $(OPTIMIZATIONS) -Wl,-soname,$(DYNAMIC_LIB_PREFIX)$(1)$(DYNAMIC_LIB_SUFIX) -Wl,-rpath,"\$$ORIGIN" | |||
-dynamic_exec_flags = $(FPIC) $(OPTIMIZATIONS) -Wl,-rpath,"\$$ORIGIN" | |||
+dynamic_lib_flags = $(FPIC) $(OPTIMIZATIONS) -Wl,-soname,$(DYNAMIC_LIB_PREFIX)$(1)$(DYNAMIC_LIB_SUFIX) -Wl,-rpath,/usr/lib/crtmpserver | |||
+dynamic_exec_flags = $(FPIC) $(OPTIMIZATIONS) -Wl,-rpath,/usr/lib/crtmpserver | |||
#compile switches | |||
PLATFORM_DEFINES = \ |
@ -0,0 +1,60 @@ | |||
--- a/builders/cmake/crtmpserver/crtmpserver.lua | |||
+++ b/builders/cmake/crtmpserver/crtmpserver.lua | |||
@@ -4,7 +4,7 @@ configuration= | |||
{ | |||
-- if true, the server will run as a daemon. | |||
-- NOTE: all console appenders will be ignored if this is a daemon | |||
- daemon=false, | |||
+ daemon=true, | |||
-- the OS's path separator. Used in composing paths | |||
pathSeparator="/", | |||
@@ -44,7 +44,7 @@ configuration= | |||
{ | |||
-- this is the root directory of all applications | |||
-- usually this is relative to the binary execuable | |||
- rootDirectory="applications", | |||
+ rootDirectory="/usr/lib/crtmpserver", | |||
--this is where the applications array starts | |||
@@ -68,7 +68,7 @@ configuration= | |||
-- this is the folder from where the current application gets it's content. | |||
-- It is optional. If not specified, it will be defaulted to: | |||
-- <rootDirectory>/<name>/mediaFolder | |||
- -- mediaFolder="/some/directory/where/media/files/are/stored" | |||
+ mediaFolder="/usr/share/crtmpserver/appselector", | |||
-- the application will also be known by that names. It is optional | |||
--aliases= | |||
--{ | |||
@@ -89,13 +89,6 @@ configuration= | |||
}, | |||
{ | |||
ip="0.0.0.0", | |||
- port=8081, | |||
- protocol="inboundRtmps", | |||
- sslKey="server.key", | |||
- sslCert="server.crt" | |||
- }, | |||
- { | |||
- ip="0.0.0.0", | |||
port=8080, | |||
protocol="inboundRtmpt" | |||
}, | |||
@@ -105,7 +98,7 @@ configuration= | |||
description="FLV Playback Sample", | |||
name="flvplayback", | |||
protocol="dynamiclinklibrary", | |||
- mediaFolder="/Volumes/android/backup/media/", | |||
+ mediaFolder="/media/", | |||
aliases= | |||
{ | |||
"simpleLive", | |||
@@ -183,6 +176,7 @@ configuration= | |||
name="samplefactory", | |||
description="asdsadasdsa", | |||
protocol="dynamiclinklibrary", | |||
+ mediaFolder="/usr/share/ctmpserver/media", | |||
aliases= | |||
{ | |||
"httpOutboundTest" |
@ -0,0 +1,13 @@ | |||
Index: crtmpserver-r726/builders/make/linux.mk | |||
=================================================================== | |||
--- crtmpserver-r726.orig/builders/make/linux.mk | |||
+++ crtmpserver-r726/builders/make/linux.mk | |||
@@ -38,7 +38,7 @@ dynamic_exec_flags = $(FPIC) $(OPTIMIZAT | |||
PLATFORM_DEFINES = \ | |||
-DLINUX \ | |||
-DLITTLE_ENDIAN_BYTE_ALIGNED \ | |||
- -DNET_EPOLL | |||
+ -DNET_SELECT | |||
SSL_BASE=/usr/local | |||
@ -0,0 +1,57 @@ | |||
--- a/builders/make/compile.mk | |||
+++ b/builders/make/compile.mk | |||
@@ -43,17 +43,22 @@ FEATURES_DEFINES = \ | |||
-DHAS_PROTOCOL_RTP \ | |||
-DHAS_PROTOCOL_TS \ | |||
-DHAS_PROTOCOL_VAR \ | |||
+ -DHAS_PROTOCOL_CLI \ | |||
+ -DHAS_PROTOCOL_HLS \ | |||
+ -DHAS_PROTOCOL_RAWHTTPSTREAM \ | |||
-DHAS_LUA \ | |||
-DHAS_MEDIA_MP3 \ | |||
-DHAS_MEDIA_MP4 \ | |||
- -DHAS_MEDIA_FLV | |||
+ -DHAS_MEDIA_FLV \ | |||
+ -DHAS_SYSLOG | |||
+ | |||
DEFINES = $(PLATFORM_DEFINES) $(FEATURES_DEFINES) | |||
#library paths | |||
SSL_INCLUDE=-I$(SSL_BASE)/include | |||
-SSL_LIB=-L$(SSL_BASE)/lib -lssl -lcrypto | |||
+SSL_LIB=-L$(SSL_BASE)/lib -lssl -lcrypto -ldl | |||
#lua | |||
LUA_INCLUDE=-I$(PROJECT_BASE_PATH)/3rdparty/lua-dev | |||
@@ -67,25 +72,25 @@ TINYXML_OBJS = $(TINYXML_SRCS:.cpp=.tiny | |||
#common | |||
COMMON_INCLUDE=$(LUA_INCLUDE) $(TINYXML_INCLUDE) $(SSL_INCLUDE) -I$(PROJECT_BASE_PATH)/sources/common/include | |||
-COMMON_LIBS=$(SSL_LIB) -L$(OUTPUT_DYNAMIC) -llua -ltinyxml -lcrypt | |||
+COMMON_LIBS=$(SSL_LIB) -L$(OUTPUT_DYNAMIC) $(PROJECT_BASE_PATH)/builders/make/output/dynamic/liblua.so -ltinyxml -lcrypt -ldl | |||
COMMON_SRCS = $(shell find $(PROJECT_BASE_PATH)/sources/common/src -type f -name "*.cpp") | |||
COMMON_OBJS = $(COMMON_SRCS:.cpp=.common.o) | |||
#thelib | |||
THELIB_INCLUDE=$(COMMON_INCLUDE) -I$(PROJECT_BASE_PATH)/sources/thelib/include | |||
-THELIB_LIBS=$(COMMON_LIBS) -L$(OUTPUT_DYNAMIC) -lcommon | |||
+THELIB_LIBS=$(COMMON_LIBS) -L$(OUTPUT_DYNAMIC) -lcommon -ldl | |||
THELIB_SRCS = $(shell find $(PROJECT_BASE_PATH)/sources/thelib/src -type f -name "*.cpp") | |||
THELIB_OBJS = $(THELIB_SRCS:.cpp=.thelib.o) | |||
#tests | |||
TESTS_INCLUDE=$(THELIB_INCLUDE) -I$(PROJECT_BASE_PATH)/sources/tests/include | |||
-TESTS_LIBS=$(THELIB_LIBS) -L$(OUTPUT_DYNAMIC) -lthelib | |||
+TESTS_LIBS=$(THELIB_LIBS) -L$(OUTPUT_DYNAMIC) -lthelib -ldl | |||
TESTS_SRCS=$(shell find $(PROJECT_BASE_PATH)/sources/tests/src -type f -name "*.cpp") | |||
TESTS_OBJS=$(TESTS_SRCS:.cpp=.tests.o) | |||
#crtmpserver | |||
CRTMPSERVER_INCLUDE=$(THELIB_INCLUDE) -I$(PROJECT_BASE_PATH)/sources/crtmpserver/include | |||
-CRTMPSERVER_LIBS=$(THELIB_LIBS) -L$(OUTPUT_DYNAMIC) -lthelib | |||
+CRTMPSERVER_LIBS=$(THELIB_LIBS) -L$(OUTPUT_DYNAMIC) -lthelib -ldl | |||
CRTMPSERVER_SRCS=$(shell find $(PROJECT_BASE_PATH)/sources/crtmpserver/src -type f -name "*.cpp") | |||
CRTMPSERVER_OBJS_DYNAMIC=$(CRTMPSERVER_SRCS:.cpp=.crtmpserver_dynamic.o) | |||
CRTMPSERVER_OBJS_STATIC=$(CRTMPSERVER_SRCS:.cpp=.crtmpserver_static.o) |
@ -0,0 +1,26 @@ | |||
--- a/sources/common/include/common.h | |||
+++ b/sources/common/include/common.h | |||
@@ -20,6 +20,10 @@ | |||
#ifndef _COMMON_H | |||
#define _COMMON_H | |||
+#include <stdio.h> | |||
+#include <unistd.h> | |||
+#include <sys/types.h> | |||
+ | |||
#include "defines.h" | |||
#include "platform/platform.h" | |||
#include "utils/utils.h" | |||
--- a/sources/common/src/utils/logging/fileloglocation.cpp | |||
+++ b/sources/common/src/utils/logging/fileloglocation.cpp | |||
@@ -18,6 +18,10 @@ | |||
*/ | |||
+#include <stdio.h> | |||
+#include <unistd.h> | |||
+#include <sys/types.h> | |||
+ | |||
#include "utils/logging/fileloglocation.h" | |||
#include "utils/lua/luautils.h" | |||
@ -0,0 +1,10 @@ | |||
--- a/3rdparty/tinyxml/tinyxml.h | |||
+++ b/3rdparty/tinyxml/tinyxml.h | |||
@@ -39,6 +39,7 @@ distribution. | |||
#include <string> | |||
#include <iostream> | |||
#include <sstream> | |||
+#include "lstate.h" | |||
// Help out windows: | |||
#if defined( _DEBUG ) && !defined( DEBUG ) |