如何使用 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 制作单个视频文件