我想在安卓的libVLC中回放一个媒体播放器的字节流。但我没有找到任何接口或类,我可以“注入”一个字节流。我唯一的回放机会是提供一个文件描述符、一个文件路径或一个URI。
Android的本地媒体播放器提供了接口setDataSource(MediaDataSource dataSource),其中可以通过扩展类MediaDataSource注入字节流。我是否有类似的可能性在libVLC的安卓?
发布于 2020-09-23 13:32:02
您要寻找的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已经实现了这一点,包括安卓平台,但它是.NET。
https://stackoverflow.com/questions/64026708
复制相似问题