gpt4 book ai didi

bash - FFmpeg如何连接视频并输出相同的文件前缀

转载 作者:行者123 更新时间:2023-12-04 23:11:32 41 4
gpt4 key购买 nike

我有很多视频分为三个部分,我想将它们连接起来。
我现在有以下 bash 将文件夹中的视频输出到名为 mergeVideo.mp4 的文件中。

for f in *.mp4 ; do echo file \'$f\' >> fileList.txt;done
ffmpeg -f concat -safe 0 -i fileList.txt -c copy mergedVideo.mp4
我所有的输入文件都像 Something part1.mp4 , Something part2.mp4 , Something part3.mp4我想要的是输出一个名为 Something.mp4 的文件
有可能的?
我怎样才能修改我的 bash 来实现呢~?

最佳答案

请您尝试以下方法:

#!/bin/bash

pat="^([^[:space:]]+)[[:space:]]*part[[:digit:]]+\.mp4$"
for f in *.mp4; do
echo file \'$f\' >> fileList.txt
[[ $f =~ $pat ]] && mergedvideo="${BASH_REMATCH[1]}.mp4"
done
ffmpeg -f concat -safe 0 -i fileList.txt -c copy "$mergedvideo"
正则表达式的解释 $pat :
  • ^([^[:space:]]+)匹配从开头开始的非空格子字符串
    字符串 $f并分配给 shell 变量 BASH_REMATCH[1] .
    至于提供的示例文件名,BASH_REMATCH[1]将分配给 Something .
  • [[:space:]]*匹配零个或多个空格。
  • part[[:digit:]]+匹配字符串“part”,后跟数字。
  • \.mp4匹配后缀。

  • 【备选】
    如果您熟悉 sed同样,以下内容可能更具可读性和可维护性:
    mergedvideo=$(sed -E 's/[[:space:]]*part[[:digit:]]+//' <<< "$f")

    关于bash - FFmpeg如何连接视频并输出相同的文件前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66763420/

    41 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com