마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

videoView api 사용하여 동영상 재생시 재생할수 없는 동영상

0 추천

구글에 떠도는 videoView예제로 우선 url 불러들여와서 동영상을 재생하는 예제를 실행해보았는데

잘 재생이 되더라구요..

그래서 url이 없는 자체 앱만으로 재생이 가능하도록 만들려고 하였는데...

url로는 재생이 잘됬던 동영상이 "재생할 수 없는 동영상입니다."라고 나오더군요

처음에는 sdcard쪽에 저장시켜놓고 불러들이는 방식이라 아래와 같은 에러도 나기에 권한 문제라고 생각하여 

 

==================================================================

10-05 00:03:04.561 29844-29844/com.project9.videoviewexample W/VideoView: Unable to open content: /storage/emulated/0/Movies/001_2.mp4
                                                                          java.io.FileNotFoundException: /storage/emulated/0/Movies/001_2.mp4 (Permission denied)
                                                                              at java.io.FileInputStream.open(Native Method)
                                                                              at java.io.FileInputStream.<init>(FileInputStream.java:146)
                                                                              at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1205)
                                                                              at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1129)
                                                                              at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1075)
                                                                              at android.widget.VideoView.openVideo(VideoView.java:356)
                                                                              at android.widget.VideoView.-wrap0(VideoView.java)
                                                                              at android.widget.VideoView$7.surfaceCreated(VideoView.java:632)
                                                                              at android.view.SurfaceView.updateWindow(SurfaceView.java:656)
                                                                              at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:172)
                                                                              at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1013)
                                                                              at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2542)
                                                                              at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1537)
                                                                              at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183)
                                                                              at android.view.Choreographer$CallbackRecord.run(Choreographer.java:959)
                                                                              at android.view.Choreographer.doCallbacks(Choreographer.java:734)
                                                                              at android.view.Choreographer.doFrame(Choreographer.java:670)
                                                                              at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:945)
                                                                              at android.os.Handler.handleCallback(Handler.java:751)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                              at android.os.Looper.loop(Looper.java:154)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:6776)
                                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)

 

혹시 동영상 문제인가 싶어 mp4Box로 헤더 쪽에 hint를 넣어줘서 해보았지만 동일한 문제를 보이더군요..

혹시나 싶어 파일 크기도 줄여보았습니다. 인코딩도 다시 해보기도 했구요..

그냥 재생은 되는데..

 

어플을 통해서 컴파일 한 소스는 돌아가지 않더라구요..

무슨 문제인지 구글링을 계속하고 있는데..

보통은 권한 문제, 혹은 인코딩 문제, 동영상 헤더 쪽 hint 문제였는데

그 부분은 다 시도해 본것 같은데 안되더군요..

무슨 문제인지 답답하여 여기에 질문을 올리게 되었습니다.

익명사용자 님이 2017년 10월 5일 질문

1개의 답변

0 추천
Android 6.0(API Level 23)부터 '위험한 권한'인 경우 사용자에게 맨 처음 런타임에 권한 요청하게 되어 있는데, 그 코드를 넣어서 체크를 하지 않으신 것으로 보입니다.

https://developer.android.com/training/permissions/requesting.html
리피 (750 포인트) 님이 2017년 10월 7일 답변
리피님이 2017년 10월 7일 수정
...