Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t将MediaController添加到VLC Android SDK_Android_Media Player_Vlc_Libvlc_Mediacontroller - Fatal编程技术网

Can';t将MediaController添加到VLC Android SDK

Can';t将MediaController添加到VLC Android SDK,android,media-player,vlc,libvlc,mediacontroller,Android,Media Player,Vlc,Libvlc,Mediacontroller,我尝试创建一个应用程序,允许用户在android设备上观看直播视频。从我的lil研究中,我发现VLCSDK很酷,因为它支持更多的协议。从你那里得到的密码 我能够让直播观看应用程序工作,但问题是我似乎无法在视频中添加控件(如暂停、播放、搜索等)。求你了,我需要你的帮助。谢谢 使用的VLCSDK是1.9.8,我也在研究这个问题。您需要自己实现这一点 只需在视频界面上为每个功能使用FrameLayout和视图(按钮?)。 然后调用VLCplay()stop()pause()等 如果你真的想潜入深海,那

我尝试创建一个应用程序,允许用户在android设备上观看直播视频。从我的lil研究中,我发现VLCSDK很酷,因为它支持更多的协议。从你那里得到的密码

我能够让直播观看应用程序工作,但问题是我似乎无法在视频中添加控件(如暂停、播放、搜索等)。求你了,我需要你的帮助。谢谢


使用的VLCSDK是1.9.8,我也在研究这个问题。您需要自己实现这一点

只需在视频界面上为每个功能使用
FrameLayout
和视图(按钮?)。 然后调用VLC
play()
stop()
pause()

如果你真的想潜入深海,那么就去获取大师的资料,看看是怎么做到的:

git clone

尝试以下操作:

public class Show_Array extends AppCompatActivity implements IVLCVout.Callback  {

