ffmpeg 截取切割视频报错
Posted 圆滚熊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg 截取切割视频报错相关的知识,希望对你有一定的参考价值。
在用ffmpeg来截取只有视频没有音频的mp4文件时,有一些视频可以切割,少部分不能分割,遇到到了bug。
截取命令:
cd D:\\ffmpeg\\bin>
ffmpeg -ss 370 -to 389 -i 01.mp4 -y -f mp4 -vcodec copy -q:v 1 output.mp4
报错如下:
[mp3float @ 0000022b8220d300] Header missing
Error while decoding stream #0:1: Invalid data found when processing input
[mp3float @ 0000022b8220d300] Header missing
Error while decoding stream #0:1: Invalid data found when processing input
[mp3float @ 0000022b8220d300] Header missing
Error while decoding stream #0:1: Invalid data found when processing input
[mp3float @ 0000022b8220d300] Header missing
Error while decoding stream #0:1: Invalid data found when processing input
[mp3float @ 0000022b8220d300] Header missing
[mp3float @ 0000022b8220d300] Header missing
Error while decoding stream #0:1: Invalid data found when processing input
[mp3float @ 0000022b8220d300] Header missing
Error while decoding stream #0:1: Invalid data found when processing input
[mp3float @ 0000022b8220d300] Header missing
Error while decoding stream #0:1: Invalid data found when processing input
[mpeg @ 0000022b8218dcc0] Packet corrupt (stream = 0, dts = 37275057).
01.mp4: corrupt input packet in stream 0
[mp3float @ 0000022b8220d300] Header missing
Error while decoding stream #0:1: Invalid data found when processing input
[abuffer @ 0000022b830c9100] Value inf for parameter 'time_base' out of range [0 - 2.14748e+09]
Last message repeated 3 times
[abuffer @ 0000022b830c9100] Error setting option time_base to value 1/0.
[graph_0_in_0_1 @ 0000022b827ab240] Error applying options to the filter.
Error reinitializing filters!
Error while filtering: Result too large
Finishing stream 0:1 without any data written to it.
[abuffer @ 0000022b830c9640] Value inf for parameter 'time_base' out of range [0 - 2.14748e+09]
Last message repeated 3 times
[abuffer @ 0000022b830c9640] Error setting option time_base to value 1/0.
[graph_0_in_0_1 @ 0000022b827ab240] Error applying options to the filter.
Error configuring filter graph
Conversion failed!
解决方法:
增加 -an 参数。
ffmpeg -ss 370 -to 389 -i 01.mp4 -y -f mp4 -vcodec copy -acodec copy -q:v 1 -an output.mp4
附ffmpeg参数含义:
'''
-ss 指定要截取的视频的起始时间。
-to 指定要截取的视频的终止时间。
-i 输入文件,这里指的就是视频文件。
-y 表示无需询问,直接覆盖输出文件(如果有原文件的话)。
-f 指定输出视频的格式。
-acodec 指定音频编码格式。copy表示编码格式不发生改变,直接复制原来的编码格式,这样会大大提升速度。
-vcodec 指定视频编码格式。copy表示编码格式不发生改变,直接复制原来的编码格式,这样会大大提升速度。
-q:v 1 q是质量,v是视频,v的取值范围是[1, 35],取值1的时候,对应着最佳的视频质量。
-an:a代表音频,n代表no an就是无音频的意思
'''
ffmpeg Operation not permitted 报错的解决过程记录
问题重现
由于视频的录制过程出现了一些小问题,需要重新将视频文件切割和合并,找了几个视频编辑软件来做这个事情,最终的结果都不是特别满意,当时已经挺晚的了,本来打算上床睡觉第二天再去想辙,从椅子上起身的时候忽然想到了 ffmpeg 这个工具,挺久之前在工作中用它做了一个视频切割相关的功能,于是赶紧把它安装和配置好,视频切割的时候倒还顺利,在进行视频合并的时候出现了题目中的这个问题:
Operation not permitted
我把当时的相关文件都放在这里,如下图所示:
我需要把图中 27-end.mp4 和 27-head.mp4 两个视频文件合并成一个视频文件,ffmpeg 需要的 txt 文件也如上图所示,将需要合并文件的目录放在文件里即可,因为是在当前目录执行的 cmd 命令,所以就直接将目录设置为当前目录了。
当时执行的视频合并命令如下:
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
小总结
因为在网络上没有查到这个问题的解决方法,也看到很多朋友同样在搜这个问题,所以整理了这篇文章,有碰到类似问题的朋友可以参考一下。
以上是关于ffmpeg 截取切割视频报错的主要内容,如果未能解决你的问题,请参考以下文章