如何编写整合脚本单次提取MP4的LUFS值与创建日期并导出
实现方案
你可以直接将两个逻辑合并到同一个遍历循环中,两种实现方式可选:
方法1:直接运行单行命令
在mp4文件所在目录的终端执行以下命令即可,运行完成后结果会自动导出到当前目录的mp4_info.txt文件:
for i in *.mp4; do echo "$i" ffmpeg -i "$i" -map 0:a -af ebur128=framelog=verbose -f null - 2>&1 | awk '/I:/{print $2}' ffprobe -v quiet -select_streams v:0 -show_entries stream_tags=creation_time -of default=noprint_wrappers=1:nokey=1 "$i" echo "---" done > mp4_info.txt
可选调整:不需要分隔不同文件信息的话,可以删掉echo "---"这一行
方法2:存为独立脚本复用
- 新建名为
get_mp4_info.sh的文件,写入以下内容:
#!/bin/bash # 自动生成带时间戳的输出文件名,避免覆盖历史结果 output_file="mp4信息_$(date +%Y%m%d_%H%M%S).txt" for i in *.mp4; do # 过滤非文件项,避免无mp4时报错 if [ -f "$i" ]; then echo "文件名:$i" >> "$output_file" # 提取LUFS值 lufs_val=$(ffmpeg -i "$i" -map 0:a -af ebur128=framelog=verbose -f null - 2>&1 | awk '/I:/{print $2}') echo "LUFS值:$lufs_val" >> "$output_file" # 提取创建时间 create_time=$(ffprobe -v quiet -select_streams v:0 -show_entries stream_tags=creation_time -of default=noprint_wrappers=1:nokey=1 "$i") echo "创建时间:$create_time" >> "$output_file" echo "====================" >> "$output_file" fi done echo "提取完成,结果已保存到:$output_file"
- 给脚本添加执行权限:
chmod +x get_mp4_info.sh - 放在mp4目录下运行即可:
./get_mp4_info.sh
内容的提问来源于stack exchange,提问作者sJoss
相关产品推荐
相关产品推荐

