前提・実現したいこと
kotlinで動画編集アプリを作っています。
OpenCvで編集後、出力した動画をアプリ内で確認できるようにしたいです。
発生している問題
OpenCV Androidを使って.aviファイルでの出力はできました。
しかし、VideoViewで開こうとしても「動画ファイルを再生できません」とでます。
該当のソースコード
kotlin
1 2 val videoCapture = VideoCapture() 3 videoCapture.open(inputPath) 4 5 if (videoCapture.isOpened){ 6 Log.d(MainActivity.TAG,"開いてる") 7 }else{ 8 Log.d(MainActivity.TAG,"閉じてる") 9 } 10 11 videoCapture.grab() 12 13 val file = File(filesDir,"output.avi")//"output.mp4" 14 val writer = VideoWriter() 15 writer.open( 16 file.path,//"output.avi",//"output.mp4" 17 VideoWriter.fourcc('M', 'J', 'P', 'G'),//'m', 'p', '4', 'v' 18 30.0, 19 Size(videoCapture.get(Videoio.CAP_PROP_FRAME_WIDTH),videoCapture.get(Videoio.CAP_PROP_FRAME_HEIGHT))// 20 ) 21 22 if(writer.isOpened){ 23 Log.d(MainActivity.TAG,"ライターひらきました") 24 }else{ 25 Log.d(MainActivity.TAG,"ライターはまだ開いてません") 26 } 27 28 if(writer.isOpened){ 29 while (true){ 30 31 //ここに画像処理メソッドを入れる 32 33 }else{ 34 Log.d(MainActivity.TAG,"videoCapture終了!") 35 writer.release() 36 videoCapture.release() 37 val mediaController = MediaController(this) 38 39 //動画編集が終わったらVideoViewにその動画映してみる 40 mediaController.setAnchorView(videoView) 41 videoView.setMediaController(mediaController) 42 videoView.setVideoPath(file.path) 43 videoView.requestFocus() 44 videoView.start() 45 break 46 } 47 48 } 49 } 50
試したこと
aviでなく、mp4で出力しようとすると、OpenCVのVideoWriterがopenできなくなります。
上記のコードで拡張子をmp4、fourccを'M', 'P', '4', 'V'や'M', 'P', '4', 'S'に直しても、VideoWriterが開きませんでした。
アプリ内でaviをmp4に変換する方法も探しましたが、他アプリのインストールが必要なようです。
編集した動画を再生さえできれば良いのですが、方法を知りませんか?
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
AndroidStudio 4.1.3
OpenCV-4.5.1
あなたの回答
tips
プレビュー