1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

srs-librtmp define interfaces

This commit is contained in:
winlin 2014-03-02 00:05:59 +08:00
parent 44375b9e6b
commit fc9e3fd890
13 changed files with 153 additions and 25 deletions

28
trunk/configure vendored
View file

@ -42,19 +42,21 @@ echo "" >> $SRS_AUTO_HEADERS_H
echo "generate Makefile" echo "generate Makefile"
SRS_MAKEFILE="Makefile" SRS_MAKEFILE="Makefile"
cat << END > ${SRS_MAKEFILE} cat << END > ${SRS_MAKEFILE}
.PHONY: default help clean server bandwidth librtmp _prepare_dir .PHONY: default help clean server bandwidth librtmp librtmp-sample _prepare_dir
default: server bandwidth librtmp default: server bandwidth librtmp librtmp-sample
help: help:
@echo "Usage: make <help>|<clean>|<server>|<bandwidth>|<librtmp>" @echo "Usage: make <help>|<clean>|<server>|<bandwidth>|<librtmp>|<librtmp-sample>"
@echo " help display this help menu" @echo " help display this help menu"
@echo " clean cleanup project" @echo " clean cleanup project"
@echo " server build the srs(simple rtmp server) over st(state-threads)" @echo " server build the srs(simple rtmp server) over st(state-threads)"
@echo " bandwidth build the bandwidth test client tool." @echo " bandwidth build the bandwidth test client tool."
@echo " librtmp build the client publish/play library." @echo " librtmp build the client publish/play library."
@echo " librtmp-sample build the srs-librtmp sample"
clean: clean:
(rm -f Makefile; cd ${SRS_OBJS}; rm -rf srs bandwidth Makefile *.hpp src st_*_load research include lib) (rm -f Makefile; cd ${SRS_OBJS}; rm -rf srs bandwidth Makefile *.hpp src st_*_load research include lib)
(cd research/librtmp; make clean)
server: _prepare_dir server: _prepare_dir
@echo "build the srs(simple rtmp server) over st(state-threads)" @echo "build the srs(simple rtmp server) over st(state-threads)"
@ -68,6 +70,11 @@ librtmp: _prepare_dir
@echo "build the client publish/play library." @echo "build the client publish/play library."
\$(MAKE) -f ${SRS_OBJS}/${SRS_MAKEFILE} librtmp \$(MAKE) -f ${SRS_OBJS}/${SRS_MAKEFILE} librtmp
librtmp-sample:
@echo "build the srs-librtmp sample"
(cd research/librtmp; make)
@echo "srs-librtmp sample build success"
# the ./configure will generate it. # the ./configure will generate it.
_prepare_dir: _prepare_dir:
@mkdir -p ${SRS_OBJS} @mkdir -p ${SRS_OBJS}
@ -140,8 +147,7 @@ CORE_OBJS="${MODULE_OBJS[@]}"
MODULE_ID="KERNEL" MODULE_ID="KERNEL"
MODULE_DEPENDS=("CORE") MODULE_DEPENDS=("CORE")
ModuleLibIncs=(${SRS_OBJS}) ModuleLibIncs=(${SRS_OBJS})
MODULE_FILES=("srs_kernel_error" "srs_kernel_log" "srs_kernel_reload" "srs_kernel_stream" MODULE_FILES=("srs_kernel_error" "srs_kernel_log" "srs_kernel_stream" "srs_kernel_buffer")
"srs_kernel_buffer")
MODULE_DIR="src/kernel" . auto/modules.sh MODULE_DIR="src/kernel" . auto/modules.sh
KERNEL_OBJS="${MODULE_OBJS[@]}" KERNEL_OBJS="${MODULE_OBJS[@]}"
# #
@ -161,7 +167,7 @@ ModuleLibIncs=(${LibSTRoot} ${LibHttpParserRoot} ${SRS_OBJS})
MODULE_FILES=("srs_core_server" "srs_core_conn" "srs_core_client" "srs_core_socket" "srs_core_source" MODULE_FILES=("srs_core_server" "srs_core_conn" "srs_core_client" "srs_core_socket" "srs_core_source"
"srs_core_codec" "srs_core_refer" "srs_core_hls" "srs_core_forward" "srs_core_encoder" "srs_core_codec" "srs_core_refer" "srs_core_hls" "srs_core_forward" "srs_core_encoder"
"srs_core_http" "srs_core_thread" "srs_core_bandwidth" "srs_core_st" "srs_core_log" "srs_core_http" "srs_core_thread" "srs_core_bandwidth" "srs_core_st" "srs_core_log"
"srs_core_config" "srs_core_pithy_print") "srs_core_config" "srs_core_pithy_print" "srs_core_reload")
MODULE_DIR="src/app" . auto/modules.sh MODULE_DIR="src/app" . auto/modules.sh
APP_OBJS="${MODULE_OBJS[@]}" APP_OBJS="${MODULE_OBJS[@]}"
# #

View file

