bash - 用于转换子目录中视频的 Bash 脚本
问题描述
尝试制作一个脚本来转换子目录中的视频,同时更改文件名、元数据,并将它们全部转储到所有转换后的视频的单个文件夹中。ffmpeg 命令在不使用变量的情况下对单个文件起作用。cut 命令将文件名和元数据更改为我想要的。我只是很难把它们放在一起。
寻找 。-name "*.m2ts" -exec bash -c 'for f; do
t=$(echo "$f" | cut -d "/" -f2)
ffmpeg -i "$f" -af "volume=2.0" -f mp4 -c:a mp3 -c:v libx264 \
-profile :v 基线 -vf "scale=852:480" -metadata title="$t" $t.mp4; \
完成' -- {} +
解决方案
这是您的脚本的几乎纯 bash 版本:
#!/bin/bash
for f in *.m2ts; do
filename="${f/*\//}"
ffmpeg -i "${filename}" \
-af "volume=2.0" \
-f mp4 \
-c:a mp3 \
-c:v libx264 \
-profile:v baseline \
-vf "scale=852:480" \
-metadata title="${filename/.*/}" \
${filename/.m2ts/.mp4}
done
你能试一试吗?
顺便说一句,这里有一些 Bash Fu:
$ f="./some/file.m2ts"
$ echo ${f}
./some/file.m2ts
$ echo ${f/*\//}
file.m2ts
$ filename=${f/*\//}
$ echo ${filename}
file.m2ts
$ echo ${filename/.*/}
file
$ echo ${filename/.m2ts/.mp4}
file.mp4
$
推荐阅读
- excel - 变量 = 工作表(=> 预期标识符)
- go - 尝试更新记录,但它插入新的
- excel - 将 Sharepoint / PowerAutomate 日期/时间转换为 Excel 序列日期/时间编号
- amazon-ec2 - ffmpeg 从 EC2 实例上的 Dropbox 转换 2tb 视频
- pandas - 从 Zip Link Pandas 读取多个文件
- python - 我在使用此代码时遇到问题,虽然它可以工作但不是我想要的方式
- amazon-web-services - Amazon Rekognition:如何在导入数据集时为单个图像设置多个标签
- postgresql - Debezium PostgresConnector 实例化主题,因为表中没有数据
- rust - 有没有办法在同一个主目录中同时启动 tonic gRPC 和 actix Web 应用程序?
- javascript - Laravel 将字符串变量转换为 jQuery