Android从VideoView获取视频源路径

ihr*_*pin 6 android video-streaming android-widget android-webview android-videoview

我有VideoView实例.我需要知道它的视频源路径.

可能吗?有谁能够帮我?

我在WebChromeClient类中的代码是:

    @Override
public void onShowCustomView(final View view, final CustomViewCallback callback) {
    super.onShowCustomView(view, callback);

    if (view instanceof FrameLayout) {
        final FrameLayout frame = (FrameLayout) view;
        if (frame.getFocusedChild() instanceof VideoView) {
            // get video view

            video = (VideoView) frame.getFocusedChild();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何获取视频对象的视频源路径?

Tom*_*mik 21

VideoView没有视频路径/ Uri的getters.你唯一的机会就是使用反射.将Uri存储在private Uri mUri.要访问它,您可以使用:

Uri mUri = null;
try {
    Field mUriField = VideoView.class.getDeclaredField("mUri");
    mUriField.setAccessible(true);
    mUri = (Uri)mUriField.get(video);
} catch(Exception e) {}
Run Code Online (Sandbox Code Playgroud)

请记住,私有字段可能会在未来的Android版本中发生变化.

  • 托米克,非常感谢!这是非常有趣的解决方案.遗憾的是VideoView没有这个领域的公共吸气剂 (5认同)

小智 9

如果你不喜欢使用像这样的私有方法,你可以覆盖setVideoUriMethodin VideoView:

public class MyVideoView extends VideoView 
{
    Uri uri;

    @Override
    public void setVideoURI (Uri uri)
    {
        super.setVideoURI(uri);
        this.uri = uri;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以根据需要访问视频的uri.希望有所帮助.