@ -29,9 +29,33 @@ gcc srs_play.c ../../objs/lib/srs_librtmp.a -g -O0 -lstdc++ -o srs_play
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
srs_rtmp_t rtmp;
printf("suck rtmp stream like rtmpdump\n"); printf("suck rtmp stream like rtmpdump\n");
printf("srs(simple-rtmp-server) client librtmp library.\n"); printf("srs(simple-rtmp-server) client librtmp library.\n");
printf("version: %d.%d.%d\n", srs_version_major(), srs_version_minor(), srs_version_revision()); printf("version: %d.%d.%d\n", srs_version_major(), srs_version_minor(), srs_version_revision());
rtmp = srs_rtmp_create("rtmp://127.0.0.1/live/livestream");
if (srs_simple_handshake(rtmp) != 0) {
printf("simple handshake failed.\n");
return -1;
}
printf("simple handshake success\n");
if (srs_connect_app(rtmp) != 0) {
printf("connect vhost/app failed.\n");
return -1;
}
printf("connect vhost/app success\n");
if (srs_play_stream(rtmp) != 0) {
printf("play stream failed.\n");
return -1;
}
printf("play stream success\n");
srs_rtmp_destroy(rtmp);
return 0; return 0;
} }

View file

@ -29,9 +29,33 @@ gcc srs_publish.c ../../objs/lib/srs_librtmp.a -g -O0 -lstdc++ -o srs_publish
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
srs_rtmp_t rtmp;
printf("publish rtmp stream to server like FMLE/FFMPEG/Encoder\n"); printf("publish rtmp stream to server like FMLE/FFMPEG/Encoder\n");
printf("srs(simple-rtmp-server) client librtmp library.\n"); printf("srs(simple-rtmp-server) client librtmp library.\n");
printf("version: %d.%d.%d\n", srs_version_major(), srs_version_minor(), srs_version_revision()); printf("version: %d.%d.%d\n", srs_version_major(), srs_version_minor(), srs_version_revision());
rtmp = srs_rtmp_create("rtmp://127.0.0.1/live/livestream");
if (srs_simple_handshake(rtmp) != 0) {
printf("simple handshake failed.\n");
return -1;
}
printf("simple handshake success\n");
if (srs_connect_app(rtmp) != 0) {
printf("connect vhost/app failed.\n");
return -1;
}
printf("connect vhost/app success\n");
if (srs_publish_stream(rtmp) != 0) {
printf("publish stream failed.\n");
return -1;
}
printf("publish stream success\n");
srs_rtmp_destroy(rtmp);
return 0; return 0;
} }

View file

@ -32,7 +32,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_core_st.hpp> #include <srs_core_st.hpp>
#include <srs_core_conn.hpp> #include <srs_core_conn.hpp>
#include <srs_kernel_reload.hpp> #include <srs_core_reload.hpp>
class SrsRtmp; class SrsRtmp;
class SrsRequest; class SrsRequest;

View file

@ -32,7 +32,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <vector> #include <vector>
#include <string> #include <string>
#include <srs_kernel_reload.hpp> #include <srs_core_reload.hpp>
// default vhost for rtmp // default vhost for rtmp
#define RTMP_VHOST_DEFAULT "__defaultVhost__" #define RTMP_VHOST_DEFAULT "__defaultVhost__"

View file

@ -28,7 +28,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_kernel_log.hpp> #include <srs_kernel_log.hpp>
#include <srs_core_config.hpp> #include <srs_core_config.hpp>
#include <srs_kernel_reload.hpp> #include <srs_core_reload.hpp>
#include <srs_kernel_error.hpp> #include <srs_kernel_error.hpp>
#define SRS_STAGE_DEFAULT_INTERVAL_MS 1200 #define SRS_STAGE_DEFAULT_INTERVAL_MS 1200

View file

@ -21,7 +21,7 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
#include <srs_kernel_reload.hpp> #include <srs_core_reload.hpp>
using namespace std; using namespace std;

View file

@ -25,7 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define SRS_KERNEL_RELOAD_HPP #define SRS_KERNEL_RELOAD_HPP
/* /*
#include <srs_kernel_reload.hpp> #include <srs_core_reload.hpp>
*/ */
#include <srs_core.hpp> #include <srs_core.hpp>

View file

@ -33,7 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <vector> #include <vector>
#include <srs_core_st.hpp> #include <srs_core_st.hpp>
#include <srs_kernel_reload.hpp> #include <srs_core_reload.hpp>
#include <srs_core_thread.hpp> #include <srs_core_thread.hpp>
class SrsServer; class SrsServer;

View file

@ -35,7 +35,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <string> #include <string>
#include <srs_core_st.hpp> #include <srs_core_st.hpp>
#include <srs_kernel_reload.hpp> #include <srs_core_reload.hpp>
class SrsSource; class SrsSource;
class SrsCommonMessage; class SrsCommonMessage;

View file

