首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Android的libVLC中播放字节流

如何在Android的libVLC中播放字节流
EN

Stack Overflow用户
提问于 2020-09-23 11:13:28
回答 1查看 249关注 0票数 0

我想在安卓的libVLC中回放一个媒体播放器的字节流。但我没有找到任何接口或类,我可以“注入”一个字节流。我唯一的回放机会是提供一个文件描述符、一个文件路径或一个URI。

Android的本地媒体播放器提供了接口setDataSource(MediaDataSource dataSource),其中可以通过扩展类MediaDataSource注入字节流。我是否有类似的可能性在libVLC的安卓?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-23 13:32:02

您要寻找的libVLC API是回调

但是,目前似乎无法将Java与Java流参数一起使用。我相信,这需要由您在libvlcjni绑定中实现。

通过使用该API,您可以从现有代码中获得灵感。

代码语言:javascript
复制
void
Java_org_videolan_libvlc_Media_nativeNewFromFdWithOffsetLength(
    JNIEnv *env, jobject thiz, jobject libVlc, jobject jfd, jlong offset, jlong length)
{
    vlcjni_object *p_obj;
    int fd = FDObject_getInt(env, jfd);
    if (fd == -1)
        return;

    p_obj = VLCJniObject_newFromJavaLibVlc(env, thiz, libVlc);
    if (!p_obj)
        return;

    p_obj->u.p_m =
        libvlc_media_new_callbacks(p_obj->p_libvlc,
                                   media_cb_open,
                                   media_cb_read,
                                   media_cb_seek,
                                   media_cb_close,
                                   p_obj);


    if (Media_nativeNewCommon(env, thiz, p_obj) == 0)
    {
        vlcjni_object_sys *p_sys = p_obj->p_sys;
        p_sys->media_cb.fd = fd;
        p_sys->media_cb.offset = offset;
        p_sys->media_cb.length = length >= 0 ? length : UINT64_MAX;
    }
}

https://github.com/videolan/vlc-android/blob/f05db3f9b51e64061ff73c794e6a7bfb44f34f65/libvlc/jni/libvlcjni-media.c#L284-L313

libvlcsharp已经实现了这一点,包括安卓平台,但它是.NET。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64026708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档