FFmpegMediaMetadataRetriever从外部存储? Android Studio /科特林

时间:2019-06-01 12:52:21

标签: android android-ffmpeg mediametadataretriever

因此,我正在制作我的第一个Android应用程序,并且试图使它允许用户从他们的画廊中挑选视频,然后再在下一个活动中查看视频和视频的当前详细信息。 我的问题是,当我使用FFmpegMediaMetadataRetriever并将其传递给视频的文件路径时,收到错误java.lang.IllegalArgumentException: setDataSource failed: status = 0xFFFFFFFF。 我已经通过小道消息听说这意味着我的文件路径无效。当我Log.d的文件路径时,我得到content://media/external/file/3565,对我来说,它看起来像是正确的文件路径! 我希望有人能帮助我解决这个问题。

这是我针对上下文的活动课:

class NewProject : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_new_project)

        val videoPath = intent.getStringExtra("video")
        initVideo(videoPath)

        backButtonText.setOnClickListener{ goBack() }
    }

    private fun goBack() {
        val intent = Intent(this,MainActivity::class.java)
        startActivity(intent)
    }

    private fun initVideo(videoPath:String) {
        newProjVideoView.setVideoPath(videoPath)
        newProjVideoView.start()
        newProjVideoView.setOnCompletionListener {
            newProjVideoView.pause()
        }
        getVideoMetadata(videoPath)
    }

    private fun getVideoMetadata(videoPath: String) {
        try {
            e("videoPath", videoPath)
            val receiver = FFmpegMediaMetadataRetriever()
            receiver.setDataSource(videoPath)

        } catch (e:IOException) {
            e("retrieve1","There was an issue", e)
        }
    }
}

我也很高兴听到有关我的代码的任何建设性反馈! 请,谢谢你,祝你有美好的一天!

1 个答案:

答案 0 :(得分:0)

所以,我认为我的问题源于试图通过意图传递视频然后运行MetadataRetriever。我通过获取上一个活动中的所有信息来解决此问题,然后再将每个值作为一个额外值传递给下一个屏幕。