Skip to content

dktsudgg/videolive

Repository files navigation

안드로이드 실시간 스트리밍

실행화면

Video Label

스트리밍 서버

  • 스트리밍 서버 : AWS EC2 Ubuntu 16.04 + WowzaStreamingEngine

    WowzaStreamingEngine 설치법

    Wowza 서버를 사용할 경우 TCP 8086 ~ 8088 / UDP 6970 ~ 9999 포트를 개방해주셔야 합니다.    

   Firebase 연동

주요 라이브러리

핵심 기능

  • Firebase를 활용한 구글로그인 연동 및 DB저장
  • 기기 -> 스트리밍서버 로 영상 송출시 RTSP전송
  • 스트리밍서버 -> 기기 : 송출된 영상을 Dash로 받아와 ExoPlayer에서 재생
  • Firebase RealTime DataBase를 활용한 방송정보 갱신 / 실시간 채팅 활성화

[회원가입 & 로그인]

  • Firebase auth를 활용한 회원가입 & 로그인 후  Firebase Databse에 회원정보 저장

[방송하기]

  • 로그인한 사용자만 방송할 수 있도록 설정 (미로그인시 로그인창 생성)
  • 방송제목, 카메라 앞뒤화면 설정
  • 시작버튼을 누를경우 스트리밍서버와 연결되었을 경우 채팅서버 연결
  • 생방송리스트에 방송정보 추가

[방송시청]

  • 스트리밍서버에 연결되었을경우, Exoplayer에 영상 표시 및 채팅서버 연결
  • 로그인된 사용자만 채팅전송가능
  • 시작버튼을 누를경우 스트리밍서버와 연결되었을 경우 채팅서버 연결

[개인방송국]

  • 한줄공지
  • 프로필이미지 & 방송국 썸네일 변경
  • 스트리머 목록 (생방송중일시 Live표시)
  • 즐겨찾기기능

코드

  • 영상 RTSP송출

           private RtspCamera1 rtspCamera1;
          
           rtspCamera1.setAuthorization(stream_config.user, stream_config.password);
           rtspCamera1.setVideoBitrateOnFly(stream_config.bitrate);
           rtspCamera1.setProtocol(Protocol.UDP);
           rtspCamera1.prepareAudio(128 * 1024, stream_config.samplerate, true, false, false);
           rtspCamera1.prepareVideo(stream_config.width, stream_config.height, stream_config.fps, stream_config.bitrate, false, 0);
           rtspCamera1.getResolutionsBack().get(8);
    
           rtspCamera1.enableVideo();
           rtspCamera1.enableAudio();
           rtspCamera1.startStream(url);
    

    StreamPresenter.java 120:129        

  • ExoPlayer

              if (player == null) {
               TrackSelection.Factory factory = new AdaptiveTrackSelection.Factory(def);
    
                player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(context),
                  new DefaultTrackSelector(factory), new DefaultLoadControl());
                player.addListener(componentListener);
                player.setVideoDebugListener(componentListener);
                player.setAudioDebugListener(componentListener);
                playerView.setPlayer(player);
                player.setPlayWhenReady(ready);
              }
              MediaSource mediaSource = buildMediaSource(Uri.parse("StreamingServerUrl"));
    
             player.prepare(mediaSource, true, false);
    

    StreamPlayerPresenter.java 144:157

About

android realtime streaming & chatting app

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages