94 字
1 分钟
linux之flv转mp4
2022-03-10

前言#

为了让我的录播机能在线播放,所以找了个脚本,这个脚本是群里面一位大佬发出来的,非常感谢这位大佬的脚本。

准备#

提前安装好ffmpeg

使用#

sudo ./脚本 "文件夹路径/*.flv"

脚本#

#!/bin/bash
# 用法:
# ./convert.sh "/path/to/*.flv"
#
# 可选通过环境变量传入 FFMPEG 路径:
# FFMPEG="/path/to/ffmpeg" ./convert.sh "/path/to/*.flv"
# 颜色
RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
NC='\033[0m'
# 检查传入的参数
# 如果传入参数小于 1 个
if [ $# -lt 1 ]; then
echo -e "${RED}Missing argument!${NC}"
echo "Usage example:"
echo " ./convert.sh \"/path/to/*.flv\""
exit
elif [ $# -gt 1 ]; then
echo -e "${RED}Too much argument!${NC}"
echo -e "${YELLOW}Note${NC}: Did you forget quotes?"
echo "Usage example:"
echo " ./convert.sh \"/path/to/*.flv\""
exit
fi
# 匹配的文件名
SOURCE_PATTERN="$1"
# 检查 FFMPEG 名字或路径
if [ -z "${FFMPEG}" ]; then
# 如果没有传入则设置默认为 ffmpeg
FFMPEG=ffmpeg
else
echo -e "${YELLOW}[NOTE] Using custom ffmpeg path: \"${FFMPEG}\"${NC}"
echo ""
fi
# 在匹配到的每个文件里循环,文件名为 source
for source in $SOURCE_PATTERN; do
# 设置 target 为 source 去掉后缀名再加上 ".mp4"
target="${source%.*}.mp4"
# 如果 source 是一个存在的文件
if [ -f "$source" ]; then
# 如果 target 存在
if [ -e "$target" ]; then
# 输出文件已存在提示
echo -e "${YELLOW}[SKIP]${NC} MP4 exist: $target"
else
# 否则输出运行的提示
echo -e "${GREEN}[RUN ]${NC} convert \"$source\" to \"$target\""
# 运行 FFMPEG
$FFMPEG -hide_banner -nostats -loglevel warning -i "$source" -c copy "$target"
fi
fi
done

如果出现“解释器错误:没有那个文件或目录”尝试运行以下命令

sed -i.bak 's/\r$//g' zhuanma.sh
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

linux之flv转mp4
https://vtdd.vip/posts/linux之flv转mp4/
作者
浮生
发布于
2022-03-10
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录