From 8fc88341d3110ab914283d10b8a9495950c4c837 Mon Sep 17 00:00:00 2001 From: jow Date: Wed, 23 Feb 2011 23:06:08 +0000 Subject: [PATCH] [packages] add crtmpserver - a high performance C++ RTMP streaming server git-svn-id: svn://svn.openwrt.org/openwrt/packages@25679 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- multimedia/crtmpserver/Makefile | 79 ++++++++++++++++++++++ .../patches/010-link-crypt-for-lua.patch | 11 +++ multimedia/crtmpserver/patches/020-add-rpath.patch | 15 ++++ .../crtmpserver/patches/030-default-config.patch | 37 ++++++++++ .../crtmpserver/patches/040-use-select.patch | 11 +++ 5 files changed, 153 insertions(+) create mode 100644 multimedia/crtmpserver/Makefile create mode 100644 multimedia/crtmpserver/patches/010-link-crypt-for-lua.patch create mode 100644 multimedia/crtmpserver/patches/020-add-rpath.patch create mode 100644 multimedia/crtmpserver/patches/030-default-config.patch create mode 100644 multimedia/crtmpserver/patches/040-use-select.patch diff --git a/multimedia/crtmpserver/Makefile b/multimedia/crtmpserver/Makefile new file mode 100644 index 000000000..dd85a9497 --- /dev/null +++ b/multimedia/crtmpserver/Makefile @@ -0,0 +1,79 @@ +# +# 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:=346 +PKG_VERSION:=r$(PKG_REV) +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=--username=anonymous --password= https://svn.rtmpd.com/crtmpserver/trunk +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 + 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 Build/Configure + (cd $(PKG_BUILD_DIR)/builders/make; \ + cp linux.mk linux-openwrt-uclibc.mk; \ + $(SED) 's,^TOOLCHAIN_BASE[[:space:]]*=.*,TOOLCHAIN_BASE=$(TOOLCHAIN_DIR)/bin/,' \ + -e 's,^TOOLCHAIN_PREFIX[[:space:]]*=.*,TOOLCHAIN_PREFIX=$(TARGET_CROSS),' \ + -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 +endef + +define Package/crtmpserver/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/rtmpserver $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/lib/rtmpserver + $(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/*.so $(1)/usr/lib/rtmpserver/ + $(foreach app,flvplayback samplefactory admin stresstest appselector vptests applestreamingclient proxypublish, \ + $(INSTALL_DIR) $(1)/usr/lib/rtmpserver/$(app); \ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/applications/$(app)/lib$(app).so \ + $(1)/usr/lib/rtmpserver/$(app)/; \ + ) + $(INSTALL_DIR) $(1)/etc + $(INSTALL_DATA) $(PKG_BUILD_DIR)/builders/make/output/dynamic/rtmpserver.lua $(1)/etc/ + $(INSTALL_DIR) $(1)/usr/share/rtmpserver/appselector + $(INSTALL_DIR) $(1)/usr/share/rtmpserver/media +endef + +$(eval $(call BuildPackage,crtmpserver)) + diff --git a/multimedia/crtmpserver/patches/010-link-crypt-for-lua.patch b/multimedia/crtmpserver/patches/010-link-crypt-for-lua.patch new file mode 100644 index 000000000..6c6622cde --- /dev/null +++ b/multimedia/crtmpserver/patches/010-link-crypt-for-lua.patch @@ -0,0 +1,11 @@ +--- a/builders/make/compile.mk ++++ b/builders/make/compile.mk +@@ -65,7 +65,7 @@ LUA_OBJS = $(LUA_SRCS:.c=.lua.o) + + #common + COMMON_INCLUDE=$(LUA_INCLUDE) $(SSL_INCLUDE) -I$(PROJECT_BASE_PATH)/sources/common/include +-COMMON_LIBS=$(SSL_LIB) -L$(OUTPUT_DYNAMIC) -llua ++COMMON_LIBS=$(SSL_LIB) -L$(OUTPUT_DYNAMIC) -llua -lcrypt + COMMON_SRCS = $(shell find $(PROJECT_BASE_PATH)/sources/common/src -type f -name "*.cpp") + COMMON_OBJS = $(COMMON_SRCS:.cpp=.common.o) + diff --git a/multimedia/crtmpserver/patches/020-add-rpath.patch b/multimedia/crtmpserver/patches/020-add-rpath.patch new file mode 100644 index 000000000..7b6d5f435 --- /dev/null +++ b/multimedia/crtmpserver/patches/020-add-rpath.patch @@ -0,0 +1,15 @@ +Index: crtmpserver-r219/builders/make/linux.mk +=================================================================== +--- crtmpserver-r219.orig/builders/make/linux.mk ++++ crtmpserver-r219/builders/make/linux.mk +@@ -29,8 +29,8 @@ OPTIMIZATIONS = -O3 + COMPILE_FLAGS = $(FPIC) $(OPTIMIZATIONS) + + #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/rtmpserver ++dynamic_exec_flags = $(FPIC) $(OPTIMIZATIONS) -Wl,-rpath,/usr/lib/rtmpserver + + #compile switches + PLATFORM_DEFINES = \ diff --git a/multimedia/crtmpserver/patches/030-default-config.patch b/multimedia/crtmpserver/patches/030-default-config.patch new file mode 100644 index 000000000..f0fdc1a74 --- /dev/null +++ b/multimedia/crtmpserver/patches/030-default-config.patch @@ -0,0 +1,37 @@ +--- a/builders/cmake/rtmpserver/rtmpserver.lua ++++ b/builders/cmake/rtmpserver/rtmpserver.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="/", + -- this is the async DNS resolver. This is a "clinet" connection +@@ -58,7 +58,7 @@ configuration= + { + -- this is the root directory of all applications + -- usually this is relative to the binary execuable +- rootDirectory="applications", ++ rootDirectory="/usr/lib/rtmpserver", + + + --this is where the applications array starts +@@ -82,7 +82,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: + -- //mediaFolder +- -- mediaFolder="/some/directory/where/media/files/are/stored" ++ mediaFolder="/usr/share/rtmpserver/appselector", + -- the application will also be known by that names. It is optional + --aliases= + --{ +@@ -119,6 +119,7 @@ configuration= + description="FLV Playback Sample", + name="flvplayback", + protocol="dynamiclinklibrary", ++ mediaFolder="/usr/share/rtmpserver/media", + aliases= + { + "simpleLive", diff --git a/multimedia/crtmpserver/patches/040-use-select.patch b/multimedia/crtmpserver/patches/040-use-select.patch new file mode 100644 index 000000000..42b3a283e --- /dev/null +++ b/multimedia/crtmpserver/patches/040-use-select.patch @@ -0,0 +1,11 @@ +--- a/builders/make/linux.mk ++++ b/builders/make/linux.mk +@@ -36,7 +36,7 @@ dynamic_exec_flags = $(FPIC) $(OPTIMIZAT + PLATFORM_DEFINES = \ + -DLINUX \ + -DLITTLE_ENDIAN_BYTE_ALIGNED \ +- -DNET_EPOLL ++ -DNET_SELECT + + SSL_BASE=/usr/local + -- 2.11.0