Search code examples
androidandroid-youtube-apiyoutube-data-apiyoutube-livestreaming-apiandroid-ffmpeg

YouTube watchme Android application exception couldn't find "libffmpeg.so"


I am using this sample https://github.com/youtube/yt-watchme

I just imported the sample and set the ACCOUNT_KEY in MainActivity. Below is the Build gradle file

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "com.google.android.apps.watchme"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main {
            jni.srcDirs = []
        }
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services-plus:7.8.0'
    compile 'com.android.support:support-v4:23.0.0'
    compile 'com.android.support:design:23.0.0'
    compile 'com.google.apis:google-api-services-youtube:v3-rev120-1.19.0'
    compile 'com.google.http-client:google-http-client-android:+'
    compile 'com.google.api-client:google-api-client-android:+'
    compile 'com.google.api-client:google-api-client-gson:+'
    compile 'com.mcxiaoke.volley:library:1.0.18'
    compile 'com.google.code.gson:gson:2.3'
}

This is my project structure

And when run this application in my mobile, I am getting the below exception

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.google.android.apps.watchme-1/base.apk"],nativeLibraryDirectories=[/data/app/com.google.android.apps.watchme-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libffmpeg.so"
                                                                                         at java.lang.Runtime.loadLibrary(Runtime.java:367)
                                                                                         at java.lang.System.loadLibrary(System.java:1076)
                                                                                         at com.google.android.apps.watchme.Ffmpeg.<clinit>(Ffmpeg.java:26)
                                                                                         at com.google.android.apps.watchme.VideoStreamingConnection.open(VideoStreamingConnection.java:71)
                                                                                         at com.google.android.apps.watchme.StreamerService.startStreaming(StreamerService.java:72)
                                                                                         at com.google.android.apps.watchme.StreamerActivity.startStreaming(StreamerActivity.java:208)
                                                                                         at com.google.android.apps.watchme.StreamerActivity.access$200(StreamerActivity.java:46)
                                                                                         at com.google.android.apps.watchme.StreamerActivity$1.onServiceConnected(StreamerActivity.java:66)
                                                                                         at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1274)
                                                                                         at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1291)
                                                                                         at android.os.Handler.handleCallback(Handler.java:815)
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:104)
                                                                                         at android.os.Looper.loop(Looper.java:207)
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:5776)
                                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)

The above error got fixed and getting this new error

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
                                                                      {
                                                                        "code": 403,
                                                                        "errors": [
                                                                          {
                                                                            "domain": "youtube.liveBroadcast",
                                                                            "message": "Stream is inactive",
                                                                            "reason": "errorStreamInactive",
                                                                            "extendedHelp": "https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/transition"
                                                                          }
                                                                        ],
                                                                        "message": "Stream is inactive"
                                                                      }
                                                                          at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
                                                                          at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
                                                                          at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
                                                                          at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
                                                                          at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
                                                                          at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
                                                                          at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
                                                                          at com.google.android.apps.watchme.util.YouTubeApi.startEvent(YouTubeApi.java:187)
                                                                          at com.google.android.apps.watchme.MainActivity$StartEventTask.doInBackground(MainActivity.java:408)
                                                                          at com.google.android.apps.watchme.MainActivity$StartEventTask.doInBackground(MainActivity.java:393)
                                                                          at android.os.AsyncTask$2.call(AsyncTask.java:292)
                                                                          at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                          at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                          at java.lang.Thread.run(Thread.java:818)

Please help me to get out of this issue...


Solution

  • https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/transition

    Use this link. You will get to know why this error you got. And there are also some other errors with their detailed reasons.