rtsp android客户端,Android版 RTSP客户端

【实例简介】

利用了移植的ffmpeg库开发的,这里是代码分析博客http://blog.csdn.net/nieyongs/article/details/21407033

【实例截图】

【核心代码】

AndroidRtspClient

└── AndroidRtspClient

├── AndroidManifest.xml

├── bin

│   ├── AndroidManifest.xml

│   ├── classes

│   │   └── com

│   │   └── ny

│   │   └── rtspclient

│   │   ├── BuildConfig.class

│   │   ├── MainActivity.class

│   │   ├── R$attr.class

│   │   ├── R$dimen.class

│   │   ├── R$drawable.class

│   │   ├── R$id.class

│   │   ├── R$layout.class

│   │   ├── R$menu.class

│   │   ├── R$string.class

│   │   ├── R$style.class

│   │   ├── R.class

│   │   ├── VideoActivity.class

│   │   └── VideoDisplay.class

│   ├── classes.dex

│   ├── dexedLibs

│   │   └── android-support-v4-8ea4698baa7cf5861a5937d06495d218.jar

│   ├── jarlist.cache

│   ├── res

│   │   └── crunch

│   │   ├── drawable-hdpi

│   │   │   └── ic_launcher.png

│   │   ├── drawable-mdpi

│   │   │   └── ic_launcher.png

│   │   ├── drawable-xhdpi

│   │   │   └── ic_launcher.png

│   │   └── drawable-xxhdpi

│   │   └── ic_launcher.png

│   ├── resources.ap_

│   └── RtspClient.apk

├── gen

│   └── com

│   └── ny

│   └── rtspclient

│   ├── BuildConfig.java

│   └── R.java

├── ic_launcher-web.png

├── jni

│   ├── Android.mk

│   ├── ffmpeg

│   │   ├── libavcodec

│   │   │   ├── avcodec.h

│   │   │   ├── avfft.h

│   │   │   ├── dxva2.h

│   │   │   ├── old_codec_ids.h

│   │   │   ├── vaapi.h

│   │   │   ├── vda.h

│   │   │   ├── vdpau.h

│   │   │   ├── version.h

│   │   │   └── xvmc.h

│   │   ├── libavdevice

│   │   │   ├── avdevice.h

│   │   │   └── version.h

│   │   ├── libavfilter

│   │   │   ├── asrc_abuffer.h

│   │   │   ├── avcodec.h

│   │   │   ├── avfiltergraph.h

│   │   │   ├── avfilter.h

│   │   │   ├── buffersink.h

│   │   │   ├── buffersrc.h

│   │   │   └── version.h

│   │   ├── libavformat

│   │   │   ├── avformat.h

│   │   │   ├── avio.h

│   │   │   └── version.h

│   │   ├── libavutil

│   │   │   ├── adler32.h

│   │   │   ├── aes.h

│   │   │   ├── attributes.h

│   │   │   ├── audioconvert.h

│   │   │   ├── audio_fifo.h

│   │   │   ├── avassert.h

│   │   │   ├── avconfig.h

│   │   │   ├── avstring.h

│   │   │   ├── avutil.h

│   │   │   ├── base64.h

│   │   │   ├── blowfish.h

│   │   │   ├── bprint.h

│   │   │   ├── bswap.h

│   │   │   ├── buffer.h

│   │   │   ├── channel_layout.h

│   │   │   ├── common.h

│   │   │   ├── cpu.h

│   │   │   ├── crc.h

│   │   │   ├── dict.h

│   │   │   ├── error.h

│   │   │   ├── eval.h

│   │   │   ├── ffversion.h

│   │   │   ├── fifo.h

│   │   │   ├── file.h

│   │   │   ├── frame.h

│   │   │   ├── hmac.h

│   │   │   ├── imgutils.h

│   │   │   ├── intfloat.h

│   │   │   ├── intfloat_readwrite.h

│   │   │   ├── intreadwrite.h

│   │   │   ├── lfg.h

│   │   │   ├── log.h

│   │   │   ├── lzo.h

│   │   │   ├── mathematics.h

