ZLMediaKit学习系列(三):安卓设备视频监控

What:实现远程视频监控
Why:解决设备监控问题
How:搭建流媒体服务器
(二)参考资料:https://notemi.cn/wvp---zlmedia-kit---mediaserverui-to-realize-streaming-playback-and-recording-of-camera-gb28181.html
(三)启动MediaServer

【原创】ZLMediaKit学习系列(三):安卓设备视频监控插图

2021-10-29 16:35:00.983 D MediaServer.exe[1408-event poller 3] WebApi.cpp:228 http api debug |
# request:
POST /index/api/startSendRtp
# header:
Accept-Encoding : gzip
Connection : Keep-Alive
Content-Length : 144
Content-Type : application/x-www-form-urlencoded
Host : 10.0.0.75:443
User-Agent : okhttp/4.9.0
# content:
secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=__defaultVhost__&app=live&stream=0&ssrc=1&dst_url=127.0.0.1&dst_port=57456&is_udp=0&src_port=0
# response:
{
"code" : -1,
"local_port" : 0,
"msg" : "connection timed out"
}

【原创】ZLMediaKit学习系列(三):安卓设备视频监控插图1

日志信息:

2021-10-29 17:43:23.415 I MediaServer.exe[1984-event poller 3] MediaSource.cpp:414 emitEvent | 媒体注册:hls __defaultVhost__ rtp 00000001

2021-10-29 17:43:23.415 I MediaServer.exe[1984-event poller 3] RtpProcess.cpp:245 operator () | 00000001(127.0.0.1:56616) 允许RTP推流

2021-10-29 17:43:23.415 I MediaServer.exe[1984-event poller 3] GB28181Process.cpp:179 onRtpDecode | 00000001 judged to be PS

2021-10-29 17:43:23.415 I MediaServer.exe[1984-event poller 3] Decoder.cpp:225 onTrack | got track: mpeg4-generic

2021-10-29 17:43:23.415 W MediaServer.exe[1984-event poller 3] MediaSink.cpp:258 addMuteAudioTrack | audio track already existed

2021-10-29 17:43:23.415 I MediaServer.exe[1984-event poller 3] Decoder.cpp:225 onTrack | got track: H264

2021-10-29 17:43:23.415 I MediaServer.exe[1984-event poller 3] Decoder.cpp:142 onStream | add track finished

2021-10-29 17:43:23.505 T MediaServer.exe[1984-event poller 0] HttpSession.cpp:25 HttpSession | 2315263986480(10.0.0.53:37390)

2021-10-29 17:43:23.527 I MediaServer.exe[1984-event poller 0] PSEncoder.cpp:160 PSEncoderImp | 0000021B107FA2D0 00000001

2021-10-29 17:43:23.527 D MediaServer.exe[1984-event poller 0] RtpSession.cpp:35 RtpSession | 2315261293760(127.0.0.1:56617)

2021-10-29 17:43:23.528 I MediaServer.exe[1984-event poller 0] RtpSender.cpp:97 onConnect | 开始发送 rtp:127.0.0.1:10000, 是否为udp方式:0

2021-10-29 17:43:23.528 D MediaServer.exe[1984-event poller 0] WebApi.cpp:228 http api debug |

# request:

POST /index/api/startSendRtp

# header:

Accept-Encoding : gzip

Connection : Keep-Alive

Content-Length : 144

Content-Type : application/x-www-form-urlencoded

Host : 10.0.0.75

User-Agent : okhttp/4.9.0

# content:

secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=__defaultVhost__&app=live&stream=0&ssrc=1&dst_url=127.0.0.1&dst_port=10000&is_udp=0&src_port=0

# response:

{

"code" : 0,

"local_port" : 56617

}

 

【原创】ZLMediaKit学习系列(三):安卓设备视频监控插图2

日志信息:

2021-10-29 18:05:11.394 I MediaServer.exe[1984-event poller 2] MediaSource.cpp:414 emitEvent | 媒体注销:hls __defaultVhost__ rtp 00000001

2021-10-29 18:05:11.412 I MediaServer.exe[1984-event poller 2] MediaSource.cpp:414 emitEvent | 媒体注册:hls __defaultVhost__ rtp 00000001

