# Running videos on android

**URL:** <https://discourse.processing.org/t/running-videos-on-android/26916>\
**Category:** Processing for Android\
**Created:** [January 9, 2021, 12:46pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916 "2021-01-09T12:46:31Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![paturn](https://avatars.discourse-cdn.com/v4/letter/p/34f0e0/32.png) [@paturn](https://discourse.processing.org/u/paturn)\
**Post date:** [January 12, 2021, 1:01pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/21 "2021-01-12T13:01:54Z")

</div>

@noel  
The icon says it’s in App mode.

---

<div class="post-metadata">

**Author:** ![noel](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/noel/32/213_2.png) [@noel](https://discourse.processing.org/u/noel)\
**Post date:** [January 12, 2021, 1:04pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/22 "2021-01-12T13:04:05Z")

</div>

@akenaton gave a code with a full set of try/catch blocks. Could you post the full console error output.

---

<div class="post-metadata">

**Author:** ![akenaton](https://avatars.discourse-cdn.com/v4/letter/a/a88e4f/32.png) [@akenaton](https://discourse.processing.org/u/akenaton)\
**Post date:** [January 12, 2021, 4:46pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/23 "2021-01-12T16:46:47Z")

</div>

@paturn@noel ===  
i gave this code (tested!) for P5 IDE (dont use APDE but @noel has perhaps tested it), not for AS and Eclipse (which now is out of date for android)—For AS data folder means nothing, you have to create a folder called assets, perhaps it is the same with Eclipse…

---

<div class="post-metadata">

**Author:** ![paturn](https://avatars.discourse-cdn.com/v4/letter/p/34f0e0/32.png) [@paturn](https://discourse.processing.org/u/paturn)\
**Post date:** [January 12, 2021, 4:49pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/24 "2021-01-12T16:49:39Z")

</div>

Build folder: C:\Users\User\AppData\Local\Temp\android2659751654226666039sketch

> Task :app:preBuild UP-TO-DATE  
> Task :app:preDebugBuild  
> Task :app:compileDebugAidl  
> Task :app:compileDebugRenderscript  
> Task :app:checkDebugManifest  
> Task :app:generateDebugBuildConfig  
> Task :app:prepareLintJar  
> Task :app:generateDebugResValues  
> Task :app:generateDebugResources  
> Task :app:mergeDebugResources  
> Task :app:createDebugCompatibleScreenManifests  
> Task :app:processDebugManifest  
> Task :app:splitsDiscoveryTaskDebug  
> Task :app:processDebugResources  
> Task :app:generateDebugSources  
> Task :app:javaPreCompileDebug  
> Task :app:compileDebugJavaWithJavac  
> Task :app:compileDebugNdk NO-SOURCE  
> Task :app:compileDebugSources  
> Task :app:mergeDebugShaders  
> Task :app:compileDebugShaders  
> Task :app:generateDebugAssets  
> Task :app:mergeDebugAssets  
> Task :app:extractTryWithResourcesSupportJarDebug  
> Task :app:transformClassesWithStackFramesFixerForDebug  
> Task :app:transformClassesWithDesugarForDebug  
> Task :app:transformClassesWithDexBuilderForDebug  
> Task :app:transformDexArchiveWithExternalLibsDexMergerForDebug  
> Task :app:transformDexArchiveWithDexMergerForDebug  
> Task :app:mergeDebugJniLibFolders  
> Task :app:transformNativeLibsWithMergeJniLibsForDebug  
> Task :app:processDebugJavaRes NO-SOURCE  
> Task :app:transformResourcesWithMergeJavaResForDebug  
> Task :app:validateSigningDebug  
> Task :app:packageDebug  
> Task :app:assembleDebug

BUILD SUCCESSFUL in 2m 57s  
28 actionable tasks: 28 executed  
java.io.FileNotFoundException: ConDrift.mp4  
at android.content.res.AssetManager.nativeOpenAssetFd(Native Method)  
at android.content.res.AssetManager.openFd(AssetManager.java:899)  
at processing.test.videoapp5.VideoApp5.prepareMP(VideoApp5.java:124)  
at processing.test.videoapp5.VideoApp5.onStart(VideoApp5.java:174)  
at processing.android.PFragment.onStart(PFragment.java:168)  
at android.support.v4.app.Fragment.performStart(Fragment.java:2477)  
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1494)  
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)  
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)  
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269)  
at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3235)  
at android.support.v4.app.FragmentController.dispatchStart(FragmentController.java:212)  
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:628)  
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)  
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1433)  
at android.app.Activity.performStart(Activity.java:7978)  
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3512)  
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)  
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)  
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)  
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2175)  
at android.os.Handler.dispatchMessage(Handler.java:107)  
at android.os.Looper.loop(Looper.java:237)  
at android.app.ActivityThread.main(ActivityThread.java:7860)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)  
FATAL EXCEPTION: main  
Process: processing.test.videoapp5, PID: 2825  
java.lang.NullPointerException: Attempt to invoke virtual method ‘java.io.FileDescriptor android.content.res.AssetFileDescriptor.getFileDescriptor()’ on a null object reference  
at processing.test.videoapp5.VideoApp5.prepareMP(VideoApp5.java:135)  
at processing.test.videoapp5.VideoApp5.onStart(VideoApp5.java:174)  
at processing.android.PFragment.onStart(PFragment.java:168)  
at android.support.v4.app.Fragment.performStart(Fragment.java:2477)  
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1494)  
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)  
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)  
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269)  
at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3235)  
at android.support.v4.app.FragmentController.dispatchStart(FragmentController.java:212)  
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:628)  
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)  
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1433)  
at android.app.Activity.performStart(Activity.java:7978)  
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3512)  
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)  
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)  
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)  
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2175)  
at android.os.Handler.dispatchMessage(Handler.java:107)  
at android.os.Looper.loop(Looper.java:237)  
at android.app.ActivityThread.main(ActivityThread.java:7860)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)

