android - 如何使用 ffmpeg 合并两个视频?

标签 android video merge ffmpeg

我正在使用 writingminds:FFmpegAndroid:0.3.2 library.and 面临这个权限被拒绝的问题。

D/Video merging :: progress: /storage/emulated/0/DCIM/Camera/VID_20171109_070248.mp4: Permission denied

11-10 17:35:09.905 10592-10592/com.example.hasib.vjoiner D/Video merging::failure: ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
使用 gcc 4.8 (GCC) 构建
                                                                         libavutil      55. 17.103 / 55. 17.103
                                                                         libavcodec     57. 24.102 / 57. 24.102
                                                                         libavformat    57. 25.100 / 57. 25.100
                                                                         libavdevice    57.  0.101 / 57.  0.101
                                                                         libavfilter     6. 31.100 /  6. 31.100
                                                                         libswscale      4.  0.100 /  4.  0.100
                                                                         libswresample   2.  0.101 /  2.  0.101
                                                                         libpostproc    54.  0.100 / 54.  0.100
                                                                       /storage/emulated/0/DCIM/Camera/VID_20171109_070248.mp4: Permission denied

11-10 17:35:09.905 10592-10592/com.example.hasib.vjoiner D/视频合并::完成

这是我要执行的命令。
String[] command = new String[]{"-y", "-i", videoPaths.get(0), "-i", videoPaths.get(1).toString(), "-strict", "experimental", "-filter_complex",
            "[0:v]scale=iw*min(1920/iw\\,1080/ih):ih*min(1920/iw\\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\\,1080/ih))/2:(1080-ih*min(1920/iw\\,1080/ih))/2,setsar=1:1[v0];[1:v] scale=iw*min(1920/iw\\,1080/ih):ih*min(1920/iw\\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\\,1080/ih))/2:(1080-ih*min(1920/iw\\,1080/ih))/2,setsar=1:1[v1];[v0][0:a][v1][1:a] concat=n=2:v=1:a=1",
            "-ab", "48000", "-ac", "2", "-ar", "22050", "-s", "1920x1080", "-vcodec", "libx264", "-crf", "27", "-q", "4", "-preset", "ultrafast", outputPath + "/output.mp4"};

最佳答案

检查 list 文件中的读取和写入外部 Sd 权限,并为其提供动态权限。

关于android - 如何使用 ffmpeg 合并两个视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47222011/

相关文章:

android - 如何使用adb改变设备的分辨率

android - AsyncTask 与 Activity.runOnUiThread() 与 Handler.post()

android - 为什么我得到空的 json 结果

java - 流式传输远程.mp4文件,但仅音频

HTML5 视频 - 双击全屏

java - Android 上的 Spotify 注销

Android:Html 5 视频不会在 Activity 完成时停止

git - 如何在非冲突 merge 中获得 GIT 中的三向 merge ?

linux - 什么 git 操作将我的更改从内核 3.14.y 移植到 3.15.y?

git - 如何在具有共同祖先的 2 个分支之间 merge 冲突?