본문 바로가기
IT 모바일 Gear Up

kotlin 동영상 mp3 변환 안드로이드 앱 만들기

by sk2nd 2024. 7. 7.

목차

    kotlin 동영상 MP3 변환하는 안드로이드 앱 만들기

    스마트폰이 대중화되면서 다양한 멀티미디어 콘텐츠를 손쉽게 접근할 수 있게 되었습니다. 그중에서도 동영상에서 오디오만 추출하여 MP3로 변환하는 기능은 많은 사용자들이 필요로 하는 기능 중 하나입니다. 이번 포스팅에서는 kotlin 안드로이드 앱을 통해 동영상을 MP3로 변환하는 방법을 단계별로 설명하겠습니다.

    kotlin 동영상 mp3변환 앱 만들기 요구 사항

    앱을 만들기 위해 필요한 기본적인 요구 사항은 다음과 같습니다:

    1. 안드로이드 스튜디오 설치
    2. Java 또는 Kotlin 프로그래밍 언어에 대한 기본적인 이해
    3. FFMPEG 라이브러리 사용

    단계별 설명

    1. 프로젝트 설정

    안드로이드 스튜디오를 열고 새로운 프로젝트를 생성합니다. 프로젝트 생성 시 다음과 같은 설정을 진행합니다:

    • 프로젝트 이름: VideoToMp3Converter
    • 언어: Kotlin (또는 Java)
    • Minimum API Level: API 21 (Lollipop)

    2. FFMPEG 라이브러리 추가

    FFMPEG는 다양한 멀티미디어 포맷을 처리할 수 있는 강력한 라이브러리입니다. 이를 사용하여 동영상을 MP3로 변환할 수 있습니다. FFMPEG 라이브러리를 안드로이드 프로젝트에 추가하기 위해 FFmpeg Android Java 라이브러리를 사용하겠습니다.

    프로젝트의 build.gradle 파일에 다음 의존성을 추가합니다:

    implementation 'com.writingminds:FFmpegAndroid:0.3.2'

    3. 권한 설정

    동영상을 변환하기 위해서는 외부 저장소에 접근할 수 있는 권한이 필요합니다. AndroidManifest.xml 파일에 다음 권한을 추가합니다:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    또한, 안드로이드 6.0 이상에서는 런타임 권한 요청이 필요합니다. 이를 처리하기 위해 다음 코드를 MainActivity.kt에 추가합니다:

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), 1)
    }
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)
    }

    4. UI 디자인

    사용자 인터페이스(UI)는 동영상 파일을 선택하고 변환 버튼을 포함해야 합니다. activity_main.xml 파일을 다음과 같이 수정합니다:

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="16dp">
    
        <Button
            android:id="@+id/btnSelectVideo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Select Video"/>
    
        <Button
            android:id="@+id/btnConvert"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Convert to MP3"
            android:visibility="gone"/>
    </LinearLayout>

    5. 동영상 선택 기능 구현

    동영상을 선택하기 위해 btnSelectVideo 버튼에 클릭 리스너를 추가하고, Intent를 사용하여 파일 선택기를 엽니다:

    btnSelectVideo.setOnClickListener {
        val intent = Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI)
        startActivityForResult(intent, REQUEST_CODE_PICK_VIDEO)
    }

    선택된 동영상 파일의 경로를 얻기 위해 onActivityResult 메서드를 오버라이드합니다:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == REQUEST_CODE_PICK_VIDEO && resultCode == Activity.RESULT_OK) {
            val selectedVideoUri = data?.data
            selectedVideoPath = getPath(selectedVideoUri)
            btnConvert.visibility = View.VISIBLE
        }
    }
    
    private fun getPath(uri: Uri?): String {
        var path: String? = null
        val projection = arrayOf(MediaStore.Video.Media.DATA)
        val cursor = contentResolver.query(uri!!, projection, null, null, null)
        cursor?.moveToFirst()
        path = cursor?.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA))
        cursor?.close()
        return path!!
    }

    6. 동영상을 MP3로 변환

    동영상을 MP3로 변환하기 위해 btnConvert 버튼에 클릭 리스너를 추가하고 FFMPEG 명령어를 실행합니다:

    btnConvert.setOnClickListener {
        val outputPath = "${Environment.getExternalStorageDirectory()}/output.mp3"
        val cmd = arrayOf("-i", selectedVideoPath, outputPath)
    
        FFmpeg.getInstance(this).execute(cmd, object : ExecuteBinaryResponseHandler() {
            override fun onSuccess(message: String?) {
                Toast.makeText(this@MainActivity, "Conversion successful!", Toast.LENGTH_LONG).show()
            }
    
            override fun onFailure(message: String?) {
                Toast.makeText(this@MainActivity, "Conversion failed!", Toast.LENGTH_LONG).show()
            }
    
            override fun onProgress(message: String?) {
                Log.d("FFmpeg", "onProgress: $message")
            }
    
            override fun onStart() {
                Log.d("FFmpeg", "onStart")
            }
    
            override fun onFinish() {
                Log.d("FFmpeg", "onFinish")
            }
        })
    }

    마무리

    이제 안드로이드 앱에서 동영상을 MP3로 변환할 수 있습니다. 이 과정에서 FFMPEG 라이브러리의 강력함을 경험할 수 있었을 것입니다. 이번 포스팅에서는 기본적인 변환 기능을 구현했지만, 앞으로는 다양한 포맷 지원, UI 개선, 백그라운드 작업 처리 등의 추가 기능을 고려할 수 있습니다.

    결론

    동영상을 MP3로 변환하는 안드로이드 앱을 만드는 과정은 여러 단계로 구성되어 있으며, 각각의 단계마다 중요한 포인트가 있습니다. 이번 포스팅을 통해 이러한 과정을 이해하고, 실제로 구현해보는 데 도움이 되었기를 바랍니다.

    키워드

    동영상 변환, MP3 변환, 안드로이드 개발, FFMPEG, Kotlin, Java, 안드로이드 스튜디오, 멀티미디어 앱, 파일 선택, 권한 설정

    반응형

    댓글