@ -25,6 +25,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <stdlib.h> #include <stdlib.h>
#include <string>
using namespace std;
#include <srs_kernel_error.hpp>
#include <srs_protocol_rtmp.hpp> #include <srs_protocol_rtmp.hpp>
/** /**
@ -49,6 +53,7 @@ public:
*/ */
struct Context struct Context
{ {
std::string url;
SrsRtmpClient* rtmp; SrsRtmpClient* rtmp;
SimpleSocketStream* stream; SimpleSocketStream* stream;
int stream_id; int stream_id;
@ -68,8 +73,9 @@ struct Context
extern "C"{ extern "C"{
#endif #endif
srs_rtmp_t srs_rtmp_create(){ srs_rtmp_t srs_rtmp_create(const char* url){
Context* context = new Context(); Context* context = new Context();
context->url = url;
return context; return context;
} }
@ -79,6 +85,31 @@ void srs_rtmp_destroy(srs_rtmp_t rtmp){
srs_freep(context); srs_freep(context);
} }
int srs_simple_handshake(srs_rtmp_t rtmp)
{
return ERROR_SUCCESS;
}
int srs_complex_handshake(srs_rtmp_t rtmp)
{
return ERROR_SUCCESS;
}
int srs_connect_app(srs_rtmp_t rtmp)
{
return ERROR_SUCCESS;
}
int srs_play_stream(srs_rtmp_t rtmp)
{
return ERROR_SUCCESS;
}
int srs_publish_stream(srs_rtmp_t rtmp)
{
return ERROR_SUCCESS;
}
int srs_version_major() int srs_version_major()
{ {
return ::atoi(VERSION_MAJOR); return ::atoi(VERSION_MAJOR);

View file

@ -36,15 +36,58 @@ extern "C"{
typedef void* srs_rtmp_t; typedef void* srs_rtmp_t;
/** /**
* create a rtmp protocol stack. * create/destroy a rtmp protocol stack.
* @url rtmp url, for example:
* rtmp://127.0.0.1/live/livestream
* @return a rtmp handler, or NULL if error occured. * @return a rtmp handler, or NULL if error occured.
*/ */
srs_rtmp_t srs_rtmp_create(); srs_rtmp_t srs_rtmp_create(const char* url);
void srs_rtmp_destroy(srs_rtmp_t rtmp);
/** /**
* close a rtmp protocl stack. * handshake with server
* category: publish/play
* previous: rtmp-create
* next: connect-app
* @return 0, success; otherwise, failed.
*/ */
void srs_rtmp_destroy(srs_rtmp_t rtmp); /**
* simple handshake specifies in rtmp 1.0,
* not depends on ssl.
*/
int srs_simple_handshake(srs_rtmp_t rtmp);
/**
* complex handshake is specified by adobe Flash player,
* depends on ssl, user must link libssl.a and libcrypt.a
*/
int srs_complex_handshake(srs_rtmp_t rtmp);
/**
* connect to rtmp vhost/app
* category: publish/play
* previous: handshake
* next: publish or play
* @return 0, success; otherwise, failed.
*/
int srs_connect_app(srs_rtmp_t rtmp);
/**
* play a live/vod stream.
* category: play
* previous: connect-app
* next: destroy
* @return 0, success; otherwise, failed.
*/
int srs_play_stream(srs_rtmp_t rtmp);
/**
* publish a live stream.
* category: publish
* previous: connect-app
* next: destroy
* @return 0, success; otherwise, failed.
*/
int srs_publish_stream(srs_rtmp_t rtmp);
/** /**
* get protocol stack version * get protocol stack version

View file

@ -19,8 +19,6 @@ file
..\kernel\srs_kernel_error.cpp, ..\kernel\srs_kernel_error.cpp,
..\kernel\srs_kernel_log.hpp, ..\kernel\srs_kernel_log.hpp,
..\kernel\srs_kernel_log.cpp, ..\kernel\srs_kernel_log.cpp,
..\kernel\srs_kernel_reload.hpp,
..\kernel\srs_kernel_reload.cpp,
..\kernel\srs_kernel_stream.hpp, ..\kernel\srs_kernel_stream.hpp,
..\kernel\srs_kernel_stream.cpp, ..\kernel\srs_kernel_stream.cpp,
rtmp-protocol readonly separator, rtmp-protocol readonly separator,
@ -59,6 +57,8 @@ file
..\app\srs_core_log.cpp, ..\app\srs_core_log.cpp,
..\app\srs_core_refer.hpp, ..\app\srs_core_refer.hpp,
..\app\srs_core_refer.cpp, ..\app\srs_core_refer.cpp,
..\app\srs_core_reload.hpp,
..\app\srs_core_reload.cpp,
..\app\srs_core_pithy_print.hpp, ..\app\srs_core_pithy_print.hpp,
..\app\srs_core_pithy_print.cpp, ..\app\srs_core_pithy_print.cpp,
..\app\srs_core_thread.hpp, ..\app\srs_core_thread.hpp,