ffmpeg实现视频的分割生成测试用的图片视频和音频
测试代码如下:
#!/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 "所有操作已完成!"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)