|
@@ -621,3 +621,90 @@ function my_mounted_dir_size() {
|
|
|
set_title() {
|
|
|
printf "\033]2;%s\007" "$1"
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+## ffmpeg 相关
|
|
|
+# 提起音频,入参是文件名,默认转出同名的mp3,示例:ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 0 output.mp3
|
|
|
+function ffmpeg_extract_audio() {
|
|
|
+ if [ -z "$1" ]; then
|
|
|
+ echo "Usage: ffmpeg_extract_audio <input_file>"
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ # 获取文件名
|
|
|
+ filename=$(basename "$1")
|
|
|
+ # 获取文件扩展名
|
|
|
+ extension="${filename##*.}"
|
|
|
+ # 获取文件名(不包含扩展名)
|
|
|
+ filename_without_extension="${filename%.*}"
|
|
|
+
|
|
|
+ # 默认输出文件名
|
|
|
+ output_file="${filename_without_extension}.mp3"
|
|
|
+
|
|
|
+ # 提取音频 ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 0 output.mp3
|
|
|
+ ffmpeg -i "$1" -vn -acodec libmp3lame -q:a 0 "$output_file"
|
|
|
+}
|
|
|
+# 合并视频和音频
|
|
|
+ffmpeg_merge_video_audio() {
|
|
|
+ # 检查参数数量是否正确
|
|
|
+ if [ "$#" -ne 3 ]; then
|
|
|
+ echo "用法: merge_video_audio <视频文件> <音频文件> <输出文件>"
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ # 获取参数
|
|
|
+ video_path="$1"
|
|
|
+ audio_path="$2"
|
|
|
+ output_path="$3"
|
|
|
+
|
|
|
+ # 检查输入文件是否存在
|
|
|
+ if [ ! -f "$video_path" ]; then
|
|
|
+ echo "错误: 视频文件 '$video_path' 不存在"
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ if [ ! -f "$audio_path" ]; then
|
|
|
+ echo "错误: 音频文件 '$audio_path' 不存在"
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ # 执行 FFmpeg 命令
|
|
|
+ ffmpeg -i "$video_path" -i "$audio_path" -c:v copy -c:a copy "$output_path"
|
|
|
+
|
|
|
+ # 检查命令是否成功执行
|
|
|
+ if [ $? -eq 0 ]; then
|
|
|
+ echo "合并完成: 输出文件为 '$output_path'"
|
|
|
+ else
|
|
|
+ echo "错误: 合并失败"
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
+ffmpeg_convert_to_mp3() {
|
|
|
+ # 检查参数数量是否正确
|
|
|
+ if [ "$#" -ne 2 ]; then
|
|
|
+ echo "用法: convert_to_mp3 <输入音频文件> <输出MP3文件>"
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ # 获取参数
|
|
|
+ input_file="$1"
|
|
|
+ output_file="$2"
|
|
|
+
|
|
|
+ # 检查输入文件是否存在
|
|
|
+ if [ ! -f "$input_file" ]; then
|
|
|
+ echo "错误: 输入文件 '$input_file' 不存在"
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ # 执行 FFmpeg 命令
|
|
|
+ ffmpeg -i "$input_file" -vn -acodec libmp3lame -q:a 2 "$output_file"
|
|
|
+
|
|
|
+ # 检查命令是否成功执行
|
|
|
+ if [ $? -eq 0 ]; then
|
|
|
+ echo "转换完成: 输出文件为 '$output_file'"
|
|
|
+ else
|
|
|
+ echo "错误: 转换失败"
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+}
|