我花了几周的时间来测试并测试所有答案,以便在Android上使用FFMPEG进行无损切割。无论我尝试什么,我总是会迷路。在我们正在构建的应用中,我们需要精确到毫秒。
我已经尝试了命令的许多变体,其中许多变体的间隔时间超过半秒。这用于复制和重新编码。有了这个,我在前后两个位置都尝试了-ss,但是我没有看到任何区别。以下是最有效的两个命令,它们仍然不够接近:
//copy
"-ss $startTime -t $endTime -i $input -f segment -c copy $output"
//encode
"-i $input -ss $startTime -c:v libx264 -crf 12 -preset ultrafast -t $endTime $output"
有人使用过命令或其他提供更准确结果的库吗?
答案 0 :(得分:0)
寻找几天之后,我使用以下命令在FFMPEG中精确到毫秒级精确修整:
"-ss $startCutTime -i $inputFilePath -ss 0 -c copy -to $endCutTime -avoid_negative_ts make_zero $outputFilePath"
对于30fps的剪辑,此命令的精确度大约为20毫秒,但这完全取决于视频的帧频。我希望这可以帮助其他人。这是每个组件的作用的解释:
/**
* FFMPEG Cmd Structure
* -i: Input file
* -ss: If this is placed before the input file it seeks to this position in the input file. If it's after the input it will split from that exact position.
* -to: The position of where the command is going to cut to.
* -c copy: This copies the video and audio codecs as they are for speed.
* -avoid_negative_ts make_zero: Sets the first timestamp as 0
* The times are passed in parsed eg 00:00:10.456
* The output file is the last part of the command
*/