fer*_*cis 29 video android libvlc
有没有办法将VLC媒体播放器嵌入Android应用程序?我有几个问题:
1)我有一个视频流摄像头(来自RTSP),我不能在我的常规视频视频面板上播放它(抱歉,这个视频无法播放错误).但是,我安装了Android的VLC应用程序(测试版),我能够播放它.2)我的主要目标是移植使用VLC插件到Android的桌面java应用程序.我想用最少的努力完成这项任务(我有一些时间问题).
另一种方法是,有没有办法将VLC使用的编解码器嵌入到我的应用程序中?因为使用我的视频,结果会根据视频的格式而有所不同.我可以在我的视频视频中播放通过RTSP流式播放的其他视频.
我通过互联网搜索并找到了一个"libvlc",但也有一些关于android的libvlc未完成的注释(但这些注释属于过去的时间,即使在stackoverflow中也是如此).
Mar*_*uku 26
是的,如果你已经有了vlc-sdk.7z(用于android的libVLC),这里是嵌入式VLC到你的Android应用程序的示例项目.
如果你没有libVLC,这里是构建一个步骤.(在"sh compile.sh"完成后,"make vlc-sdk.7z"创建vlc-sdk.7z并解压缩到演示项目.
我把vlc-sdk.7z(仅包括armeabi-v7a)放在这里进行测试.
Cal*_*len 20
Maruku给出了一个很好的答案.
此外,如果你不想在你自己的机器上编译libVLC,那么mrmaffen就会把它扔到maven central上.所以在.gradle文件中包括
compile "de.mrmaffen:vlc-android-sdk:1.9.8"
Run Code Online (Sandbox Code Playgroud)
请记住,LibVLC可能不会100%更新,因为您没有自己编译源代码.
2019 年引入了 VLCVideoLayout 组件,该组件大大简化了将 VLC 嵌入到 android 所需的代码。
https://code.videolan.org/videolan/libvlc-android-samples
libVLC 由托管在 BinTray 上的官方 VideoLAN 项目提供。请参阅 build.gradle 文件以获取指向 Maven 存储库和包名称/版本的链接。
https://code.videolan.org/videolan/libvlc-android-samples/blob/master/build.gradle#L18 https://code.videolan.org/videolan/libvlc-android-samples/blob/master/java_sample /build.gradle#L34
在 build.gradle 中:
allprojects {
repositories {
google()
jcenter()
maven {
url 'https://jitpack.io'
}
maven {
url "https://dl.bintray.com/videolan/Android"
}
}
Run Code Online (Sandbox Code Playgroud)
}
在 app\build.gradle 中:
implementation "org.videolan.android:libvlc-all:3.1.12"
Run Code Online (Sandbox Code Playgroud)
在activity_camera.xml 中:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/background_dark"
android:keepScreenOn="true"
tools:context=".ui.main.cameras.CameraActivity">
<org.videolan.libvlc.util.VLCVideoLayout
android:id="@+id/videoLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
在 CameraActivity.java 中
import android.net.Uri
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.navArgs
import com.android.forum.R
import kotlinx.android.synthetic.main.activity_camera.*
import org.videolan.libvlc.LibVLC
import org.videolan.libvlc.Media
import org.videolan.libvlc.MediaPlayer
import java.io.IOException
import java.util.*
private const val USE_TEXTURE_VIEW = false
private const val ENABLE_SUBTITLES = true
class CameraActivity : AppCompatActivity() {
private var mLibVLC: LibVLC? = null
private var mMediaPlayer: MediaPlayer? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_camera)
mLibVLC = LibVLC(this, ArrayList<String>().apply {
add("--no-drop-late-frames")
add("--no-skip-frames")
add("--rtsp-tcp")
add("-vvv")
})
mMediaPlayer = MediaPlayer(mLibVLC)
}
override fun onStart() {
super.onStart()
mMediaPlayer?.attachViews(videoLayout, null, ENABLE_SUBTITLES, USE_TEXTURE_VIEW)
try {
val name = "login";
val password = "password";
val cameraUrl = "100.00.00.01:9982";
val rtspUrl = "rtsp://" + name + ":" + password + "@" + cameraUrl
val httpUrl = "https://archive.org/download/Popeye_forPresident/Popeye_forPresident_512kb.mp4"
val uri = Uri.parse(httpUrl) // ..whatever you want url...or even file fromm asset
Media(mLibVLC, uri).apply {
setHWDecoderEnabled(true, false);
addOption(":network-caching=150");
addOption(":clock-jitter=0");
addOption(":clock-synchro=0");
mMediaPlayer?.media = this
}.release()
mMediaPlayer?.play()
} catch (e: IOException) {
e.printStackTrace()
}
}
override fun onStop() {
super.onStop()
mMediaPlayer?.stop()
mMediaPlayer?.detachViews()
}
override fun onDestroy() {
super.onDestroy()
mMediaPlayer?.release()
mLibVLC?.release()
}
}
Run Code Online (Sandbox Code Playgroud)
ps 关于 rtsp,在我的情况下,它仅适用于 9982 端口(在链接中:rtsp://login:password@100.00.00.01:9982 而在 IE 中的链接看起来像:http ://100.00.00.01: 9981)
| 归档时间: |
|
| 查看次数: |
42602 次 |
| 最近记录: |