Я новичок в программировании, пишу приложение в котором должны конвертироваться wav и ogg в mp3 файлы, а так же была возможность склеивать mp3 файлы в один файл, знал что есть хороший инструмент для таких вещей - FFmpeg,
но не знал что будет так сложно с его установкой.
Я полазил по разным источникам ("stack overflow",
гитхаб , официальный сайт
ffmpeg )
нашел информацию что нужно добавлять зависимость в build.gradle(:app)
"""
dependencies {
implementation 'com.writingminds:FFmpegAndroid:0.3.2'
"""
так же добавлял такие строки в этот файл
"""
repositories {
flatDir {
dirs 'assets'
}
}
инициализировал этот класс в своей активности
val ffmpeg = FFmpeg.getInstance()
что добавило импорт автоматически
import com.github.hiteshsondhi88.ffmpeg
после чего я начал пытаться использовать эту библиотеку и наткнулся на то, что нужно какой-то бинарный файл установить в проект, пошел гуглить про него подробнее, нашел эти бинарные файлы на том же гитхабе вот
тут
создал в проекте папку - app/src/main/assets в которую закинул папки с названиями архитектур, которые содержат эти бинарные файлы, в коде сделал проверку на используемую устройством архитектуру чтобы подгружать тот бинарный файл который нужен(x86 или armeabi-v7a), задавал этому файлу права на всякий случай
val processBuilder = ProcessBuilder("chmod 755 ${file.absolutePath}") // "/data/user/0/com.example.мой_проект/files/ffmpeg"
val process = processBuilder.start()
после чего в Device File Explorer было видно что права изменились, но при выполнении кода, обработчик ошибок самого FFmpeg кидал в логи сообщение о том, что файл, на который он указывает(/data/user/0/com.example.мой_проект/files/ffmpeg), не может быть запущен из-за "error=13 permission denied".
Если кто-то сталкивался с установкой FFmpeg и успешно это делал - буду очень признателен если опишите где я ошибся и как делать правильно.
P.S. думаю много таких новичков как я не могут справиться с подобными проблемами, так что надеюсь существует ответ на мой вопрос, который поможет многим, пока я такого не нашел
либо он есть, но моя квалификация не позволяет его понять))