1、請問大家android應該用什麼rtsp的伺服器呢?
編碼是在伺服器端的把,也就是pc端。你伺服器是用什麼寫的?
2、android 怎麼播放rtsp流
package com.video.rtsp;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.VideoView;
public class rtspActivity extends Activity {
/** Called when the activity is first created. */
Button playButton ;
VideoView videoView ;
EditText rtspUrl ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
rtspUrl = (EditText)this.findViewById(R.id.url);
playButton = (Button)this.findViewById(R.id.start_play);
playButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
PlayRtspStream(rtspUrl.getEditableText().toString());
}
});
videoView = (VideoView)this.findViewById(R.id.rtsp_player);
}
//play rtsp stream
private void PlayRtspStream(String rtspUrl){
videoView.setVideoURI(Uri.parse(rtspUrl));
videoView.requestFocus();
videoView.start();
}
}
3、ijkplayer支持rtsp嗎
ijkplayer是Bilibili基於ffmpeg開發並開源的輕量級視頻播放器,支持播放本地網路視頻,也支持流媒體播放。支持Android&iOS。
ijkplayer的編譯這里不多闡述,我也是直接獲取別人編譯完成的so庫文件,直接使用的。如果你對ijkplayer的編譯感興趣,可以百度一下,有很多文章。
使用ijkplayer
導包
ijkplayer源碼官方下載地址:https://github.com/Bilibili/ijkplayer
上面是官方提供的ijkplayer的源碼地址,但是它是沒有編譯過的。下面我給大家分享一份編譯好的ijkplayer源碼,由於比較大,分了三個包才上傳完成,需要三個包都下載後才能一起解壓:
編譯好的ijkplayer.part1
編譯好的ijkplayer.part2
編譯好的ijkplayer.part3
我們下載完成,進入android/ijkplayer目錄:
ijkplayer-java:ijkplayer的一些操作封裝及定義。這裡面是通用的API介面,裡面最主要的是IMediaPlayer,它是用來渲染顯示多媒體的。
ijkplayer-exo:google開源的一個新的播放器ExoPlayer,在Demo中和ijkplayer對比用的。通過安裝ijkplayer可以發現setting裡面可以選擇不同player來渲染多媒體顯示,該模塊下面就是一個MediaPlayer。
ijkplayer-example:測試程序
ijkplayer-{arch}:編譯出來的各個版本的.so文件。
官方提供的Demo的代碼還是挺多的,甚至還用了otto,需要對官方的demo進行精簡,去除一些用不到的代碼。
首先需要的是ijkplayer-{arch}、ijkplayer-Java兩個庫。exo是Google提供的新的播放器,這里不需要,直接砍掉。其次是ijkplayer-example里的,我們需要的只有tv.danmaku.ijk.media.example.widget.media包下的部分類。
註:
鏈接庫ijkplayer-arm64,ijkplayer-armv5,ijkplayer-armv7a,ijkplayer-x86,ijkplayer-x86_64是不同體系架構的動態鏈接庫,在當前工程結構裡面作為一個模塊,如果不想做兼容多平台問題,可以刪除其他目錄結構,單獨保留自己需要的平台目錄。
新建一個工程:
(1)把ijkplayer-armv7a/src/main/libs下的文件拷貝到新工程app目錄的libs下。
(2)把ijkplayer-java/build/outputs/aar/ijkplayer-java-release.aar復制到新工程app目錄的libs下。
(3)修改APP下的build.gradle, 主要設置.so及.aar的位置:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.hx.ijkplayer_demo"
minSdkVersion 14
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs'] /**在libs文件夾下找so文件*/
}
}
}
repositories {
mavenCentral()
flatDir {
dirs 'libs' /**在libs文件夾下找aar文件*/
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', mole: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
compile(name: 'ijkplayer-java-release', ext: 'aar') /**編譯ijkplayer-java-release.aar文件*/
}
(4)復制ijkplayer-example下面的tv.danmaku.ijk.media.example.widget.media到新的工程,刪掉一些不需要類。
(5)IjkVideoView裡面還是有很多如exo等沒用的東西,刪!具體可以參見我後面的Demo。
(6)Manifest
...
<activity android:name=".MainActivity"
android:screenOrientation="sensorLandscape"
android:configChanges="orientation|keyboardHidden">
...
</activity>
...
<uses-permission android:name="android.permission.INTERNET"/>
4、ffmpeg交叉編譯android,rtsp協議sdp流播放問題
pthread support is required
這個問題是交叉編譯的時候你沒開啟pthread
也就是編譯時加上
--enable-pthread
第二個問題不是問題是個警告或者提示
字面意思就是:從bitrate估算,可能不準確
5、android 如何播放rtsp://110.80.31.70:6000/channe1
可以用webView,載入HTML,通過video來播放。
一、需要在AndroidManifest.xml文件中聲明需要使用HardwareAccelerate, 可以細化到Activity級別,如果不需要的View可以聲明不要用加速,但是需要在代碼中做
具體如下:
1如果要聲明整個應用都要加速:< application ... android:hardwareAccelerated ="true">
2.如果要在Activity中聲明,則:
<activity ... android:hardwareAccelerated="true" >
Window, getWindow.setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
3.如果application或者activity都申明了要硬體加速,但是為了某些原因(比如省電?),一些View不需要硬體加速的話, view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
二、 需要在AndroidManifest.xml文件中用上<use-sdk></use-sdk>標簽,而且如果是空的還不行,必須寫上targetSDK或者minSDK,但是我試驗過,不管寫版本是多少都沒有關系。理論上說,Android應該是從3.0( API Level 11)開始可以對2D渲染加速,但是我把targetSDK設置為5都可以使用的,但是這個標簽不寫還不行。
一般來說,上面的操作做了,就可以使用video標簽播放視屏了,如果要支持全屏,還需要做一點操作: 給webview一個WebChromeClient對象,這個WebChromeClient對象需要實現onShowCustomView和onHideCustomView方法
6、android系統下支持rtsp的流媒體播放器有哪些
有挺多啊,比如VLC、比如Vitamio做出來的VPlayer,這些都可以的
7、android如何通過rtsp查看網路攝像頭
rtsp視頻直播流在android上可以直接播放...但是要注意:要rtsp的幀數不要太高,不然解碼解不動...
8、android 怎麼播放rtsp流
第一步:
獲取asset文件流
第二步(有時可跳過這層)s:
中間轉化層,轉化為中間文件類型,如圖片就是bitmap
第三步:
將中間文件存入本地sd卡,或直接將asset文件流存入本地SdCard