如何使用setVideoURI从外部设备流式传输来自android videoview的帧?

时间:2013-09-26 13:17:55

标签: android bitmap streaming android-videoview

我正在制作和Android应用程序,从外部源流式传输视频,并在我的活动中的视频视图中显示它。 流工作正常,但我无法在我的SD卡上保存帧。这是我的代码,其中vv是videoview:

int currentPosition = vv.getCurrentPosition(); //in millisecond

        MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
        mediaMetadataRetriever.setDataSource(viewSource);

        Bitmap bmFrame = mediaMetadataRetriever.getFrameAtTime(currentPosition * 1000); //unit in microsecond

        if(bmFrame == null){
             Toast.makeText(MainActivity.this, 
               "bmFrame == null!", 
               Toast.LENGTH_LONG).show();
            }else{
             AlertDialog.Builder myCaptureDialog = 
               new AlertDialog.Builder(MainActivity.this);
             ImageView capturedImageView = new ImageView(MainActivity.this);
             capturedImageView.setImageBitmap(bmFrame);
             LayoutParams capturedImageViewLayoutParams = 
               new LayoutParams(LayoutParams.WRAP_CONTENT, 
                 LayoutParams.WRAP_CONTENT);
             capturedImageView.setLayoutParams(capturedImageViewLayoutParams);

             myCaptureDialog.setView(capturedImageView);
             myCaptureDialog.show();

这是我的视频测试网址:

public String viewSource = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov";

我尝试为mediametadataretriver的'setdatasource'设置viewSourc,就像我的视频的url一样,但它总是返回null位图......

问题在哪里?

三江源

1 个答案:

答案 0 :(得分:3)

这个类有很多问题,我认为其中一个是从外部源检索的帧。我建议你使用this external library。您只需将其添加到项目中,然后像使用mediametadataretriever类一样使用该类。

希望它有用