│   │   │   ├── md5.h

│   │   │   ├── mem.h

│   │   │   ├── murmur3.h

│   │   │   ├── old_pix_fmts.h

│   │   │   ├── opt.h

│   │   │   ├── parseutils.h

│   │   │   ├── pixdesc.h

│   │   │   ├── pixfmt.h

│   │   │   ├── random_seed.h

│   │   │   ├── rational.h

│   │   │   ├── ripemd.h

│   │   │   ├── samplefmt.h

│   │   │   ├── sha512.h

│   │   │   ├── sha.h

│   │   │   ├── stereo3d.h

│   │   │   ├── timecode.h

│   │   │   ├── time.h

│   │   │   ├── timestamp.h

│   │   │   ├── version.h

│   │   │   └── xtea.h

│   │   ├── libswresample

│   │   │   ├── swresample.h

│   │   │   └── version.h

│   │   └── libswscale

│   │   ├── swscale.h

│   │   └── version.h

│   ├── FFmpeg.cpp

│   ├── FFmpeg.h

│   ├── libs

│   │   └── libffmpeg.so

│   └── RtspClient.cpp

├── libs

│   ├── android-support-v4.jar

│   ├── armeabi

│   │   ├── libffmpeg.so

│   │   └── librtspclient.so

│   └── libffmpeg.so

├── obj

│   └── local

│   └── armeabi

│   ├── librtspclient.so

│   ├── libstdc++.a

│   ├── libtest.so

│   └── objs

│   └── rtspclient

│   ├── FFmpeg.o

│   ├── FFmpeg.o.d

│   ├── RtspClient.o

│   └── RtspClient.o.d

├── proguard-project.txt

├── project.properties

├── res

│   ├── drawable-hdpi

│   │   └── ic_launcher.png

│   ├── drawable-mdpi

│   │   └── ic_launcher.png

│   ├── drawable-xhdpi

│   │   └── ic_launcher.png

│   ├── drawable-xxhdpi

│   │   └── ic_launcher.png

│   ├── layout

│   │   └── activity_main.xml

│   ├── menu

│   │   └── main.xml

│   ├── values

│   │   ├── dimens.xml

│   │   ├── strings.xml

│   │   └── styles.xml

│   ├── values-sw600dp

│   │   └── dimens.xml

│   ├── values-sw720dp-land

│   │   └── dimens.xml

│   ├── values-v11

│   │   └── styles.xml

│   └── values-v14

│   └── styles.xml

└── src

└── com

└── ny

└── rtspclient

├── MainActivity.java

├── VideoActivity.java

└── VideoDisplay.java

50 directories, 140 files

要在Android上实现RTSP拉流客户端,可以使用Android提供的MediaPlayer类来播放RTSP流。下面是一个简单的示例代码,可以用来播放RTSP流: ```java public class RTSPPlayerActivity extends Activity implements SurfaceHolder.Callback { private MediaPlayer mediaPlayer; private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private static final String RTSP_URL = "rtsp://example.com/video.mp4"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_rtsp_player); surfaceView = findViewById(R.id.surfaceView); surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(this); } @Override public void surfaceCreated(SurfaceHolder holder) { try { mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(RTSP_URL); mediaPlayer.setDisplay(holder); mediaPlayer.prepareAsync(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mediaPlayer.start(); } }); } catch (Exception e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { if (mediaPlayer != null) { mediaPlayer.release(); mediaPlayer = null; } } } ``` 在这个示例代码中,我们创建了一个MediaPlayer对象,并设置它的数据源为RTSP URL。然后,我们将MediaPlayer与SurfaceView关联,并在MediaPlayer准备好后开始播放。 需要注意的是,MediaPlayer的prepareAsync()方法是异步执行的,因此我们需要在OnPreparedListener中开始播放视频。 此外,还应该需要在manifest文件中添加网络权限,以便应用程序可以访问网络资源: ```xml <uses-permission android:name="android.permission.INTERNET" /> ``` 这样,就可以使用Android MediaPlayer来实现RTSP拉流客户端了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值