    private TextView container_extension;
    private String stream_typee,stream_idd,container_extensionn ;
    private String SAMPLE_URL = "";
    public int mHeight;
    public int mWidth;
    private SurfaceView mVideoSurface = null;
    private FrameLayout sdk;
    private IVLCVout vlcVout;
    private LibVLC mLibVlc = null;
    private MediaPlayer mMediaPlayer = null;
    private int flag = 0;
    private ImageButton Resize;
    private Media media;
    private ArrayList<String> args;
    private SurfaceHolder mSurfaceHolderVideo;
    private MediaController controller;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.show__array);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        //Referances
        Resize = findViewById(R.id.Resize);
        mVideoSurface =  findViewById(R.id.video_surface);


        stream_typee = getIntent().getExtras().getString("stream_type");
        stream_idd = getIntent().getExtras().getString("stream_id");
        container_extensionn = getIntent().getExtras().getString("container_extension");

        args = new ArrayList<>();
        args.add("-vvv");
        mLibVlc = new LibVLC(this, args);
        mMediaPlayer = new MediaPlayer(mLibVlc);
        vlcVout = mMediaPlayer.getVLCVout();
        sdk = findViewById(R.id.sdk);


        Resize_video();
        setup_url();

        controller = new MediaController(this);
        controller.setMediaPlayer(playerInterface);
        controller.setAnchorView(mVideoSurface);
        mVideoSurface.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                controller.show(10000);
            }
        });

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMediaPlayer.release();
        mLibVlc.release();
    }

    void Resize_video()
    {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        mHeight = displayMetrics.heightPixels;
        mWidth = displayMetrics.widthPixels;
        Resize.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                flag+=1;
                int width = 1000;
                int height = 560;

                if(flag%2!=0) {

                    LinearLayout.LayoutParams myImageLayout = new LinearLayout.LayoutParams(width, height);
                    myImageLayout.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;
                    sdk.setLayoutParams(myImageLayout);
                    vlcVout.setWindowSize(width,height);

                }
                else
                {
                    LinearLayout.LayoutParams myImageLayout = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
                    myImageLayout.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;
                    sdk.setLayoutParams(myImageLayout);
                    vlcVout.setWindowSize(mWidth,mHeight);

                }
            }
        });
    }
    void setup_url()
    {
        //TextView
        container_extension = findViewById(R.id.URL);
        if (stream_typee.equals("live"))
        {
            SAMPLE_URL = "http://uautv.ru:2095/"+stream_typee+"/webserver/6tE@BzW73@sX/"+stream_idd+".ts";
            container_extension.setText( SAMPLE_URL);
        }else
        {
            SAMPLE_URL = "http://uautv.ru:2095/"+stream_typee+"/webserver/6tE@BzW73@sX/"+stream_idd+"."+container_extensionn;
            container_extension.setText( SAMPLE_URL);

        }
    }

    @Override
    protected void onStart() {
        super.onStart();
        vlcVout.setWindowSize(mWidth,mHeight);
        vlcVout.setVideoView(mVideoSurface);
        vlcVout.attachViews();
        mMediaPlayer.getVLCVout().addCallback(this);
        if(!SAMPLE_URL.isEmpty()) {
             media = new Media(mLibVlc, Uri.parse(SAMPLE_URL));
            mMediaPlayer.setMedia(media);
            media.release();
            mMediaPlayer.play();


        }else
        {
            Toast.makeText(getApplicationContext(),"URL EMPTY",Toast.LENGTH_LONG).show();
        }


    }

    @Override
    protected void onStop() {
        super.onStop();

        mMediaPlayer.stop();
        mMediaPlayer.getVLCVout().detachViews();
        mMediaPlayer.getVLCVout().removeCallback(this);


    }

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    @Override
    public void onNewLayout(IVLCVout vlcVout, int width, int height, int visibleWidth, int visibleHeight, int sarNum, int sarDen)
    { }

    @Override
    public void onSurfacesCreated(IVLCVout vlcVout) {
    }

    @Override
    public void onSurfacesDestroyed(IVLCVout vlcVout) {
    }
    private MediaController.MediaPlayerControl playerInterface = new MediaController.MediaPlayerControl() {
        public int getBufferPercentage() {
            return 0;
        }

        public int getCurrentPosition() {
            float pos = mMediaPlayer.getPosition();
            return (int)(pos * getDuration());
        }

        public int getDuration() {
            return (int)mMediaPlayer.getLength();
        }

        public boolean isPlaying() {
            return mMediaPlayer.isPlaying();
        }

        public void pause() {
            mMediaPlayer.pause();
        }

        public void seekTo(int pos) {
            mMediaPlayer.setPosition((float)pos / getDuration());
        }

        public void start() {
            mMediaPlayer.play();
        }

        public boolean canPause() {
            return true;
        }

        public boolean canSeekBackward() {
            return true;
        }

        public boolean canSeekForward() {
            return true;
        }

        @Override
        public int getAudioSessionId() {
            return 0;
        }
    };
}
公共类Show\u数组扩展AppCompative实现IVLCVout.Callback{
私有文本视图容器扩展;
私有字符串stream\u type、stream\u idd、container\u extensionn;
私有字符串SAMPLE_URL=“”;
公共卫生服务;
公共int mWidth;
私有SurfaceView mVideoSurface=null;
私有框架布局sdk;
私人IVLCVout vlcVout;
私有LibVLC mLibVlc=null;
私有媒体播放层=空;
私有int标志=0;
私有图像按钮调整大小;
私人媒体;
私有数组列表args;
私人surfaceholderervideo;
专用媒体控制器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,WindowManager.LayoutParams.FLAG_全屏);
setContentView(R.layout.show\u数组);
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u横向);
//推荐
Resize=findviewbyd(R.id.Resize);
mVideoSurface=findviewbyd(R.id.video\u surface);
流类型=getIntent().getExtras().getString(“流类型”);
stream_id=getIntent().getExtras().getString(“stream_id”);
容器扩展n=getIntent().getExtras().getString(“容器扩展”);
args=新的ArrayList();
参数添加(“-vvv”);
mLibVlc=新的LibVLC(此参数为args);
mMediaPlayer=新媒体播放器(mLibVlc);
vlcVout=mMediaPlayer.getVLCVout();
sdk=findViewById(R.id.sdk);
调整_视频的大小();
设置url();
控制器=新的MediaController(此);
控制器.setMediaPlayer(playerInterface);
控制器。setAnchorView(mVideoSurface);
mVideoSurface.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
控制器显示(10000);
}
});
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
mmediplayer.release();
mLibVlc.release();
}
void Resize_video()
{
DisplayMetrics DisplayMetrics=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
mHeight=displayMetrics.heightPixels;
mWidth=displayMetrics.widthPixels;
Resize.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
flag+=1;
整数宽度=1000;
内部高度=560;
如果(标志%2!=0){
LinearLayout.LayoutParams myImageLayout=新的LinearLayout.LayoutParams(宽度、高度);
myImageLayout.gravity=gravity.CENTER_水平| gravity.CENTER_垂直;
setLayoutParams(myImageLayout);
vlcVout.setWindowsSize(宽度、高度);
}
其他的
{
LinearLayout.LayoutParams myImageLayout=新建LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.MATCH_父级);
myImageLayout.gravity=gravity.CENTER_水平| gravity.CENTER_垂直;
setLayoutParams(myImageLayout);
vlcVout.setWindowSize(mWidth,mHeight);
}
}
});
}
无效设置\u url()
{
//文本视图
container_extension=findviewbyd(R.id.URL);
如果(流类型等于(“活动”))
{
示例URL=”http://uautv.ru:2095/“+stream_type+”/webserver/6tE@BzW73@sX/“+stream_idd+”.ts”;
container_extension.setText(示例URL);
}否则
{
示例URL=”http://uautv.ru:2095/“+stream_type+”/webserver/6tE@BzW73@sX/“+流+idd+”+容器扩展n;
container_extension.setText(示例URL);
}
}
@凌驾
受保护的void onStart(){
super.onStart();
vlcVout.setWindowSize(mWidth,mHeight);
vlcVout.setVideoView(mVideoSurface);
vlcVout.attachViews();
mmediplayer.getVLCVout().addCallback(此);
如果(!SAMPLE_URL.isEmpty()){
媒体=新媒体(mLibVlc,Uri.parse(SAMPLE_URL));
mmediplayer.setMedia(媒体);
媒体发布();
播放者播放();
}否则
{
Toast.makeText(getApplicationContext(),“URL为空”,Toast.LENGTH_LONG.show();
}
}
@凌驾
受保护的void onStop(){
super.onStop();
mmediplayer.stop();
mmediplayer.getVLCVout().detachViews();
mmediplayer.getVLCVout().removeCallback(此);
}
@TargetApi(Build.VERSION\u code.JELLY\u BEAN\u MR1)
@凌驾
公共空间布局(IVLCVout vlcVout、int-width、int-height、int-visibleWidth、int-visibleHeight、int-sarNum、int-sarDen)
{ }
@凌驾
已创建表面上的公共空白(IVLCVout vlcVout){
}
@凌驾
公共空间