FFmpegMediaMetadataRetriever из внешнего хранилища? Студия Android / Котлин - PullRequest
0 голосов
/ 01 июня 2019

Итак, я делаю свое первое приложение для 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 голосов
/ 02 июня 2019

Итак, я думаю, что моя проблема возникла из-за попытки пропустить видео через намерение и затем запустить MetadataRetriever. Я решил это, получив всю информацию в предыдущем упражнении перед передачей каждого значения в качестве дополнительного для использования на следующем экране.

...