RootEncoder 將影像傳送到 SRS 伺服器很容易,不僅會傳送 RTMP 協定,還同時傳送 WebRtc 的 UDP 協定。
相關代碼
執行底下代碼即可開始傳送影像及聲音
val url="rtmp://ip/live/video1" fun btnVideo_click(view: View){ if(genericStream.isStreaming){ ui.btnVideo.setBackgroundResource(R.drawable.ic_video_start) genericStream.stopRecord() genericStream.stopStream() } else{ ui.btnVideo.setBackgroundResource(R.drawable.ic_video_stop) genericStream.startStream(url) val file = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date()) genericStream.startRecord("/sdcard/Download/patrolcar/video/${file}.mp4", RecordController.Listener{}) } }
startStream
genericStream.startStream(url) 即開始傳送。url 的格式為 “rtmp://ip/live/video1”
startRecord
使用 genericStream.startRecord(path, RecordController.Listener) 即可在手機中儲存影片,建議 path 設定為 “/sdcard/Download” 之下的目錄,因為新版的 Android 開放 Download 目錄,是不需要權限的。
SRS 觀看
連線到 SRS 伺服器時,如果使用 SRS 的 WebRtc 播放器,即可看到幾乎無延遲的畫面,但如果用 rtmp 播放器,則會約有 2 秒的延遲。
使用 WebRtc 播放器還有一個好處,就是手機停止播放時,瀏覽器跟著停止,當手機再度連線重新播放,客戶端的瀏覽器會立即自動播放。
如果是使用 rtmp 播放器時,當手機斷線重連重新播放時,客戶端的瀏覽器需按下 F5 重新整理才會開播放。