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

如何在Android的libVLC中播放字节流,android,libvlc,Android,Libvlc,我想在libVLC for Android中用媒体播放器播放字节流。但我找不到任何可以“注入”字节流的接口或类。我唯一的回放机会是提供文件描述符、文件路径或URI Android的本机媒体播放器提供了接口setDataSource(MediaDataSource dataSource),通过扩展MediaDataSource类,可以在该接口中注入字节流。我在Android的libVLC中也有类似的可能性吗?您正在寻找的libVLC API是 然而,目前似乎还没有向Java公开与Java流参数一起

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


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

您正在寻找的libVLC API是

然而,目前似乎还没有向Java公开与Java流参数一起使用。我相信这需要您在libvlcjni绑定中实现

您可以从使用该API的现有代码中获得灵感

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;
    }
}

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