【问题标题】:How not to seek to keyframes如何不寻找关键帧
【发布时间】:2014-02-14 15:07:46
【问题描述】:

我试图在我的 Android 应用程序中找到一种逐帧(不仅是关键帧)搜索的解决方案。

  1. 方法:VideoView 的简单android sdk:
    在这里,我从VideoViewpauseonPreparedListenerpause 中得到了基类MediaPlayeronSeekCompleteListener,播放后立即开始播放并移动到首选位置。
    问题:只寻找关键帧!

  2. 方法:MediaMetaRetriever: 我有这样的东西:

    MediaMetadataRetriever retriever;
    long Position;
    ImageView video;
    TextView lbPosition;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        video = (ImageView)findViewById(R.id.imVideo);
        lbPosition = (TextView)findViewById(R.id.lbPosition);
        bnTake = (Button)findViewById(R.id.bntake);
        retriever.setDataSource(this, Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.vid));
    
        video.setOnClickListener(new ImageView.OnClickListener() {
            @Override
            public void onClick(View arg0) {
               Position += 100000;
               Bitmap frame = retriever.getFrameAtTime(Position, MediaMetadataRetriever.OPTION_CLOSEST);
               video.setImageBitmap(frame);
               lbPosition.setText(String.valueOf(Position));
           }            
        });
    
        bnTake.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
                startActivityForResult(takeVideoIntent, 123123);
            }
        }); 
    }
    

当我在retriever.getFrameAtTime 中使用OPTION_CLOSESTS 时,它会给我一个getFrameAtTime: videoFrame is a NULL 指针错误。当我不使用此选项时,它会通过关键帧。

可能的解决方案:

  1. 方法:录制具有更多关键帧的视频。如果我要在我的 android 应用程序中录制具有更高 keyframe rate 的视频,这可能是一个解决方案吗?这可能吗?

  2. 方法(我没有尝试过!):我听说过一些使用 FFMPEG 的 android 视频播放器 3rd 方库。是否有任何库可以在暂停状态下查找并更新视频在屏幕上的位置?

【问题讨论】:

    标签: java android video-capture video-player


    【解决方案1】:

    【讨论】:

    • 你的 api 完美地满足了我的需求!我不是在 stackoverflow 上感谢所有人的人,但是这个 api 救了我的命!!还有一个问题:如何使用来自 raw 的内容 uri 或视频?
    • 我很高兴听到这个消息。我将检查内容虹膜和原始资源,并在今天回复您。
    • 我添加了对 setDataSource(Context ctx, Uri uri) 的支持,您可以将此方法用于内容 URI。 wseemann.github.io/FFmpegMediaMetadataRetriever/apidocs/…。该库目前不支持原始资源,抱歉。
    猜你喜欢
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多