测试代码如下:
#!/bin/bash
# 提示用户输入参数
read -p "请输入要切分的MP4文件名: " filename
read -p "请输入要生成的视频数量: " video_count
read -p "请输入视频文件的大小范围(单位MB,例如10-20): " video_size_range
read -p "请输入要生成的图片数量: " image_count
read -p "请输入要生成的音频数量: " audio_count
read -p "请输入要提取的音频时长(单位秒): " audio_duration
# 创建输出文件夹
output_folder="output"
mkdir -p $output_folder
# 切分MP4文件
echo "开始切分MP4文件..."
# 切分视频
echo "开始切分视频..."
for (( i=1; i<=video_count; i++ ))
do
video_size=$((RANDOM % (video_size_range+1 - 5) + 5)) # 随机生成视频大小
ffmpeg -i $filename -ss 00:00:00 -t 00:00:$video_size -c copy $output_folder/video_$i.mp4
done
echo "视频切分完成!"
# 提取图片
echo "开始提取图片..."
duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $filename) # 获取视频总时长
for (( i=1; i<=image_count; i++ ))
do
start_time=$(awk "BEGIN{ srand(); print int(rand() * ($duration)) }") # 随机生成图片起始时间
ffmpeg -ss $start_time -i $filename -vframes 1 $output_folder/image_$i.jpg
done
echo "图片提取完成!"
# 提取音频
echo "开始提取音频..."
duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $filename) # 获取音频总时长
for (( i=1; i<=audio_count; i++ ))
do
start_time=$(awk "BEGIN{ srand(); print int(rand() * ($duration - $audio_duration)) }") # 随机生成音频起始时间
ffmpeg -i $filename -ss $start_time -t $audio_duration -vn -acodec aac $output_folder/audio_$i.m4a
done
echo "音频提取完成!"
echo "所有操作已完成!"
标签:视频,ffmpeg,read,音频,切分,MP4,输入
From: https://www.cnblogs.com/lx2035/p/17799144.html