Giter Site home page Giter Site logo

dorsvr's Introduction

Dorsvr Streaming Server

Build Status Go Report Card GitHub issues

Modules

  • rtspserver - rtsp server
  • rtspclient - rtsp client
  • groupsock - group socket
  • livemedia - media library

Feature

  • Streaming Video (H264, M2TS)
  • Streaming Audio (MP3)
  • Protocols: RTP, RTCP, RTSP
  • Access Control

Install

go get github.com/djwackey/dorsvr

Format

$ make fmt

Testing

$ make test

Example

import (
    "fmt"

    "github.com/djwackey/dorsvr/rtspserver"
)

func main() {
    server := rtspserver.New(nil)

    portNum := 8554
    err := server.Listen(portNum)
    if err != nil {
        fmt.Printf("Failed to bind port: %d\n", portNum)
        return
    }

    if !server.SetupTunnelingOverHTTP(80) ||
        !server.SetupTunnelingOverHTTP(8000) ||
        !server.SetupTunnelingOverHTTP(8080) {
        fmt.Printf("We use port %d for optional RTSP-over-HTTP tunneling, "+
                   "or for HTTP live streaming (for indexed Transport Stream files only).\n", server.HTTPServerPortNum())
    } else {
        fmt.Println("(RTSP-over-HTTP tunneling is not available.)")
    }

    urlPrefix := server.RtspURLPrefix()
    fmt.Println("This server's URL: " + urlPrefix + "<filename>.")

    server.Start()

    select {}
}

Author

djwackey, [email protected]

LICENSE

dorsvr is licensed under the GNU Lesser General Public License, Version 2.1. See LICENSE for the full license text.

dorsvr's People

Contributors

chidea avatar djwackey avatar functionary avatar gmp216 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dorsvr's Issues

use of closed network connection

当客户端(VLC)关闭以后,server会一直存在use of closed network connection

=====================
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:9468: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:9468: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:18547: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:9468: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:18547: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:18547: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:18547: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:18547: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:18547: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:18547: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:18547: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:9468: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:9468: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:9468: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:9468: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:9468: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:9468: use of closed network connection
2017/06/02 18:49:49 [I] default: read tcp xxx.xx.76.37:8554->xxx.xx.125.66:9468: use of closed network connection

r.Sink.SSRC undefined

github.com/djwackey/dorsvr/livemedia

/root/go/src/github.com/djwackey/dorsvr/livemedia/rtcp_linux_amd64.go:97: undefined: EVENT_REPORT
/root/go/src/github.com/djwackey/dorsvr/livemedia/rtcp_linux_amd64.go:236: r.Sink.SSRC undefined (type IMediaSink has no field or method SSRC, but does have ssrc)
/root/go/src/github.com/djwackey/dorsvr/livemedia/rtcp_linux_amd64.go:386: r.Sink.SSRC undefined (type IMediaSink has no field or method SSRC, but does have ssrc)
/root/go/src/github.com/djwackey/dorsvr/livemedia/rtcp_linux_amd64.go:391: r.Sink.SSRC undefined (type IMediaSink has no field or method SSRC, but does have ssrc)
/root/go/src/github.com/djwackey/dorsvr/livemedia/rtp_interface.go:78: i.gs.TTL undefined (type *groupsock.GroupSock has no field or method TTL)
/root/go/src/github.com/djwackey/dorsvr/livemedia/rtp_interface.go:78: too many arguments in call to i.gs.Output
have ([]byte, uint, )
want ([]byte, uint)
/root/go/src/github.com/djwackey/dorsvr/livemedia/server_media_session.go:11: undefined: MEDIA_SERVER_VERSION

Nothing to play from RTSP server

RTSP server doesn't work with VLC or GStreamer players; full detailed information follows:

Environment

$ lsb_release -d
Description:    Linux Mint 18.3 Sylvia
# (This is same as Ubuntu 16.04 Xenial)

$ vlc --version
VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80)
VLC version 2.2.2 Weatherwax (2.2.2-0-g6259d80)
Compiled by buildd on lgw01-09.buildd (Aug  8 2017 18:59:52)
Compiler: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)

$ gst-launch-1.0 --version
gst-launch-1.0 version 1.8.3
GStreamer 1.8.3

With VLC

TERMINAL 1

# In case the required tools are not installed
sudo apt-get update
sudo apt-get install ffmpeg vlc

go get github.com/djwackey/dorsvr
cd "${GOPATH}/bin"

ffmpeg -i ~/Some_Video.mp4 -c:v h264 -c:a mp3 ./H264_MP3.ts

$ ./dorsvr
We use port 80 for optional RTSP-over-HTTP tunneling, or for HTTP live streaming (for indexed Transport Stream files only).
This server's URL: rtsp://192.168.1.19:8554/<filename>.

# (Launch the player on Terminal 2 ...)

2018/11/16 19:56:56 [I] Received 130 new bytes of request data.
2018/11/16 19:56:56 [I] Received a complete OPTIONS request:
OPTIONS rtsp://192.168.1.19:8554/H264_MP3.ts RTSP/1.0
CSeq: 2
User-Agent: LibVLC/2.2.2 (LIVE555 Streaming Media v2016.02.09)


2018/11/16 19:56:56 [I] send response:
RTSP/1.0 200 OK
CSeq: 2
Date: 2018-11-16 19:56:56.813855307 +0100 CET
Public: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]


2018/11/16 19:56:56 [I] Received 156 new bytes of request data.
2018/11/16 19:56:56 [I] Received a complete DESCRIBE request:
DESCRIBE rtsp://192.168.1.19:8554/H264_MP3.ts RTSP/1.0
CSeq: 3
User-Agent: LibVLC/2.2.2 (LIVE555 Streaming Media v2016.02.09)
Accept: application/sdp