---

<div class="post-metadata">

**Author:** ![paturn](https://avatars.discourse-cdn.com/v4/letter/p/34f0e0/32.png) [@paturn](https://discourse.processing.org/u/paturn)\
**Post date:** [January 12, 2021, 4:51pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/25 "2021-01-12T16:51:36Z")

</div>

@noel  
I have posted the erro messages but could not scroll down to indicate the receiver

---

<div class="post-metadata">

**Author:** ![akenaton](https://avatars.discourse-cdn.com/v4/letter/a/a88e4f/32.png) [@akenaton](https://discourse.processing.org/u/akenaton)\
**Post date:** [January 12, 2021, 4:54pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/26 "2021-01-12T16:54:28Z")

</div>

@paturn === the error code is a java file not found e and that means that your video either is not in the data folder or/and the name (in the code) is not the good one…

---

<div class="post-metadata">

**Author:** ![paturn](https://avatars.discourse-cdn.com/v4/letter/p/34f0e0/32.png) [@paturn](https://discourse.processing.org/u/paturn)\
**Post date:** [January 12, 2021, 5:16pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/27 "2021-01-12T17:16:10Z")

</div>

@akenaton  
The mp4 file IS in the data folder, together with many other files. I hsve emptied them out, leaving only the mp4 requested by your app. It still doesn’t work. Perhaps my settings are wrong?

---

<div class="post-metadata">

**Author:** ![akenaton](https://avatars.discourse-cdn.com/v4/letter/a/a88e4f/32.png) [@akenaton](https://discourse.processing.org/u/akenaton)\
**Post date:** [January 12, 2021, 5:22pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/28 "2021-01-12T17:22:05Z")

</div>

@paturn === ok; are you using Eclpse or P5 ide? - Have you changed the name i put in the code for yours, “condrift.mp4” or something like that?

---

<div class="post-metadata">

**Author:** ![noel](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/noel/32/213_2.png) [@noel](https://discourse.processing.org/u/noel)\
**Post date:** [January 12, 2021, 5:23pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/29 "2021-01-12T17:23:00Z")

</div>

> [@paturn](#):
>
> java.lang.NullPointerException: Attempt to invoke virtual method ‘java.io.FileDescriptor android.content.res.AssetFileDescriptor.getFileDescriptor()’ on a null object reference

The ‘context’ was initiated before, so that can’t be the reason, but still, it’s strange. Are you using the internal memory or an sd card?

You can set a larger console field in the preferences.txt file (Only modify with the IDE closed!)

> console.scrollback.lines=1500

Because I don’t see the print:

> println(“la surface a été créé”);

---

<div class="post-metadata">

**Author:** ![akenaton](https://avatars.discourse-cdn.com/v4/letter/a/a88e4f/32.png) [@akenaton](https://discourse.processing.org/u/akenaton)\
**Post date:** [January 12, 2021, 5:24pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/30 "2021-01-12T17:24:53Z")

</div>

@noel === as the surface is created AFTER the MP i think that the problem is the video is not found; @noel=== have you tried my code?

---

<div class="post-metadata">

**Author:** ![paturn](https://avatars.discourse-cdn.com/v4/letter/p/34f0e0/32.png) [@paturn](https://discourse.processing.org/u/paturn)\
**Post date:** [January 12, 2021, 5:35pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/31 "2021-01-12T17:35:53Z")

</div>

@akenaton  
I am using Processing for Android, with ConDrift.mp4 in the data folder which is in folder  
/storage/emulated/0/  
or from Environment folder  
/storage/emulated/0/drift

---

<div class="post-metadata">

**Author:** ![noel](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/noel/32/213_2.png) [@noel](https://discourse.processing.org/u/noel)\
**Post date:** [January 12, 2021, 5:38pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/32 "2021-01-12T17:38:35Z")

</div>

> [@akenaton](#):
>
> @noel=== have you tried my code?

Yes, it works perfectly also without permissions.

---

<div class="post-metadata">

**Author:** ![paturn](https://avatars.discourse-cdn.com/v4/letter/p/34f0e0/32.png) [@paturn](https://discourse.processing.org/u/paturn)\
**Post date:** [January 12, 2021, 5:38pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/33 "2021-01-12T17:38:58Z")

</div>

@noel  
I am using internal memory. I do not have an sdcard installed. Shall I transfer one from another phone?

---

<div class="post-metadata">

**Author:** ![noel](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/noel/32/213_2.png) [@noel](https://discourse.processing.org/u/noel)\
**Post date:** [January 12, 2021, 5:40pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/34 "2021-01-12T17:40:46Z")

</div>

> [@paturn](#):
>
> I am using Processing for Android, with ConDrift.mp4 in the data folder which is in folder  
> /storage/emulated/0/  
> or from Environment folder  
> /storage/emulated/0/drift

Where is the sketchbook folder?

---

<div class="post-metadata">

**Author:** ![akenaton](https://avatars.discourse-cdn.com/v4/letter/a/a88e4f/32.png) [@akenaton](https://discourse.processing.org/u/akenaton)\
**Post date:** [January 12, 2021, 5:41pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/35 "2021-01-12T17:41:12Z")

</div>

@paturn ====ok; have you changed my video name??? @noel permissions are not needed for this case, but why not?

---

<div class="post-metadata">

**Author:** ![paturn](https://avatars.discourse-cdn.com/v4/letter/p/34f0e0/32.png) [@paturn](https://discourse.processing.org/u/paturn)\
**Post date:** [January 12, 2021, 5:46pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/36 "2021-01-12T17:46:02Z")

</div>

@noel  
On the PC the sketch folder is in folder Desktop\Processing P3D[app name]

On the phone the data folder is in  
/storage/emulated/0/

---

<div class="post-metadata">

**Author:** ![noel](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/noel/32/213_2.png) [@noel](https://discourse.processing.org/u/noel)\
**Post date:** [January 12, 2021, 5:53pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/37 "2021-01-12T17:53:30Z")

</div>

> [@paturn](#):
>
> On the phone the data folder is in  
> /storage/emulated/0/

So now I am confused.Are you building the app from the PC or APDE? From PC you don’t get a data folder, and can’t see (easily) the assets folder on your phone.

---

<div class="post-metadata">

**Author:** ![akenaton](https://avatars.discourse-cdn.com/v4/letter/a/a88e4f/32.png) [@akenaton](https://discourse.processing.org/u/akenaton)\
**Post date:** [January 12, 2021, 6:02pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/38 "2021-01-12T18:02:42Z")

</div>

@paturn === and have you changed the name in the code?

---

<div class="post-metadata">

**Author:** ![paturn](https://avatars.discourse-cdn.com/v4/letter/p/34f0e0/32.png) [@paturn](https://discourse.processing.org/u/paturn)\
**Post date:** [January 12, 2021, 6:12pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/39 "2021-01-12T18:12:57Z")

</div>

@noel  
I am building the app on the PC. APDE didn’t work either so I reverted. The folder is located with  
import Environment;  
pathstr = Environment.getExternalStorageDirectory()+ “/drift/”;  
afd = context.getAssets().openFd(pathstr+“ConDrift.mp4”);

This technique worked in a previous app but I was not using video files, only image files with PImage

---

<div class="post-metadata">

**Author:** ![noel](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/noel/32/213_2.png) [@noel](https://discourse.processing.org/u/noel)\
**Post date:** [January 12, 2021, 6:36pm UTC](https://discourse.processing.org/t/running-videos-on-android/26916/40 "2021-01-12T18:36:52Z")

</div>

> [@paturn](#):
>
> pathstr = Environment.getExternalStorageDirectory()+ “/drift/”;  
> afd = context.getAssets().openFd(pathstr+“ConDrift.mp4”);

So it isn’t in the data folder!  
And thus you don’t need to access the assets folder but something like:

String directory = new String(Environment.getExternalStorageDirectory().getAbsolutePath()+“/”+drift+“/”);

In this case, you’ll need the imports and I believe on some devices you need to include

> android:requestLegacyExternalStorage=“true”

to the manifest.

[Previous page](https://discourse.processing.org/t/running-videos-on-android/26916.md?page=1)

[Next page](https://discourse.processing.org/t/running-videos-on-android/26916.md?page=3)