2021-10-29 18:05:11.412 I MediaServer.exe[1984-event poller 2] RtpProcess.cpp:245 operator () | 00000001(127.0.0.1:56125) 允许RTP推流

2021-10-29 18:05:11.423 I MediaServer.exe[1984-event poller 2] GB28181Process.cpp:179 onRtpDecode | 00000001 judged to be PS

2021-10-29 18:05:11.423 I MediaServer.exe[1984-event poller 2] Decoder.cpp:225 onTrack | got track: mpeg4-generic

2021-10-29 18:05:11.423 W MediaServer.exe[1984-event poller 2] MediaSink.cpp:258 addMuteAudioTrack | audio track already existed

2021-10-29 18:05:11.423 I MediaServer.exe[1984-event poller 2] Decoder.cpp:225 onTrack | got track: H264

2021-10-29 18:05:11.423 I MediaServer.exe[1984-event poller 2] Decoder.cpp:142 onStream | add track finished

2021-10-29 18:05:13.359 W MediaServer.exe[1984-event poller 2] EventPoller.cpp:193 async_l | take time:17ms, thread may be overloaded

2021-10-29 18:05:13.641 D MediaServer.exe[1984-event poller 2] MediaSink.cpp:158 emitAllTrackReady | all track ready use 2218ms

2021-10-29 18:05:13.641 I MediaServer.exe[1984-event poller 2]

MultiMediaSourceMuxer.cpp:299 onAllTrackReady | stream: rtp://__defaultVhost__/rtp/00000001 , codec info: mpeg4-generic[44100/2/16] H264[1000/416/48]

2021-10-29 18:05:13.641 I MediaServer.exe[1984-event poller 2] MediaSource.cpp:414 emitEvent | 媒体注册:rtmp __defaultVhost__ rtp 00000001

2021-10-29 18:05:13.641 I MediaServer.exe[1984-event poller 2] MediaSource.cpp:414 emitEvent | 媒体注册:rtsp __defaultVhost__ rtp 00000001

2021-10-29 18:05:13.641 I MediaServer.exe[1984-event poller 2] MediaSource.cpp:414 emitEvent | 媒体注册:ts __defaultVhost__ rtp 00000001

2021-10-29 18:05:13.702 I MediaServer.exe[1984-event poller 2] MediaSource.cpp:414 emitEvent | 媒体注册:fmp4 __defaultVhost__ rtp 00000001


根据wiki得到播流地址:rtsp://10.0.0.53:554/rtp/00000001
向设备推流:
ffmpeg -re -i "D:\ZLMdeiaKit\ZLMediaKit\www\video\test.mp4" -vcodec copy -acodec copy -f flv -y rtsp://10.0.0.53:554/live/1234
ffmpeg -re -i "D:\ZLMdeiaKit\ZLMediaKit\www\video\test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://10.0.0.53/live/1234
ffmpeg -re -i "D:\ZLMdeiaKit\ZLMediaKit\www\video\test.mp4" -vcodec h264 -acodec aac -f rtp_mpegts rtp://10.0.0.53:10000
ffmpeg -re -i "D:\ZLMdeiaKit\ZLMediaKit\www\video\test.mp4" -vcodec h264 -acodec aac -f flv rtmp://10.0.0.53/live/1234
日志信息:
"code" : 0,