2018/11/16 19:56:56 [I] send response:
RTSP/1.0 200 OK
CSeq: 3
Date: 2018-11-16 19:56:56.814263358 +0100 CET
Content-Base: rtsp://192.168.1.19:8554/H264_MP3.ts/
Content-Type: application/sdp
Content-Length: 383

v=0
o=- 1542394616814064 1 IN IP4 192.168.1.19
s=MPEG Transport Stream, streamed by the Dor Media Server
i=H264_MP3.ts
t=0 0
a=tool:Dor Streaming Media v1.0.0.3
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:MPEG Transport Stream, streamed by the Dor Media Server
a=x-qt-text-inf:H264_MP3.ts
m=data 0 RTP/AVP 33
c=IN IP4 0.0.0.0
b=AS:500
a=control:track1

2018/11/16 19:56:56 [I] default: EOF
2018/11/16 19:56:56 [I] disconnected the connection[192.168.1.19:43266].
2018/11/16 19:56:56 [I] Received 325 new bytes of request data.
2018/11/16 19:56:56 [I] Received a complete OPTIONS request:
OPTIONS rtsp://192.168.1.19:8554 RTSP/1.0
CSeq: 1
User-Agent: RealMedia Player Version 6.0.9.1235 (linux-2.0-libc6-i386-gcc2.95)
ClientChallenge: 9e26d33f2984236010ef6253fb1887f7
PlayerStarttime: [28/03/2003:22:50:23 00:00]
CompanyID: KnKV4M4I/B2FjJ1TToLycw==
GUID: 00000000-0000-0000-0000-000000000000
RegionData: 0

2018/11/16 19:56:56 [I] send response:
RTSP/1.0 200 OK
CSeq: 1
Date: 2018-11-16 19:56:56.815203618 +0100 CET
Public: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]


2018/11/16 19:56:56 [I] Received 53 new bytes of request data.
2018/11/16 19:56:56 [I] Received a complete ClientID: request:
ClientID: Linux_2.4_6.0.9.1235_play32_RN01_EN_586


2018/11/16 19:56:56 [I] send response:
RTSP/1.0 405 Method Not Allowed
CSeq: 
Date: 2018-11-16 19:56:56.815276157 +0100 CET
Allow: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]


2018/11/16 19:56:56 [I] default: read tcp 192.168.1.19:8554->192.168.1.19:43268: read: connection reset by peer
2018/11/16 19:56:56 [I] default: EOF
2018/11/16 19:56:56 [I] disconnected the connection[192.168.1.19:43268].

TERMINAL 2

