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

Posted

技术标签:

【中文标题】如何使用 ffmpeg 合并两个视频?【英文标题】:How can i merge two videos using ffmpeg? 【发布时间】:2018-04-23 15:17:44 【问题描述】:

我正在使用 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 版权所有 (c) 2000-2016 FFmpeg 开发者 使用 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";

【问题讨论】:

您的应用中有 READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE 吗?? 【参考方案1】:

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

【讨论】:

以上是关于如何使用 ffmpeg 合并两个视频?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ffmpeg 合并两个 avi 文件?

如何合并文件夹中的所有视频以使用 FFMPEG 制作单个视频文件

将音频视频与ffmpeg合并时如何提高结果视频的质量?

如何在Android中使用FFMPEG库将Youtube视频与MP4合并?

如何使用ffmpeg进行音视频裁剪命令和音视频合成命令

如何将多个 YouTube 视频合并为一个