"data" : [

{

"api.apiDebug" : "0",

"api.defaultSnap" : "./www/logo.png",

"api.secret" : "035c73f7-bb6b-4889-a715-d9eb2d1925cc",

"api.snapRoot" : "./www/snap/",

"ffmpeg.bin" : "ffmpeg",

"ffmpeg.cmd" : "%s -re -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s",

"ffmpeg.log" : "./ffmpeg/ffmpeg.log",

"ffmpeg.snap" : "%s -i %s -y -f mjpeg -t 0.001 %s",

"general.addMuteAudio" : "1",

"general.enableVhost" : "0",

"general.enable_audio" : "1",

"general.flowThreshold" : "1024",

"general.fmp4_demand" : "0",

"general.hls_demand" : "0",

"general.maxStreamWaitMS" : "15000",

"general.mediaServerId" : "vEMV3ckvDMU3bksD",

"general.mergeWriteMS" : "0",

"general.modifyStamp" : "0",

"general.publishToHls" : "1",

"general.publishToMP4" : "0",

"general.resetWhenRePlay" : "1",

"general.rtmp_demand" : "0",

"general.rtsp_demand" : "0",

"general.streamNoneReaderDelayMS" : "20000",

"general.ts_demand" : "0",

"hls.broadcastRecordTs" : "0",

"hls.deleteDelaySec" : "0",

"hls.fileBufSize" : "65536",

"hls.filePath" : "/storage/emulated/0/httpRoot",

"hls.segDur" : "2",

"hls.segNum" : "3",

"hls.segRetain" : "5",

"hook.admin_params" : "secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc",

"hook.alive_interval" : "30",

"hook.enable" : "0",

"hook.on_flow_report" : "",

"hook.on_http_access" : "",

"hook.on_play" : "",

"hook.on_publish" : "",

"hook.on_record_mp4" : "",

"hook.on_record_ts" : "",

"hook.on_rtsp_auth" : "",

"hook.on_rtsp_realm" : "",

"hook.on_server_keepalive" : "",

"hook.on_server_started" : "",

"hook.on_shell_login" : "",

"hook.on_stream_changed" : "",

"hook.on_stream_none_reader" : "",

"hook.on_stream_not_found" : "",

"hook.timeoutSec" : "10",

"http.charSet" : "utf-8",

"http.dirMenu" : "1",

"http.keepAliveSecond" : "15",

"http.maxReqSize" : "40960",

"http.notFound" : "<html><head><title>404 Not Found</title></head><body bgcolor=\"white\"><center><h1>您访问的资源不存在!</h1></center><hr><center>ZLMediaKit-6.0(build in Oct 12 2021 15:23:42)</center></body></html>",

"http.port" : "8080",

"http.rootPath" : "/storage/emulated/0/httpRoot",

"http.sendBufSize" : "65536",

"http.sslport" : "8443",

"http.virtualPath" : "",

"multicast.addrMax" : "239.255.255.255",

"multicast.addrMin" : "239.0.0.0",

"multicast.udpTTL" : "64",

"record.appName" : "record",

"record.fastStart" : "0",

"record.fileBufSize" : "65536",

"record.filePath" : "/storage/emulated/0/httpRoot",

"record.fileRepeat" : "0",

"record.fileSecond" : "3600",

"record.sampleMS" : "500",

"rtmp.handshakeSecond" : "15",

"rtmp.keepAliveSecond" : "15",

"rtmp.modifyStamp" : "0",

"rtmp.port" : "1935",

"rtmp.sslport" : "19350",

"rtp.audioMtuSize" : "600",

"rtp.rtpMaxSize" : "10",

"rtp.videoMtuSize" : "1400",

"rtp_proxy.dumpDir" : "",

"rtp_proxy.port" : "10000",

"rtp_proxy.timeoutSec" : "15",

"rtsp.authBasic" : "0",

"rtsp.directProxy" : "1",

"rtsp.handshakeSecond" : "15",

"rtsp.keepAliveSecond" : "15",

"rtsp.port" : "8554",

"rtsp.sslport" : "8332",

"shell.maxReqSize" : "1024",

"shell.port" : "9000"

}

]

}



ANNOUNCE rtsp://10.0.0.53:554/live/1234.sdp RTSP/1.0

CSeq: 1 User-Agent: EasyPusher v1.2.16.1105 Content-Type: application/sdp Content-Length: 541 v=0 o=- 0 0 IN IP4 127.0.0.1 s=EasyDarwin i=EasyDarwin c=IN IP4 127.0.0.1 t=0 0 a=x-qt-text-nam:EasyDarwin a=x-qt-text-inf:EasyDarwin a=x-qt-text-cmt:source application::EasyDarwin a=x-qt-text-aut: a=x-qt-text-cpy: m=video 0 RTP/AVP 96 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=1;sprop-parameter-sets= a=control:streamid=0 m=audio 0 RTP/AVP 97 a=rtpmap:97 MPEG4-GENERIC/8000/1 a=fmtp:97 streamtype=5;profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1588 a=control:streamid=1234

SETUP rtsp://10.0.0.53:554/live/1234.sdp RTSP/1.0 Transport: RTP/AVP/TCP;unicast;mode=record;interleaved=0-1 CSeq: 2 User-Agent: EasyPusher v1.2.16.1105


转载请注明出处