gpt4 book ai didi

安卓 MediaExtractor RTSP

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:01 25 4
gpt4 key购买 nike

我正在尝试开发一个应用程序,通过 RTSP(实时流协议(protocol))从安全摄像头下载实时视频流。

我已成功连接到相机并可以在 VideoView 中查看视频。但是,我想要对数据流进行低级访问,因此一直在研究 MediaExtractor API。

当我将数据源设置为 RTSP URI 时,我收到 IOException - 无法打开文件。这是令人困惑的,因为相同的 URI 在 VideoView 和其他媒体播放器(如 VLC)中正常工作。我假设 VideoView 必须在“幕后”使用相同的 MediaExtractor 选项。 MediaExtractor 是否支持 RTSP?我期待 MediaExtractor 打开我的 RTSP URI。我在文档中看不到任何不受支持的地方。如果我遗漏了什么,请指出正确的方向。我看到还有其他可用的库,例如 FFmpeg、VLC 和 Live555,但我尝试尽可能使用 Android SDK。

代码(Kotlin):

val extractor = MediaExtractor()
extractor.setDataSource("rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov")

错误:

2018-12-11 15:43:23.259 21127-21127/com.crichq.myactionreplayhub E/FileSource: Failed to open file 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov'. (No such file or directory)
2018-12-11 15:43:23.260 21127-21127/com.crichq.myactionreplayhub D/AndroidRuntime: Shutting down VM
2018-12-11 15:43:23.262 21127-21127/com.crichq.myactionreplayhub E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.crichq.myactionreplayhub, PID: 21127
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.crichq.myactionreplayhub/com.crichq.myactionreplayhub.MediaExtractorActivity}: java.io.IOException: Failed to instantiate extractor.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: java.io.IOException: Failed to instantiate extractor.
at android.media.MediaExtractor.nativeSetDataSource(Native Method)
at android.media.MediaExtractor.setDataSource(MediaExtractor.java:202)
at com.crichq.myactionreplayhub.MediaExtractorActivity.onCreate(MediaExtractorActivity.kt:16)
at android.app.Activity.performCreate(Activity.java:7174)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) 
at android.app.ActivityThread.-wrap11(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) 
at android.os.Handler.dispatchMessage(Handler.java:105) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6944) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 

Android 版本:

compileSdkVersion 28 (Android 9.0)

Android 测试设备:

三星 Galaxy S7 Edge(运行 Android 8.0.0)

最佳答案

MediaExtractor 仅支持 HTTP 或本地文件

https://developer.android.com/reference/android/media/MediaExtractor.html#setDataSource(java.lang.String)

public void setDataSource(字符串路径)设置要使用的数据源(文件路径或 http URL)。

path String: 文件的路径,或者流的http URL

关于安卓 MediaExtractor RTSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53716893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com