问题重现
由于视频的录制过程出现了一些小问题,需要重新将视频文件切割和合并,找了几个视频编辑软件来做这个事情,最终的结果都不是特别满意,当时已经挺晚的了,本来打算上床睡觉第二天再去想辙,从椅子上起身的时候忽然想到了 ffmpeg 这个工具,挺久之前在工作中用它做了一个视频切割相关的功能,于是赶紧把它安装和配置好,视频切割的时候倒还顺利,在进行视频合并的时候出现了题目中的这个问题:
代码语言:javascript复制Operation not permitted
我把当时的相关文件都放在这里,如下图所示:
我需要把图中 27-end.mp4 和 27-head.mp4 两个视频文件合并成一个视频文件,ffmpeg 需要的 txt 文件也如上图所示,将需要合并文件的目录放在文件里即可,因为是在当前目录执行的 cmd 命令,所以就直接将目录设置为当前目录了。
当时执行的视频合并命令如下:
代码语言:javascript复制ffmpeg -f concat -i list.txt -c copy lesson-27.mp4
但是得到的结果如下:
问题解决过程
权限问题
看到这个错误之后,我以为是文件权限的问题,于是右键“管理员取得所有权”,之后还是报这个错,后来把文件目录写成绝对路径,也依然没用,陷入僵局....
网上搜答案
自己没解决,赶紧到网上看看有没有其他人碰到这个问题,查了一圈,问题是有类似的,但是解决方案都没有,又凉了,也因此我在解决之后写了这篇文章。
换个思路
大家可以再看一眼上图中的报错,在 Operation not permitted
错误上面还有一个Unsafe file name
的错误,于是我看了一下 ffmpeg 的文档,最终发现可以在命令行中添加 -safe 参数来避免这个问题,赶紧就去试了一次,最终将文件合并成功,执行的命令如下:
ffmpeg -f concat -safe 0 -i list.txt -c copy lesson-27.mp4
小总结
因为在网络上没有查到这个问题的解决方法,也看到很多朋友同样在搜这个问题,所以整理了这篇文章,有碰到类似问题的朋友可以参考一下。