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
2016-03-19 19:11:31 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
b2bd63e8333a5cdc85823baa98902293c4ce9d25
b2bd63e8
1 parent
46a31f48
refine srs player to play hls.
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
65 行增加
和
13 行删除
trunk/research/golang/fwriter.go
trunk/research/players/srs_player.html
trunk/research/players/srs_player/src/Consts.as
trunk/research/players/srs_player/src/Hls.as
trunk/research/players/srs_player/src/M3u8Player.as
trunk/research/golang/fwriter.go
0 → 100644
查看文件 @
b2bd63e
package
main
import
(
"fmt"
"os"
"io"
"net/http"
)
func
main
()
{
fmt
.
Println
(
"FileWriter web server, post to /api/v1/flv to temp.flv"
)
http
.
HandleFunc
(
"/api/v1/flv"
,
func
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
){
defer
r
.
Body
.
Close
()
var
f
*
os
.
File
var
err
error
if
f
,
err
=
os
.
OpenFile
(
"temp.flv"
,
os
.
O_RDWR
|
os
.
O_APPEND
|
os
.
O_CREATE
,
os
.
ModePerm
);
err
!=
nil
{
return
}
var
written
int64
written
,
err
=
io
.
Copy
(
f
,
r
.
Body
)
fmt
.
Println
(
fmt
.
Sprintf
(
"write to file temp.flv, %v bytes"
,
written
))
if
err
!=
nil
{
return
}
})
_
=
http
.
ListenAndServe
(
fmt
.
Sprintf
(
":8088"
),
nil
)
}
\ No newline at end of file
...
...
trunk/research/players/srs_player.html
查看文件 @
b2bd63e
...
...
@@ -564,7 +564,7 @@
$
(
"#main_modal"
).
on
(
"hide"
,
function
(){
if
(
srs_player
)
{
// report the log to backend.
console
.
log
(
srs_player
.
dump_log
());
//
console.log(srs_player.dump_log());
srs_player
.
stop
();
srs_player
=
null
;
...
...
trunk/research/players/srs_player/src/Consts.as
0 → 100644
查看文件 @
b2bd63e
package
{
public
class
Consts
{
// refresh every ts_fragment_seconds*M3u8RefreshRatio
public
static
var
M3u8RefreshRatio
:
Number
=
0
.
5
;
// parse ts every this ms.
public
static
var
TsParseAsyncInterval
:
Number
=
80
;
}
}
\ No newline at end of file
...
...
trunk/research/players/srs_player/src/Hls.as
查看文件 @
b2bd63e
...
...
@@ -155,7 +155,7 @@ package
nb_parsed
+=
each_parse
;
if
(
nb_parsed
<
ts_packets
)
{
flash
.
utils
.
setTimeout
(
aysncParse
,
80
)
;
flash
.
utils
.
setTimeout
(
aysncParse
,
Consts
.
TsParseAsyncInterval
)
;
return
;
}
...
...
trunk/research/players/srs_player/src/M3u8Player.as
查看文件 @
b2bd63e
...
...
@@ -16,7 +16,10 @@ package
import
flash
.
net
.
NetConnection
;
import
flash
.
net
.
NetStream
;
import
flash
.
net
.
NetStreamAppendBytesAction
;
import
flash
.
net
.
URLLoader
;
import
flash
.
net
.
URLLoaderDataFormat
;
import
flash
.
net
.
URLRequest
;
import
flash
.
net
.
URLRequestMethod
;
import
flash
.
net
.
URLStream
;
import
flash
.
net
.
URLVariables
;
import
flash
.
system
.
Security
;
...
...
@@ -46,12 +49,8 @@ package
private
var
hls
:
Hls
=
null
;
// parse m3u8 and ts
// callback for hls.
private
var
shok
:
Boolean
=
false
;
public
var
flvHeader
:
ByteArray
=
null
;
public
function
onSequenceHeader
()
:
void
{
if
(
shok
)
{
return
;
}
if
(
!
media_stream
)
{
setTimeout
(
onSequenceHeader
,
1000
)
;
return
;
...
...
@@ -61,16 +60,30 @@ package
s
.
appendBytesAction
(
NetStreamAppendBytesAction
.
RESET_BEGIN
)
;
s
.
appendBytes
(
flvHeader
)
;
log
(
"FLV: sps/pps "
+
flvHeader
.
length
+
" bytes"
)
;
shok
=
true
;
writeFlv
(
flvHeader
)
;
}
public
function
onFlvBody
(
flv
:
ByteArray
)
:
void
{
public
function
onFlvBody
(
uri
:
String
,
flv
:
ByteArray
)
:
void
{
if
(
!
media_stream
)
{
return
;
}
var
s
:
NetStream
=
media_stream
;
s
.
appendBytes
(
flv
)
;
log
(
"FLV: AV "
+
flv
.
length
+
" bytes"
)
;
log
(
"FLV: ts "
+
uri
+
" parsed to flv "
+
flv
.
length
+
" bytes"
)
;
writeFlv
(
flv
)
;
}
private
function
writeFlv
(
data
:
ByteArray
)
:
void
{
return
;
var
r
:
URLRequest
=
new
URLRequest
(
"http://192.168.1.117:8088/api/v1/flv"
)
;
r
.
method
=
URLRequestMethod
.
POST
;
r
.
data
=
data
;
var
pf
:
URLLoader
=
new
URLLoader
()
;
pf
.
dataFormat
=
URLLoaderDataFormat
.
BINARY
;
pf
.
load
(
r
)
;
}
public
function
M3u8Player
(
o
:
srs_player
)
{
...
...
@@ -178,7 +191,7 @@ package
if
(
parsed_ts_seq_no
>=
hls
.
seq_no
+
hls
.
tsCount
)
{
var
to
:
Number
=
1000
;
if
(
hls
.
tsCount
>
0
)
{
to
=
hls
.
duration
*
1000
/
hls
.
tsCount
*
0
.
5
;
to
=
hls
.
duration
*
1000
/
hls
.
tsCount
*
Consts
.
M3u8RefreshRatio
;
}
setTimeout
(
refresh_m3u8
,
to
)
;
log
(
"m3u8 not changed, retry after "
+
to
.
toFixed
(
2
)
+
"ms"
)
;
...
...
@@ -208,8 +221,6 @@ package
download
(
uri
,
function
(
stream
:
ByteArray
)
:
void
{
log
(
"got ts seqno="
+
parsed_ts_seq_no
+
", "
+
stream
.
length
+
" bytes"
)
;
// reset and start to parse this ts.
hls
.
reset
()
;
var
flv
:
FlvPiece
=
new
FlvPiece
(
parsed_ts_seq_no
)
;
var
body
:
ByteArray
=
new
ByteArray
()
;
...
...
@@ -217,7 +228,7 @@ package
hls
.
parseBodyAsync
(
flv
,
stream
,
body
,
function
()
:
void
{
body
.
position
=
0
;
//log("ts parsed, seqno=" + parsed_ts_seq_no + ", flv=" + body.length + "B");
onFlvBody
(
body
)
;
onFlvBody
(
uri
,
body
)
;
parsed_ts_seq_no
++;
setTimeout
(
refresh_ts
,
0
)
;
...
...
请
注册
或
登录
后发表评论