Android 개발 Vitamio가 동영상을 녹화할 수 있나요?
안드로이드에서 라이브 영상/오디오 스트리밍은 소수의 사람들이 주목하는 부분이다. 스트리밍 미디어를 논의할 때마다 RTMP(실시간 메시징 프로토콜)는 필수 불가결합니다. RTMP는 기본 비디오/오디오 라이브 스트리밍 프로토콜이지만 안타깝게도 Android 표준 VideoView는 RTMP 재생을 지원하지 않습니다. 따라서 Android에서 RTMP 라이브 스트리밍을 재생하려면 RTMP 프로토콜을 지원하는 라이브러리를 사용해야 합니다. 이 튜토리얼에서는 Android용 [Vitamio] 라이브러리를 사용하여 RTMP 프로토콜로 스트리밍된 미디어를 재생하는 방법에 대해 설명합니다.
Android Vitamio 라이브러리
Vitamio는 Android 및 iOS에서 FFmpeg를 기반으로 하는 오픈 소스 프로젝트입니다. Vitamio는 깔끔하고 단순하며 포괄적인 실제 하드웨어 가속 디코더 및 렌더러 API를 제공합니다. Vitamio는 FLV, TS/TP, WMV, DivX, Xvid 및 기타 표준 형식과 같은 다양한 오디오 및 비디오 형식을 지원하는 API입니다. 강력한 도서관. 차이점은 .mkv 및 .srt와 유사한 내장 및 외부 자막 재생도 지원한다는 것입니다. 하지만 라이센스가 함께 제공되므로 사용하기 전에 인증을 받으십시오. 이 안드로이드 RTMP 예에서는 RTMP 라이브 스트리밍뿐만 아니라 m3u8 스트리밍(HLS), RTSP 스트리밍 및 MMS(Microsoft Media Stream)에 대해서도 설명합니다. 먼저 프로젝트에서 Vitamio 라이브러리를 참조하겠습니다.
Android Studio에서 Vitamio 라이브러리를 참조하는 단계는 다음과 같습니다.
1. Vitamio 번들을 다운로드하고
2. Android Studio 모듈에서
3. VitamioBundle 경로를 지정하고 vitamio 폴더를 선택한 후 완료를 클릭하세요.
4. 빌드의 종속성 섹션에 종속 프로젝트(':vitamio')를 추가하세요. .gradle(모듈: app)
5. build.gradle(모듈: vitamio) 열기 – 최소 SDK 버전을 7로 변경하세요.
6. 인터넷 권한을 추가하는 것을 잊지 마세요. 매니페스트.xml에서
7.완료!
Android RTMP 스트림
사용 방법을 설명하기 전에 먼저 RTMP에 대해 이해해 보겠습니다. RTMP(Real Time Messaging Protocol)는 Adobe Systems가 소유한 프로토콜입니다. 이 프로토콜은 오디오 및 비디오 스트리밍을 개발하는 Adobe 소유의 플래시 플레이어입니다. 계약의 일부는 나중에 대중에게 공개되었습니다. 여기에서 자세한 내용을 확인하세요. 이 프로토콜은 주로 IPTV 및 주문형 라이브 비디오 스트리밍에 사용되지만 다른 응용 프로그램에도 사용됩니다.
Android에서 표준 VideoView는 RTMP 재생을 지원하지 않습니다. 그러나 WebView는 RTMP 스트림을 재생할 수 있습니다. 이렇게 하면 RTMP 스트림 재생 문제가 해결되지만 웹 앱은 좋은 인터페이스와 경험을 제공하지 못하는 것 같습니다. 따라서 이 안드로이드 RTMP 예에서는 타사 라이브러리인 Vitamio를 사용하여 RTMP 스트림을 라이브로 스트리밍합니다.
프로젝트에서 Vitamio를 참조한 후 레이아웃 파일에 Vitamio의 VideoView를 추가하세요:
activity_main.xml
lt;?xml version="1.0" 인코딩="utf-8 "? gt;
lt;LinearLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height =" match_parent"
android:orientation="vertical" gt;
lt;io.vov.vitamio.widget.VideoView android:id="@ id/vitamio_videoView" p>
android:layout_width="wrap_content"
android:layout_height="wrap_content" /gt;
lt;/LinearLayoutgt;123456789101112
또한 적어주세요 귀하의 활동은 다음과 같습니다:
MainActivity.java
package com.truiton.rtmpplayer; import android.os.Bundle; app.ActionBarActivity; import java.util.HashMap; import io.vov.vitamio.MediaPlayer; import io.vov.vitamio.widget .VideoView ; 공개 클래스 MainActivity는 ActionBarActivity를 확장합니다. {
private static final String TAG = "MainActivity"; //private HashMaplt Stringgt; @Override
protected void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState); if (!LibsChecker.checkVitamioLibs(this)) return;
setContentView(R.layout .activity_main );
mVide
oView = (VideoView) findViewById(R.id.vitamio_videoView);
path = "rtmp://rrbalancer.broadcast.tneg.de:1935/pw/ruk/ruk" /*options = new HashMaplt;gt;();
options.put("rtmp_playpath", "");
options.put("rtmp_swfurl", "");
options.put("rtmp_live", "1");
options.put("rtmp_pageurl", "") */
mVideoView.setVideoPath(path); //mVideoView.setVideoURI(Uri.parse(path), options);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});
}
}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
위의 내용은 코드 매우 명확하지만 네, RTMP 스트림 재생 경로를 수정해주세요. Android에서는 헤더 경로를 사용하여 RTMP 스트림을 재생하는 것이 가능한 경우가 있습니다. 다행히 Vitamio RTMP 플레이어도 이 방법을 지원합니다. 따라서 모든 유형의 RTMP 스트림은 Vitamio 라이브러리를 사용할 수 있습니다. 위의 예는 다음과 같습니다.
Android Vitamio 라이브 비디오 재생 기능 구현
Android RTSP 스트리밍 미디어
실시간 스트리밍 프로토콜(RTSP)을 통해 멀티미디어 서버 YouTube와 같은 스트리밍 콘텐츠는 RTSP 스트리밍을 사용하여 콘텐츠를 게시합니다. RTSP 스트리밍의 쉬운 점은 Android 표준 VideoView를 통해 수행할 수 있다는 것입니다. 자세한 내용은 내 VideoView 예제를 참조하세요.
그러나 Vitamio 라이브러리를 사용하면 RTSP 스트림을 더 잘 재생할 수 있습니다. 실제로 Vitamio는 RTSP 스트림 재생도 지원합니다.
과정은 위와 동일하며 레이아웃 파일에 Vitamio의 VideoView를 포함시키고 경로 변수에 지정된 RTSP URL을 사용합니다.
mVideoView = (VideoView) findViewById(R.id.vitamio_videoView);
path = "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov";
mVideoView.setVideoPath(path);
mVideoView.setMediaController (새로운 MediaController(this));
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
}) 12345678910111213
Android m3u8 스트리밍 미디어
p>"안드로이드에서 m3u8 비디오를 재생하는 방법"은 안드로이드 개발자가 묻는 가장 일반적인 질문 중 하나입니다. HTTP 프로토콜을 통해 라이브 비디오 스트리밍을 수행하는 가장 간단한 방법은 표준 VideoView를 사용하는 것입니다. 그러나 m3u8 스트림은 Android 3.0 이상의 장치에서만 재생할 수 있습니다. HTTP/HTTPS 라이브 스트리밍 및 HTTP/HTTPS 프로그레시브 스트리밍 프로토콜이 Android 3.0에서 도입되었으므로 Android 3.1에서는 HTTPS가 완벽하게 지원됩니다.
이전 버전에서 Android m3u8 스트림에 대한 HLS(HTTP 라이브 스트리밍) 지원을 구현하려는 경우. Android API7 이상에서 m3u8 재생을 지원하는 Vitamio 라이브러리 사용을 고려해야 합니다. 사용 방법은 레이아웃 파일에 Vitamio의 VideoView를 사용하고 HTTP 실시간 스트리밍 URL을 지정하는 것과 동일합니다.
mVideoView = (VideoView) findViewById(R.id.vitamio_videoView);
path = "/studiob";
mVideoView.setVideoPath(path);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f)
}
}); /p>
결론
위의 논의를 통해 Vitamio는 강력한 멀티 플랫폼 라이브러리(ios 및 android)임을 확신할 수 있습니다. Vitamio 라이브러리를 사용하면 RTMP, RTSP, HTTP Live, HTTP Progressive Streaming Protocol 등 다양한 유형의 비디오 형식 및 프로토콜을 재생할 수 있습니다. 또 다른 좋은 기능은 vitamio가 자막과 다중 오디오 트랙 재생을 지원한다는 것입니다. Vitamio의 유일한 단점은 완전한 오픈 소스가 아니라는 것입니다.
전문 읽기