linux之flv转mp4

前言

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

准备

提前安装好ffmpeg

使用

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

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/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

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

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

linux之flv转mp4
http://example.com/2022/03/10/linux-zhi-flv-zhuan-mp4/
作者
天空遗留之物
发布于
2022年3月10日
许可协议