$ cvlc "rtsp://192.168.1.19:8554/H264_MP3.ts"
VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80)
[000000000126dff8] dummy interface: using the dummy interface module...
[00007fa9f8000e58] live555 demux error: Nothing to play for rtsp://192.168.1.19:8554/H264_MP3.ts
[00007fa9fc0009b8] core input error: open of `rtsp://192.168.1.19:8554/H264_MP3.ts' failed
[00007fa9fc0009b8] core input error: Your input can't be opened
[00007fa9fc0009b8] core input error: VLC is unable to open the MRL 'rtsp://192.168.1.19:8554/H264_MP3.ts'. Check the log for details.

With GStreamer

TERMINAL 1

# In case the required tools are not installed
sudo apt-get update
sudo apt-get install ffmpeg \
  gstreamer1.0-{tools,libav} \
  gstreamer1.0-plugins-{base,good,bad,ugly}

go get github.com/djwackey/dorsvr
cd "${GOPATH}/bin"

ffmpeg -i ~/Some_Video.mp4 -c:v h264 -c:a mp3 ./H264_MP3.ts

$ ./dorsvr
We use port 80 for optional RTSP-over-HTTP tunneling, or for HTTP live streaming (for indexed Transport Stream files only).
This server's URL: rtsp://192.168.1.19:8554/<filename>.

# (Launch the player on Terminal 2 ...)

2018/11/16 19:59:20 [I] Received 456 new bytes of request data.
2018/11/16 19:59:20 [I] Received a complete OPTIONS request:
OPTIONS rtsp://192.168.1.19:8554/H264_MP3.ts RTSP/1.0
CSeq: 1
User-Agent: GStreamer/1.8.3
User-Agent: RealMedia Player Version 6.0.9.1235 (linux-2.0-libc6-i386-gcc2.95)
ClientChallenge: 9e26d33f2984236010ef6253fb1887f7
CompanyID: KnKV4M4I/B2FjJ1TToLycw==
GUID: 00000000-0000-0000-0000-000000000000
RegionData: 0
PlayerStarttime: [28/03/2003:22:50:23 00:00]
ClientID: Linux_2.4_6.0.9.1235_play32_RN01_EN_586
Date: Fri, 16 Nov 2018 18:59:20 GMT


2018/11/16 19:59:20 [I] send response:
RTSP/1.0 200 OK
CSeq: 1
Date: 2018-11-16 19:59:20.256054777 +0100 CET
Public: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]


2018/11/16 19:59:20 [I] Received 158 new bytes of request data.
2018/11/16 19:59:20 [I] Received a complete DESCRIBE request:
DESCRIBE rtsp://192.168.1.19:8554/H264_MP3.ts RTSP/1.0
CSeq: 2
User-Agent: GStreamer/1.8.3
Accept: application/sdp
Date: Fri, 16 Nov 2018 18:59:20 GMT


2018/11/16 19:59:20 [I] send response:
RTSP/1.0 200 OK
CSeq: 2
Date: 2018-11-16 19:59:20.256627031 +0100 CET
Content-Base: rtsp://192.168.1.19:8554/H264_MP3.ts/
Content-Type: application/sdp
Content-Length: 383

v=0
o=- 1542394760256422 1 IN IP4 192.168.1.19
s=MPEG Transport Stream, streamed by the Dor Media Server
i=H264_MP3.ts
t=0 0
a=tool:Dor Streaming Media v1.0.0.3
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:MPEG Transport Stream, streamed by the Dor Media Server
a=x-qt-text-inf:H264_MP3.ts
m=data 0 RTP/AVP 33
c=IN IP4 0.0.0.0
b=AS:500
a=control:track1

2018/11/16 19:59:20 [I] Received 189 new bytes of request data.
2018/11/16 19:59:20 [I] Received a complete SETUP request:
SETUP rtsp://192.168.1.19:8554/H264_MP3.ts/track1 RTSP/1.0
CSeq: 3
User-Agent: GStreamer/1.8.3
Transport: RTP/AVP;unicast;client_port=33166-33167
Date: Fri, 16 Nov 2018 18:59:20 GMT


2018/11/16 19:59:20 [I] send response:
RTSP/1.0 200 OK
CSeq: 3
Date: 2018-11-16 19:59:20.25785711 +0100 CET
Transport: RTP/AVP;unicast;destination=192.168.1.19;source=192.168.1.19;client_port=33166-33167;server_port=6970-6971
Session: 6A3461B6


2018/11/16 19:59:20 [I] Received 164 new bytes of request data.
2018/11/16 19:59:20 [I] Received a complete PLAY request:
PLAY rtsp://192.168.1.19:8554/H264_MP3.ts/ RTSP/1.0
CSeq: 4
User-Agent: GStreamer/1.8.3
Range: npt=0-
Session: 6A3461B6
Date: Fri, 16 Nov 2018 18:59:20 GMT


2018/11/16 19:59:20 [I] send response:
RTSP/1.0 200 OK
CSeq: 4
Date: 2018-11-16 19:59:20.25993928 +0100 CET
Range: npt=0.000-
Session: 6A3461B6
RTP-INFO: url=rtsp://192.168.1.19:8554/H264_MP3.ts/track1;seq=7144;rtptime=471198779


2018/11/16 19:59:20 [I] sendReport
2018/11/16 19:59:21 [W] pt: 201
2018/11/16 19:59:21 [I] RTCP_PT_RR
2018/11/16 19:59:21 [W] pt: 202
2018/11/16 19:59:21 [I] validated entire RTCP packet
2018/11/16 19:59:25 [I] Received 153 new bytes of request data.
2018/11/16 19:59:25 [I] Received a complete TEARDOWN request:
TEARDOWN rtsp://192.168.1.19:8554/H264_MP3.ts/ RTSP/1.0
CSeq: 5
User-Agent: GStreamer/1.8.3
Session: 6A3461B6
Date: Fri, 16 Nov 2018 18:59:25 GMT


2018/11/16 19:59:25 [I] send response:
RTSP/1.0 200 OK
CSeq: 5
Date: 2018-11-16 19:59:25.267010016 +0100 CET


2018/11/16 19:59:25 [.../rtcp_linux_amd64.go:119 incomingReportHandler)-fm()] [E] failed to read.read udp [::]:6971: use of closed network connection
2018/11/16 19:59:25 [I] incomingReportHandler ending.
2018/11/16 19:59:25 [I] default: EOF
2018/11/16 19:59:25 [I] disconnected the connection[192.168.1.19:43276].
2018/11/16 19:59:25 [I] Received 456 new bytes of request data.
2018/11/16 19:59:25 [I] Received a complete OPTIONS request:
OPTIONS rtsp://192.168.1.19:8554/H264_MP3.ts RTSP/1.0
CSeq: 1
User-Agent: GStreamer/1.8.3
User-Agent: RealMedia Player Version 6.0.9.1235 (linux-2.0-libc6-i386-gcc2.95)
ClientChallenge: 9e26d33f2984236010ef6253fb1887f7
CompanyID: KnKV4M4I/B2FjJ1TToLycw==
GUID: 00000000-0000-0000-0000-000000000000
RegionData: 0
PlayerStarttime: [28/03/2003:22:50:23 00:00]
ClientID: Linux_2.4_6.0.9.1235_play32_RN01_EN_586
Date: Fri, 16 Nov 2018 18:59:25 GMT


2018/11/16 19:59:25 [I] send response:
RTSP/1.0 200 OK
CSeq: 1
Date: 2018-11-16 19:59:25.268685086 +0100 CET
Public: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]


2018/11/16 19:59:25 [I] Received 158 new bytes of request data.
2018/11/16 19:59:25 [I] Received a complete DESCRIBE request:
DESCRIBE rtsp://192.168.1.19:8554/H264_MP3.ts RTSP/1.0
CSeq: 2
User-Agent: GStreamer/1.8.3
Accept: application/sdp
Date: Fri, 16 Nov 2018 18:59:25 GMT


2018/11/16 19:59:25 [I] send response:
RTSP/1.0 200 OK
CSeq: 2
Date: 2018-11-16 19:59:25.272600609 +0100 CET
Content-Base: rtsp://192.168.1.19:8554/H264_MP3.ts/
Content-Type: application/sdp
Content-Length: 383

v=0
o=- 1542394765269642 1 IN IP4 192.168.1.19
s=MPEG Transport Stream, streamed by the Dor Media Server
i=H264_MP3.ts
t=0 0
a=tool:Dor Streaming Media v1.0.0.3
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:MPEG Transport Stream, streamed by the Dor Media Server
a=x-qt-text-inf:H264_MP3.ts
m=data 0 RTP/AVP 33
c=IN IP4 0.0.0.0
b=AS:500
a=control:track1

2018/11/16 19:59:25 [I] Received 185 new bytes of request data.
2018/11/16 19:59:25 [I] Received a complete SETUP request:
SETUP rtsp://192.168.1.19:8554/H264_MP3.ts/track1 RTSP/1.0
CSeq: 3
User-Agent: GStreamer/1.8.3
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
Date: Fri, 16 Nov 2018 18:59:25 GMT


Failed to listen UDP address. listen udp :6970: bind: address already in use
2018/11/16 19:59:25 [I] send response:
RTSP/1.0 200 OK
CSeq: 3
Date: 2018-11-16 19:59:25.275709929 +0100 CET
Transport: RTP/AVP/TCP;unicast;destination=192.168.1.19;source=192.168.1.19;interleaved=0-2
Session: 0C231EBC


2018/11/16 19:59:25 [I] Received 164 new bytes of request data.
2018/11/16 19:59:25 [I] Received a complete PLAY request:
PLAY rtsp://192.168.1.19:8554/H264_MP3.ts/ RTSP/1.0
CSeq: 4
User-Agent: GStreamer/1.8.3
Range: npt=0-
Session: 0C231EBC
Date: Fri, 16 Nov 2018 18:59:25 GMT


2018/11/16 19:59:25 [I] send response:
RTSP/1.0 200 OK
CSeq: 4
Date: 2018-11-16 19:59:25.276985632 +0100 CET
Range: npt=0.000-
Session: 0C231EBC
RTP-INFO: url=rtsp://192.168.1.19:8554/H264_MP3.ts/track1;seq=22048;rtptime=2443915851


2018/11/16 19:59:25 [I] sendReport
2018/11/16 19:59:26 [I] Received 60 new bytes of request data.
2018/11/16 19:59:26 [I] Received a complete $�8�É�g��ï�Ê
                                                        g���user27863378@host-4de0957� request:
$�8���g�����
            g�����user27863378@host-4de0957�	GStreamer
2018/11/16 19:59:26 [I] send response:
RTSP/1.0 405 Method Not Allowed
CSeq: 
Date: 2018-11-16 19:59:26.955664338 +0100 CET
Allow: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]


2018/11/16 19:59:48 [I] Received 17 new bytes of request data.
2018/11/16 19:59:48 [I] Received a complete 0957� request:
0957�	GStreamer
2018/11/16 19:59:48 [I] send response:
RTSP/1.0 405 Method Not Allowed
CSeq: 
Date: 2018-11-16 19:59:48.271079383 +0100 CET
Allow: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]


2018/11/16 19:59:57 [I] Received 14 new bytes of request data.
2018/11/16 19:59:57 [I] Received a complete 7� request:
7�	GStreamer
2018/11/16 19:59:57 [I] send response:
RTSP/1.0 405 Method Not Allowed
CSeq: 
Date: 2018-11-16 19:59:57.280054054 +0100 CET
Allow: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]

TERMINAL 2

export GST_DEBUG=3
$ gst-launch-1.0 playbin uri="rtsp://192.168.1.19:8554/H264_MP3.ts"
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://192.168.1.19:8554/H264_MP3.ts
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
0:00:00.021431603 27621 0x7f06c0058800 FIXME                default gstutils.c:3766:gst_pad_create_stream_id_internal:<fakesrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Progress: (request) Sent PLAY request
0:00:05.029553566 27621      0x174ad90 WARN                 rtspsrc gstrtspsrc.c:4879:gst_rtspsrc_reconnect:<source> warning: Could not receive any UDP packets for 5.0000 seconds, maybe your firewall is blocking it. Retrying using a tcp connection.
WARNING: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstRTSPSrc:source: Could not read from resource.
Additional debug info:
gstrtspsrc.c(4879): gst_rtspsrc_reconnect (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstRTSPSrc:source:
Could not receive any UDP packets for 5.0000 seconds, maybe your firewall is blocking it. Retrying using a tcp connection.

In summary, neither VLC nor GStreamer (via the GstRTSPSrc element) are able to play the RTSP stream. README doesn't show expected usage, either. Is this publishing the given <filename>?

Implement of method ANNOUNCE

I tried to push video steams to dorsvr server but the server refused the ANNOUNCE requests and returned a 405 Method Not Allowed error.

I was using a streamer(encoder) called Larix Broadcaster v1.0.31 on my Android device. It tried to push camera clips to the server, but failed due to a unknown connection failure.

On the other hand, VLC player cannot open the rtsp link.

These logs are printed

We use port 80 for optional RTSP-over-HTTP tunneling, or for HTTP live streaming (for indexed Transport Stream files only).
This server's URL: rtsp://172.17.0.1:8554/<filename>.
2017/08/23 14:33:38 [I] Received 88 new bytes of request data.
2017/08/23 14:33:38 [I] Received a complete OPTIONS request:
OPTIONS rtsp://192.168.10.187:8554/hwcam RTSP/1.0
CSeq: 1
User-Agent: Larix/1.0.31


2017/08/23 14:33:38 [I] send response:
RTSP/1.0 200 OK
CSeq: 1
Date: 2017-08-23 14:33:38.390808291 +0800 CST
Public: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]


2017/08/23 14:33:38 [I] Received 536 new bytes of request data.
2017/08/23 14:33:38 [I] Received a complete ANNOUNCE request:
ANNOUNCE rtsp://192.168.10.187:8554/hwcam RTSP/1.0
Content-Type: application/sdp
CSeq: 2
User-Agent: Larix/1.0.31
Content-Length: 395

v=0
m=video 0 RTP/AVP/TCP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LgHqtAUB7QgAAAAwCAAAAecCAAPQkAAehJaxsDxQqo,KM48gA==; profile-level-id=42e01e
a=control:streamid=0
m=audio 0 RTP/AVP/TCP 97
a=rtpmap:97 mpeg4-generic/44100/1
a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1208
a=control:streamid=1

2017/08/23 14:33:38 [I] send response:
RTSP/1.0 405 Method Not Allowed
CSeq: 2
Date: 2017-08-23 14:33:38.39978622 +0800 CST
Allow: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]


2017/08/23 14:33:38 [I] default: EOF
2017/08/23 14:33:38 [I] end connection[192.168.10.139:42475].

Has anyone ever got a similar error? How can I do with it? Many thanks.

nil map when adding user

Hi, my goal is to serve an rtsp stream from a file. I'm not sure I understand how the whole thing works but when I start the server of course it's expecting an authentication. I did this:

authDB := auth.NewAuthDatabase("")
authDB.InsertUserRecord("admin", "password")

but I get:

panic: assignment to entry in nil map

Looking at the code

records map[string]string
seems like that map doesn't get initialised in the constructor - furthermore the variable is not exported so it's impossible to initialise it.

It'd be nice to have some example code for a basic server which serves mp4 files for instance.

Thanks

Multiple network interfaces

Hi,

I have multiple network interfaces (mainly due to Docker bridge interfaces).

When I run the example to connect to my ip cam, it creates a RTP UDP socket from the wrong interface and therefore I do not receive any of the UDP packet from the camera.

Am I missing something?

Shouldn't the local side of the UDP socket be in the same host as the RTSP host at least or shouldn't we offer the possible to select a Network Interface?

Eric

can i restream from another source?

Hello guys, I was looking at the server, I haven't installed yet, I would like to use an IP camera which streams in RSTP and restream it to other options, the thing is, I want to push the RSTP directly from the source (the camera) into dorsvr, not the opposite way (dorsvr connect to the camera) because the camera is behind a VPN so, it doesn't have a public IP address.

Thanx!

make test: 有很多类型不匹配的错误

 make test
ok  	vendor/github.com/djwackey/dorsvr/groupsock	0.008s
# vendor/github.com/djwackey/dorsvr/livemedia
livemedia/ByteStreamFileSource.go:70: invalid operation: s.presentationTime.Usec + int64(s.lastPlayTime) (mismatched types int32 and int64)
livemedia/H264VideoStreamFramer.go:197: invalid operation: nextPT.Usec / 1e+06 + 1 / int64(p.UsingSource().frameRate) (mismatched types int32 and int64)
livemedia/MPEGVideoStreamFramer.go:71: invalid operation: f.FramedFilter.FramedSource.presentationTime.Usec += int64(pictureFractionOfSecond * 1e+06) (mismatched types int32 and int64)
livemedia/MultiFramedRTPSink.go:124: invalid operation: s.nextSendTime.Usec += int64(durationInMicroseconds) (mismatched types int32 and int64)
livemedia/MultiFramedRTPSink.go:125: invalid operation: s.nextSendTime.Sec += s.nextSendTime.Usec / 1000000 (mismatched types int64 and int32)
livemedia/MultiFramedRTPSink.go:190: invalid operation: secsDiff * 1000000 + (s.nextSendTime.Usec - timeNow.Usec) (mismatched types int64 and int32)
livemedia/MultiFramedRTPSource.go:332: invalid operation: packet.presentationTime.Usec += int64(frameDurationInMicroseconds) (mismatched types int32 and int64)
livemedia/MultiFramedRTPSource.go:334: invalid operation: packet.presentationTime.Sec += packet.presentationTime.Usec / 1000000 (mismatched types int64 and int32)
livemedia/MultiFramedRTPSource.go:504: invalid operation: (timeNow.Sec - timeReceived.Sec) * 1000000 + (timeNow.Usec - timeReceived.Usec) (mismatched types int64 and int32)
livemedia/RTCP.go:81: invalid operation: timeNow.Sec + timeNow.Usec / 1e+06 (mismatched types int64 and int32)
livemedia/RTCP.go:81: too many errors
FAIL	vendor/github.com/djwackey/dorsvr/livemedia [build failed]
# vendor/github.com/djwackey/dorsvr/livemedia
livemedia/ByteStreamFileSource.go:70: invalid operation: s.presentationTime.Usec + int64(s.lastPlayTime) (mismatched types int32 and int64)
livemedia/H264VideoStreamFramer.go:197: invalid operation: nextPT.Usec / 1e+06 + 1 / int64(p.UsingSource().frameRate) (mismatched types int32 and int64)
livemedia/MPEGVideoStreamFramer.go:71: invalid operation: f.FramedFilter.FramedSource.presentationTime.Usec += int64(pictureFractionOfSecond * 1e+06) (mismatched types int32 and int64)
livemedia/MultiFramedRTPSink.go:124: invalid operation: s.nextSendTime.Usec += int64(durationInMicroseconds) (mismatched types int32 and int64)
livemedia/MultiFramedRTPSink.go:125: invalid operation: s.nextSendTime.Sec += s.nextSendTime.Usec / 1000000 (mismatched types int64 and int32)
livemedia/MultiFramedRTPSink.go:190: invalid operation: secsDiff * 1000000 + (s.nextSendTime.Usec - timeNow.Usec) (mismatched types int64 and int32)
livemedia/MultiFramedRTPSource.go:332: invalid operation: packet.presentationTime.Usec += int64(frameDurationInMicroseconds) (mismatched types int32 and int64)
livemedia/MultiFramedRTPSource.go:334: invalid operation: packet.presentationTime.Sec += packet.presentationTime.Usec / 1000000 (mismatched types int64 and int32)
livemedia/MultiFramedRTPSource.go:504: invalid operation: (timeNow.Sec - timeReceived.Sec) * 1000000 + (timeNow.Usec - timeReceived.Usec) (mismatched types int64 and int32)
livemedia/RTCP.go:81: invalid operation: timeNow.Sec + timeNow.Usec / 1e+06 (mismatched types int64 and int32)
livemedia/RTCP.go:81: too many errors
# vendor/github.com/djwackey/dorsvr/livemedia
livemedia/ByteStreamFileSource.go:70: invalid operation: s.presentationTime.Usec + int64(s.lastPlayTime) (mismatched types int32 and int64)
livemedia/H264VideoStreamFramer.go:197: invalid operation: nextPT.Usec / 1e+06 + 1 / int64(p.UsingSource().frameRate) (mismatched types int32 and int64)
livemedia/MPEGVideoStreamFramer.go:71: invalid operation: f.FramedFilter.FramedSource.presentationTime.Usec += int64(pictureFractionOfSecond * 1e+06) (mismatched types int32 and int64)
livemedia/MultiFramedRTPSink.go:124: invalid operation: s.nextSendTime.Usec += int64(durationInMicroseconds) (mismatched types int32 and int64)
livemedia/MultiFramedRTPSink.go:125: invalid operation: s.nextSendTime.Sec += s.nextSendTime.Usec / 1000000 (mismatched types int64 and int32)
livemedia/MultiFramedRTPSink.go:190: invalid operation: secsDiff * 1000000 + (s.nextSendTime.Usec - timeNow.Usec) (mismatched types int64 and int32)
livemedia/MultiFramedRTPSource.go:332: invalid operation: packet.presentationTime.Usec += int64(frameDurationInMicroseconds) (mismatched types int32 and int64)
livemedia/MultiFramedRTPSource.go:334: invalid operation: packet.presentationTime.Sec += packet.presentationTime.Usec / 1000000 (mismatched types int64 and int32)
livemedia/MultiFramedRTPSource.go:504: invalid operation: (timeNow.Sec - timeReceived.Sec) * 1000000 + (timeNow.Usec - timeReceived.Usec) (mismatched types int64 and int32)
livemedia/RTCP.go:81: invalid operation: timeNow.Sec + timeNow.Usec / 1e+06 (mismatched types int64 and int32)
livemedia/RTCP.go:81: too many errors
make: *** [test] Error 2

首先项目很赞,只是好奇,难道作者运行make test不会报错吗?

panic: interface conversion in livemedia.(*BufferedPacket).nextEnclosedFrameSize

When running the example on a live camera.

I got the following:

panic: interface conversion: interface {} is func([]uint8, uint) uint32, not func([]uint8, uint32) uint32

goroutine 18 [running]:
github.com/djwackey/dorsvr/livemedia.(*BufferedPacket).nextEnclosedFrameSize(0xc420174000, 0xc42013b00c, 0x4e14, 0x4e14, 0xc40000002a, 0xc420037de8)
/home/eric/go/src/github.com/djwackey/dorsvr/livemedia/multi_framed_rtp_source_linux_amd64.go:392 +0x95
github.com/djwackey/dorsvr/livemedia.(*BufferedPacket).getNextEnclosedFrameParameters(0xc420174000, 0xc42013b00c, 0x4e14, 0x4e14, 0x2a, 0x79aee0)
/home/eric/go/src/github.com/djwackey/dorsvr/livemedia/multi_framed_rtp_source_linux_amd64.go:399 +0x51
github.com/djwackey/dorsvr/livemedia.(*BufferedPacket).use(0xc420174000, 0xc42014e000, 0x186a0, 0x186a0, 0x186a0, 0x0)
/home/eric/go/src/github.com/djwackey/dorsvr/livemedia/multi_framed_rtp_source_linux_amd64.go:310 +0x79
github.com/djwackey/dorsvr/livemedia.(*MultiFramedRTPSource).doGetNextFrame1(0xc42011e700)
/home/eric/go/src/github.com/djwackey/dorsvr/livemedia/multi_framed_rtp_source_linux_amd64.go:91 +0x112
github.com/djwackey/dorsvr/livemedia.(*MultiFramedRTPSource).networkReadHandler(0xc42011e700)
/home/eric/go/src/github.com/djwackey/dorsvr/livemedia/multi_framed_rtp_source_linux_amd64.go:240 +0x45
github.com/djwackey/dorsvr/livemedia.(*MultiFramedRTPSource).(github.com/djwackey/dorsvr/livemedia.networkReadHandler)-fm()
/home/eric/go/src/github.com/djwackey/dorsvr/livemedia/multi_framed_rtp_source_linux_amd64.go:43 +0x2a
created by github.com/djwackey/dorsvr/livemedia.(*RTPInterface).startNetworkReading
/home/eric/go/src/github.com/djwackey/dorsvr/livemedia/rtp_interface.go:30 +0x44

It seems related to the commit 765284e wackey, 11 months ago (April 14th, 2017 10:29am) using uint32 replace uint.

make test failed: undefined: groupsock.OurRandom

make test
ok _/home/ec2-user/rtsp/dorsvr/groupsock 0.002s

_/home/ec2-user/rtsp/dorsvr/livemedia

livemedia/rtcp_from_spec.go:12:9: undefined: groupsock.OurRandom
FAIL _/home/ec2-user/rtsp/dorsvr/livemedia [build failed]

github.com/djwackey/dorsvr/livemedia

../../go/src/github.com/djwackey/dorsvr/livemedia/rtcp_from_spec.go:12:9: undefined: groupsock.OurRandom

github.com/djwackey/dorsvr/livemedia

../../go/src/github.com/djwackey/dorsvr/livemedia/rtcp_from_spec.go:12:9: undefined: groupsock.OurRandom
make: *** [test] Error 2

No RTSP session is currently in progress

Opening connection to 192.168.88.253, port 554...
...remote connection opened
Sending request:
DESCRIBE rtsp://192.168.88.253:554/user=admin&password=&channel=1&stream=0 RTSP/1.0
CSeq: 2
User-Agent: dorcli (Dor Streaming Media v1.0.0.3)
Accept: application/sdp

Received 449 new bytes of response data.
Received a complete DESCRIBE response:
RTSP/1.0 200 OK
CSeq: 2
Content-Base: rtsp://192.168.88.253:554/user=admin&password=&channel=1&stream=0/
Content-Type: application/sdp
Content-Length: 287

v=0
o=- 2208990726 2208990736 IN IP4 127.0.0.1
s=Video Server Session
c=IN IP4 0.0.0.0
t=0 0
a=control:*
a=range:npt=0-
m=video 0 RTP/AVP 26
c=IN IP4 0.0.0.0
a=control:trackID=1
m=audio 0 RTP/AVP 97
a=rtpmap:97 G726-32/8000
a=fmtp:97
c=IN IP4 0.0.0.0
a=control:trackID=2

Failed to create read source.
No RTSP session is currently in progress
No RTSP session is currently in progress
^Csignal: interrupt

Can install on Ubuntu 16.04 with Go 1.8

root@StreamEdge01:~/go/src/github.com/djwackey/dorsvr# make test
ok github.com/djwackey/dorsvr/groupsock 0.006s

github.com/djwackey/dorsvr/livemedia

livemedia/stream_state.go:116: s.rtcpInstance.destroy undefined (type *RTCPInstance has no field or method destroy)
FAIL github.com/djwackey/dorsvr/livemedia [build failed]

github.com/djwackey/dorsvr/livemedia

livemedia/stream_state.go:116: s.rtcpInstance.destroy undefined (type *RTCPInstance has no field or method destroy)

github.com/djwackey/dorsvr/livemedia

livemedia/stream_state.go:116: s.rtcpInstance.destroy undefined (type *RTCPInstance has no field or method destroy)
makefile:5: recipe for target 'test' failed
make: *** [test] Error 2

Using version 1.6 also not support.
any idea?
thanks

rtsp Client can‘t used?? !!

···
a=Media_header:MEDIAINFO=4856414701010000C000C00000000000000000000000000064616875610000000000000000000000;
a=appversion:1.0

Failed to create read source.
No RTSP session is currently in progress
····

Everytime,run a rtsp Client , It just can run the RTSP DESCRIBE method! rtsp 的客服端能和其他类型的rtsp 服务器使用么?

after go get

../github.com/djwackey/dorsvr/livemedia/stream_state.go:14: undefined: RTCPInstance

module declares its path as: xorm.io/core, but was required as: github.com/go-xorm/core

Since project github.com/go-xorm/core has already updated (and the origin repository has been archived by the owner), we are required to update dependency of github.com/djwackey/gitea from github.com/go-xorm/core to xorm.io/core, otherwise we may meet an error :

 module declares its path as: xorm.io/core
                but was required as: github.com/go-xorm/core

And here is the pr in the upstream: djwackey/gitea#2

Besides, it would be great to add a go.mod file to this project.

Stream speed

When tested locally via vlc player, i get only a few frames per second.. Is there something im missing?
the same video works flawlessly when vlc streams from here https://www.wowza.com/demo/rtsp and it seems to me that the stream should be faster when no network overhead.

panic! when I use ffmpeg as rtsp publisher to forward Cam's rtsp stream

  1. build and run rtsp server
    ray@TF:/md/gows/src/github.com/djwackey/dorsvr$ go build -o rtspServer main.go
    ray@TF:/md/gows/src/github.com/djwackey/dorsvr$ ll
    total 56912
    drwxrwxr-x 9 ray ray 4096 Mar 13 15:11 ./
    drwxrwxr-x 4 ray ray 4096 Jun 27 2017 ../
    drwxrwxr-x 2 ray ray 4096 Jun 27 2017 auth/
    -rw-rw-r-- 1 ray ray 29 Jun 27 2017 AUTHORS
    drwxrwxr-x 2 ray ray 4096 Jun 27 2017 examples/
    drwxrwxr-x 8 ray ray 4096 Mar 13 14:01 .git/
    -rw-rw-r-- 1 ray ray 7 Nov 12 10:29 .gitignore
    drwxrwxr-x 2 ray ray 4096 Jun 27 2017 groupsock/
    -rw-rw-r-- 1 ray ray 26461 Jun 27 2017 LICENSE
    drwxrwxr-x 2 ray ray 4096 Nov 12 10:29 livemedia/
    -rw-rw-r-- 1 ray ray 1510 Nov 12 10:29 main.go
    -rwxrwxr-x 1 ray ray 63 Jun 27 2017 makefile*
    -rwxrwxr-x 1 ray ray 293 Jun 27 2017 make.sh*
    -rw-rw-r-- 1 ray ray 1859 Jun 27 2017 README.md
    drwxrwxr-x 2 ray ray 4096 Jun 27 2017 rtspclient/
    drwxrwxr-x 2 ray ray 4096 Jun 27 2017 rtspserver/
    -rwxrwxr-x 1 ray ray 10575626 Mar 13 15:11 rtspServer*
    -rw-r--r-- 1 ray ray 47605074 Mar 13 14:26 testVideo.h264
    -rw-rw-r-- 1 ray ray 57 Jun 27 2017 .travis.yml
    ray@TF:/md/gows/src/github.com/djwackey/dorsvr$ ./rtspServer
    We use port 80 for optional RTSP-over-HTTP tunneling, or for HTTP live streaming (for indexed Transport Stream files only).
    This server's URL: rtsp://192.168.223.1:8554/.
    2018/03/13 15:12:05 [I] Received 91 new bytes of request data.
    2018/03/13 15:12:05 [I] Received a complete OPTIONS request:
    OPTIONS rtsp://192.168.223.1:8554/live.sdp RTSP/1.0
    CSeq: 1
    User-Agent: Lavf56.40.101

2018/03/13 15:12:05 [I] send response:
RTSP/1.0 200 OK
CSeq: 1
Date: 2018-03-13 15:12:05.295121783 +0800 CST m=+7.931249137
Public: [OPTIONS DESCRIBE SETUP TEARDOWN PLAY PAUSE RECORD GET_PARAMETER SET_PARAMETER]

2018/03/13 15:12:05 [I] Received 144 new bytes of request data.
panic: runtime error: slice bounds out of range

goroutine 34 [running]:
github.com/djwackey/dorsvr/livemedia.ParseRTSPRequestString(0xc420182240, 0x90, 0x90, 0x1, 0x1)
/md/gows/src/github.com/djwackey/dorsvr/livemedia/common.go:161 +0xc27
github.com/djwackey/dorsvr/rtspserver.(*RTSPClientConnection).handleRequestBytes(0xc420154100, 0xc420170000, 0x2710, 0x2710, 0x90, 0x0, 0x0)
/md/gows/src/github.com/djwackey/dorsvr/rtspserver/connection.go:88 +0x148
github.com/djwackey/dorsvr/rtspserver.(*RTSPClientConnection).incomingRequestHandler(0xc420154100)
/md/gows/src/github.com/djwackey/dorsvr/rtspserver/connection.go:57 +0x2e0
github.com/djwackey/dorsvr/rtspserver.(*RTSPServer).newClientConnection(0xc42013c100, 0xaa2e20, 0xc420158010)
/md/gows/src/github.com/djwackey/dorsvr/rtspserver/server.go:131 +0x5c
created by github.com/djwackey/dorsvr/rtspserver.(*RTSPServer).incomingConnectionHandler
/md/gows/src/github.com/djwackey/dorsvr/rtspserver/server.go:124 +0x139
ray@TF:/md/gows/src/github.com/djwackey/dorsvr$

  1. forward Cam's rtsp stream with ffmpeg
    ray@TF:/md/gows/src/github.com/djwackey/dorsvr$ ffmpeg -i rtsp://yt:[email protected]:554/h264/ch1/main/av_stream -c:v libx264 -c:a aac -strict -2 -f rtsp -rtsp_transport tcp rtsp://192.168.223.1:8554/live.sdp
    ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
    built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
    configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
    libavutil 54. 31.100 / 54. 31.100
    libavcodec 56. 60.100 / 56. 60.100
    libavformat 56. 40.101 / 56. 40.101
    libavdevice 56. 4.100 / 56. 4.100
    libavfilter 5. 40.101 / 5. 40.101
    libavresample 2. 1. 0 / 2. 1. 0
    libswscale 3. 1.101 / 3. 1.101
    libswresample 1. 2.101 / 1. 2.101
    libpostproc 53. 3.100 / 53. 3.100
    Invalid UE golomb code
    Last message repeated 3 times
    [h264 @ 0x1ae6bc0] RTP: missed 2 packets
    [h264 @ 0x1ae6bc0] RTP: missed 4 packets
    [pcm_alaw @ 0x1ae7a20] RTP: missed 1 packets
    Guessed Channel Layout for Input Stream #0.1 : mono
    Input #0, rtsp, from 'rtsp://yt:[email protected]:554/h264/ch1/main/av_stream':
    Metadata:
    title : Media Presentation
    Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuvj420p(pc, bt709), 1920x1080, 25 fps, 25 tbr, 90k tbn, 180k tbc
    Stream #0:1: Audio: pcm_alaw, 8000 Hz, 1 channels, s16, 64 kb/s
    No pixel format specified, yuvj420p for H.264 encoding chosen.
    Use -pix_fmt yuv420p for compatibility with outdated media players.
    [libx264 @ 0x1d3ee20] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0x1d3ee20] profile High, level 4.0
    [libx264 @ 0x1d3ee20] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    [aac @ 0x1c4a540] Too many bits per frame requested, clamping to max
    Output #0, rtsp, to 'rtsp://192.168.223.1:8554/live.sdp':
    Metadata:
    title : Media Presentation
    encoder : Lavf56.40.101
    Stream #0:0: Video: h264 (libx264), yuvj420p(pc), 1920x1080, q=-1--1, 25 fps, 25 tbn, 25 tbc
    Metadata:
    encoder : Lavc56.60.100 libx264
    Stream #0:1: Audio: aac, 8000 Hz, mono, fltp, 48 kb/s
    Metadata:
    encoder : Lavc56.60.100 aac
    Stream mapping:
    Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
    Stream #0:1 -> #0:1 (pcm_alaw (native) -> aac (native))
    Could not write header for output file #0 (incorrect codec parameters ?): Invalid data found when processing input
    ray@TF:/md/gows/src/github.com/djwackey/dorsvr$

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.