Когда pip активен и я пытаюсь запустить новое видео, у меня произошел сбой в проигрывателе Mpv. Как я могу решить эту проблему, если я попытаюсь остановить инициализацию mpv, тогда я не получу ни просмотра видео, ни какого-либо решения, связанного с этим или кто-нибудь знает перед началом активности Mpv, как я могу деактивировать PIP и снова инициализировать
вот код из фрагмента, где я пытаюсь открыть активность Mpv, и в активности есть метод PIP
`
private fun playFile(filepath: String) {
val i: Intent
if (filepath.startsWith("content://")) {
i = Intent(Intent.ACTION_VIEW, Uri.parse(filepath))
} else {
i = Intent()
i.putExtra("filepath", filepath)
}
i.setClass(requireContext(), MPVActivity::class.java)
playerLauncher.launch(i)
}`
а вот метод создания в Mpv Activity
`
override fun onCreate(icicle: Bundle?) { super.onCreate(icicle)
Utils.copyAssets(this)
BackgroundPlaybackService.createNotificationChannel(this)
binding = PlayerBinding.inflate(layoutInflater)
setContentView(binding.root)
// Init controls to be hidden and view fullscreen
hideControls()
// Initialize listeners for the player view
initListeners()
gestures = TouchGestures(this)
// set up initial UI state
readSettings()
onConfigurationChanged(resources.configuration)
run {
// edge-to-edge & immersive mode
WindowCompat.setDecorFitsSystemWindows(window, false)
val insetsController = WindowCompat.getInsetsController(window, window.decorView)
insetsController.systemBarsBehavior =
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE))
binding.topPiPBtn.visibility = View.GONE
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN))
binding.topLockBtn.visibility = View.GONE
if (showMediaTitle)
binding.controlsTitleGroup.visibility = View.VISIBLE
updateOrientation(true)
// Parse the intent
val filepath = parsePathFromIntent(intent)
if (intent.action == Intent.ACTION_VIEW) {
parseIntentExtras(intent.extras)
}
if (filepath == null) {
Log.e(TAG, "No file given, exiting")
showToast(getString(R.string.error_no_file))
finishWithResult(RESULT_CANCELED)
return
}
player.addObserver(this)
player.initialize(filesDir.path, cacheDir.path)
player.playFile(filepath)
mediaSession = initMediaSession()
updateMediaSession()
BackgroundPlaybackService.mediaToken = mediaSession?.sessionToken
audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
volumeControlStream = STREAM_TYPE
// Handle audio focus
val req = with (AudioFocusRequestCompat.Builder(AudioManagerCompat.AUDIOFOCUS_GAIN)) {
setAudioAttributes(with (AudioAttributesCompat.Builder()) {
// N.B.: libmpv may use different values in ao_audiotrack, but here we always pretend to be music.
setUsage(AudioAttributesCompat.USAGE_MEDIA)
setContentType(AudioAttributesCompat.CONTENT_TYPE_MUSIC)
build()
})
setOnAudioFocusChangeListener(audioFocusChangeListener)
build()
}
val res = AudioManagerCompat.requestAudioFocus(audioManager!!, req)
if (res == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
audioFocusRequest = req
} else {
Log.v(TAG, "Audio focus not granted")
if (!ignoreAudioFocus)
onloadCommands.add(arrayOf("set", "pause", "yes"))
}
}`
и вот журнал, который я получаю после сбоя, в котором говорится, что Mpv уже инициализирован, и эта строка приводит к сбою проигрывателя активности
Я просто хочу, как я могу отключиться пункт перед входом в активность Mpv
Выйти из системы
2024-10-07 21:40:19.476 18179-18179 mpv is.xyz.mpv E mpv is already initialized
2024-10-07 21:40:19.478 18179-18216 gralloc4 is.xyz.mpv I @set_metadata: update dataspace from GM (0x00000000 -> 0x08010000)
2024-10-07 21:40:19.478 18179-18511 gralloc4 is.xyz.mpv I @set_metadata: update dataspace from GM (0x00000000 -> 0x08010000)
2024-10-07 21:40:19.510 18179-18511 libc is.xyz.mpv A Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 18511 (Thread-7), pid 18179 (is.xyz.mpv)
2024-10-07 21:40:19.511 18179-18190 libc++abi is.xyz.mpv E Pure virtual function called!
2024-10-07 21:40:19.669 18179-18234 libc is.xyz.mpv A FORTIFY: pthread_mutex_lock called on a destroyed mutex (0x7ee314ea68)
2024-10-07 21:40:19.669 18179-18235 libc is.xyz.mpv A FORTIFY: pthread_mutex_lock called on a destroyed mutex (0x7ee314ea68)
Подробнее здесь: https://stackoverflow.com/questions/790 ... -is-active
Сбой при открытии видео, когда PiP активен. ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1728536672
Anonymous
Когда pip активен и я пытаюсь запустить новое видео, у меня произошел сбой в проигрывателе Mpv. Как я могу решить эту проблему, если я попытаюсь остановить инициализацию mpv, тогда я не получу ни просмотра видео, ни какого-либо решения, связанного с этим или кто-нибудь знает перед началом активности Mpv, как я могу деактивировать PIP и снова инициализировать
вот код из фрагмента, где я пытаюсь открыть активность Mpv, и в активности есть метод PIP
`
private fun playFile(filepath: String) {
val i: Intent
if (filepath.startsWith("content://")) {
i = Intent(Intent.ACTION_VIEW, Uri.parse(filepath))
} else {
i = Intent()
i.putExtra("filepath", filepath)
}
i.setClass(requireContext(), MPVActivity::class.java)
playerLauncher.launch(i)
}`
а вот метод создания в Mpv Activity
`
override fun onCreate(icicle: Bundle?) { super.onCreate(icicle)
Utils.copyAssets(this)
BackgroundPlaybackService.createNotificationChannel(this)
binding = PlayerBinding.inflate(layoutInflater)
setContentView(binding.root)
// Init controls to be hidden and view fullscreen
hideControls()
// Initialize listeners for the player view
initListeners()
gestures = TouchGestures(this)
// set up initial UI state
readSettings()
onConfigurationChanged(resources.configuration)
run {
// edge-to-edge & immersive mode
WindowCompat.setDecorFitsSystemWindows(window, false)
val insetsController = WindowCompat.getInsetsController(window, window.decorView)
insetsController.systemBarsBehavior =
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE))
binding.topPiPBtn.visibility = View.GONE
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN))
binding.topLockBtn.visibility = View.GONE
if (showMediaTitle)
binding.controlsTitleGroup.visibility = View.VISIBLE
updateOrientation(true)
// Parse the intent
val filepath = parsePathFromIntent(intent)
if (intent.action == Intent.ACTION_VIEW) {
parseIntentExtras(intent.extras)
}
if (filepath == null) {
Log.e(TAG, "No file given, exiting")
showToast(getString(R.string.error_no_file))
finishWithResult(RESULT_CANCELED)
return
}
player.addObserver(this)
player.initialize(filesDir.path, cacheDir.path)
player.playFile(filepath)
mediaSession = initMediaSession()
updateMediaSession()
BackgroundPlaybackService.mediaToken = mediaSession?.sessionToken
audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
volumeControlStream = STREAM_TYPE
// Handle audio focus
val req = with (AudioFocusRequestCompat.Builder(AudioManagerCompat.AUDIOFOCUS_GAIN)) {
setAudioAttributes(with (AudioAttributesCompat.Builder()) {
// N.B.: libmpv may use different values in ao_audiotrack, but here we always pretend to be music.
setUsage(AudioAttributesCompat.USAGE_MEDIA)
setContentType(AudioAttributesCompat.CONTENT_TYPE_MUSIC)
build()
})
setOnAudioFocusChangeListener(audioFocusChangeListener)
build()
}
val res = AudioManagerCompat.requestAudioFocus(audioManager!!, req)
if (res == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
audioFocusRequest = req
} else {
Log.v(TAG, "Audio focus not granted")
if (!ignoreAudioFocus)
onloadCommands.add(arrayOf("set", "pause", "yes"))
}
}`
и вот журнал, который я получаю после сбоя, в котором говорится, что Mpv уже инициализирован, и эта строка приводит к сбою проигрывателя активности
Я просто хочу, как я могу отключиться пункт перед входом в активность Mpv
Выйти из системы
2024-10-07 21:40:19.476 18179-18179 mpv is.xyz.mpv E mpv is already initialized
2024-10-07 21:40:19.478 18179-18216 gralloc4 is.xyz.mpv I @set_metadata: update dataspace from GM (0x00000000 -> 0x08010000)
2024-10-07 21:40:19.478 18179-18511 gralloc4 is.xyz.mpv I @set_metadata: update dataspace from GM (0x00000000 -> 0x08010000)
2024-10-07 21:40:19.510 18179-18511 libc is.xyz.mpv A Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 18511 (Thread-7), pid 18179 (is.xyz.mpv)
2024-10-07 21:40:19.511 18179-18190 libc++abi is.xyz.mpv E Pure virtual function called!
2024-10-07 21:40:19.669 18179-18234 libc is.xyz.mpv A FORTIFY: pthread_mutex_lock called on a destroyed mutex (0x7ee314ea68)
2024-10-07 21:40:19.669 18179-18235 libc is.xyz.mpv A FORTIFY: pthread_mutex_lock called on a destroyed mutex (0x7ee314ea68)
Подробнее здесь: [url]https://stackoverflow.com/questions/79070350/crash-when-opening-video-while-pip-is-active[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия