Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2013-12-15 17:09:25 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
270041b225971bfd22572a72a4642da6db8d76eb
270041b2
1 parent
c7ec6f51
fix the forwarder reconnect bug, feed it the sequence header.
显示空白字符变更
内嵌
并排对比
正在显示
7 个修改的文件
包含
44 行增加
和
8 行删除
README.md
trunk/auto/build_ffmpeg.sh
trunk/conf/srs.conf
trunk/src/core/srs_core_forward.cpp
trunk/src/core/srs_core_forward.hpp
trunk/src/core/srs_core_source.cpp
trunk/src/core/srs_core_source.hpp
README.md
查看文件 @
270041b
...
...
@@ -212,6 +212,7 @@ usr sys idl wai hiq siq| read writ| recv send| in out | int csw
*
nginx v1.5.0: 139524 lines
<br/>
### History
*
v0.9, 2013-12-15, fix the forwarder reconnect bug, feed it the sequence header.
*
v0.9, 2013-12-15, support reload the hls/forwarder/transcoder.
*
v0.9, 2013-12-14, refine the thread model for the retry threads.
*
v0.9, 2013-12-10, auto install depends tools/libs on centos/ubuntu.
...
...
trunk/auto/build_ffmpeg.sh
100644 → 100755
查看文件 @
270041b
...
...
@@ -59,7 +59,9 @@ else
echo
"build x264"
cd
$ff_current_dir
&&
rm -rf x264-snapshot-20131129-2245-stable
&&
unzip -q
${
ff_src_dir
}
/x264-snapshot-20131129-2245-stable.zip
&&
cd
x264-snapshot-20131129-2245-stable
&&
./configure --prefix
=
${
ff_release_dir
}
--disable-opencl --bit-depth
=
8 --enable-static
&&
make
&&
make install
cd
x264-snapshot-20131129-2245-stable
&&
./configure --prefix
=
${
ff_release_dir
}
--disable-opencl --bit-depth
=
8 --enable-static
&&
make
&&
make install
ret
=
$?
;
if
[[
0 -ne
${
ret
}
]]
;
then
echo
"build x264 failed"
;
exit
1;
fi
fi
...
...
trunk/conf/srs.conf
查看文件 @
270041b
...
...
@@ -92,7 +92,7 @@ vhost __defaultVhost__ {
vhost
dev
{
enabled
on
;
gop_cache
on
;
#
forward 127.0.0.1:19350;
forward
127
.
0
.
0
.
1
:
19350
;
hls
{
enabled
off
;
hls_path
./
objs
/
nginx
/
html
;
...
...
trunk/src/core/srs_core_forward.cpp
查看文件 @
270041b
...
...
@@ -35,14 +35,17 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_core_pithy_print.hpp>
#include <srs_core_rtmp.hpp>
#include <srs_core_config.hpp>
#include <srs_core_source.hpp>
#define SRS_PULSE_TIMEOUT_MS 100
#define SRS_FORWARDER_SLEEP_MS 2000
#define SRS_SEND_TIMEOUT_US 3000000L
#define SRS_RECV_TIMEOUT_US SRS_SEND_TIMEOUT_US
SrsForwarder
::
SrsForwarder
()
SrsForwarder
::
SrsForwarder
(
SrsSource
*
_source
)
{
source
=
_source
;
client
=
NULL
;
stfd
=
NULL
;
stream_id
=
0
;
...
...
@@ -182,14 +185,17 @@ int SrsForwarder::cycle()
return
ret
;
}
// TODO: FIXME: need to cache the metadata and sequence header when reconnect.
if
((
ret
=
client
->
publish
(
stream_name
,
stream_id
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"connect with server failed, stream_name=%s, stream_id=%d. ret=%d"
,
stream_name
.
c_str
(),
stream_id
,
ret
);
return
ret
;
}
if
((
ret
=
source
->
on_forwarder_start
(
this
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"callback the source to feed the sequence header failed. ret=%d"
,
ret
);
return
ret
;
}
if
((
ret
=
forward
())
!=
ERROR_SUCCESS
)
{
return
ret
;
}
...
...
trunk/src/core/srs_core_forward.hpp
查看文件 @
270041b
...
...
@@ -38,6 +38,7 @@ class SrsSharedPtrMessage;
class
SrsOnMetaDataPacket
;
class
SrsRtmpClient
;
class
SrsRequest
;
class
SrsSource
;
/**
* forward the stream to other servers.
...
...
@@ -55,10 +56,11 @@ private:
st_netfd_t
stfd
;
SrsThread
*
pthread
;
private
:
SrsSource
*
source
;
SrsRtmpClient
*
client
;
std
::
vector
<
SrsSharedPtrMessage
*>
msgs
;
public
:
SrsForwarder
();
SrsForwarder
(
SrsSource
*
_source
);
virtual
~
SrsForwarder
();
public
:
virtual
int
on_publish
(
SrsRequest
*
req
,
std
::
string
forward_server
);
...
...
trunk/src/core/srs_core_source.cpp
查看文件 @
270041b
...
...
@@ -450,7 +450,7 @@ int SrsSource::on_reload_forward(string vhost)
srs_error
(
"create forwarders failed. ret=%d"
,
ret
);
return
ret
;
}
// TODO: FIXME: must feed it the sequence header.
srs_trace
(
"vhost %s forwarders reload success"
,
vhost
.
c_str
());
return
ret
;
...
...
@@ -498,6 +498,28 @@ int SrsSource::on_reload_transcode(string vhost)
return
ret
;
}
int
SrsSource
::
on_forwarder_start
(
SrsForwarder
*
forwarder
)
{
int
ret
=
ERROR_SUCCESS
;
// feed the forwarder the metadata/sequence header,
// when reload to enable the forwarder.
if
(
cache_metadata
&&
(
ret
=
forwarder
->
on_meta_data
(
cache_metadata
->
copy
()))
!=
ERROR_SUCCESS
)
{
srs_error
(
"forwarder process onMetaData message failed. ret=%d"
,
ret
);
return
ret
;
}
if
(
cache_sh_video
&&
(
ret
=
forwarder
->
on_video
(
cache_sh_video
->
copy
()))
!=
ERROR_SUCCESS
)
{
srs_error
(
"forwarder process video sequence header message failed. ret=%d"
,
ret
);
return
ret
;
}
if
(
cache_sh_audio
&&
(
ret
=
forwarder
->
on_audio
(
cache_sh_audio
->
copy
()))
!=
ERROR_SUCCESS
)
{
srs_error
(
"forwarder process audio sequence header message failed. ret=%d"
,
ret
);
return
ret
;
}
return
ret
;
}
bool
SrsSource
::
can_publish
()
{
return
_can_publish
;
...
...
@@ -837,7 +859,7 @@ int SrsSource::create_forwarders()
for
(
int
i
=
0
;
conf
&&
i
<
(
int
)
conf
->
args
.
size
();
i
++
)
{
std
::
string
forward_server
=
conf
->
args
.
at
(
i
);
SrsForwarder
*
forwarder
=
new
SrsForwarder
();
SrsForwarder
*
forwarder
=
new
SrsForwarder
(
this
);
forwarders
.
push_back
(
forwarder
);
if
((
ret
=
forwarder
->
on_publish
(
req
,
forward_server
))
!=
ERROR_SUCCESS
)
{
...
...
trunk/src/core/srs_core_source.hpp
查看文件 @
270041b
...
...
@@ -221,6 +221,9 @@ public:
virtual
int
on_reload_forward
(
std
::
string
vhost
);
virtual
int
on_reload_hls
(
std
::
string
vhost
);
virtual
int
on_reload_transcode
(
std
::
string
vhost
);
// for the SrsForwarder to callback to request the sequence headers.
public:
virtual
int
on_forwarder_start
(
SrsForwarder
*
forwarder
);
public
:
virtual
bool
can_publish
();
virtual
int
on_meta_data
(
SrsCommonMessage
*
msg
,
SrsOnMetaDataPacket
*
metadata
);
...
...
请
注册
或
登录
后发表评论