图像转定时视频与循环视频字幕批量修改技术咨询
图像转定时视频与循环视频字幕批量修改技术咨询
嘿,这两个问题虽然有点特定,但都是视频处理里常见的需求,我来给你一步步讲清楚:
一、制作每张停留5秒的图片转视频
最方便的工具是FFmpeg,这是业内常用的开源视频处理工具,命令行操作就能搞定。
假设你的图片是按顺序命名的(比如img_001.jpg、img_002.jpg...这种规范命名),直接用这条命令:
ffmpeg -framerate 0.2 -i img_%03d.jpg -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4
参数解释:
-framerate 0.2:因为1/5=0.2,也就是每秒播放0.2帧,刚好每张图片停留5秒-i img_%03d.jpg:指定输入的图片序列,%03d代表三位数的序号(如果你的序号是两位数就改成%02d)-c:v libx264 -r 30 -pix_fmt yuv420p:这些是编码参数,保证输出的视频在大部分设备上都能正常播放
如果你的图片是随机命名的(比如photo1.jpg、summer.png这种),可以用通配符匹配:
ffmpeg -framerate 0.2 -pattern_type glob -i "*.jpg" -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4
二、给循环视频批量修改字幕从「1!」到「100!」
这个需求分两种情况,取决于你的字幕是软字幕(单独的字幕文件,比如SRT)还是硬字幕(已经嵌入视频里的),我分别说:
情况1:生成软字幕并和循环视频合并
首先你需要生成一个包含1到100序号的SRT字幕文件,手动写太麻烦,用个简单的Python脚本就能自动生成:
# 先替换成你的原视频时长(比如原视频说"1!2!"大概是2秒,自己测一下) video_duration = 2 with open("subtitles.srt", "w") as f: for num in range(1, 101): # 计算每个字幕的开始和结束时间 start_time = (num - 1) * video_duration end_time = num * video_duration # 把秒转换成SRT要求的「HH:MM:SS,mmm」格式 start_str = f"{start_time//3600:02d}:{(start_time%3600)//60:02d}:{start_time%60:02d},000" end_str = f"{end_time//3600:02d}:{(end_time%3600)//60:02d}:{end_time%60:02d},000" # 写入字幕条目 f.write(f"{num}\n") f.write(f"{start_str} --> {end_str}\n") f.write(f"{num}!\n\n")
运行这个脚本后,会生成subtitles.srt文件。
然后用FFmpeg把原视频循环100次,并加载这个字幕:
# -stream_loop 99 表示循环99次,加上原视频总共100次 ffmpeg -stream_loop 99 -i input.mp4 -i subtitles.srt -c:v copy -c:a copy -c:s mov_text output_with_subs.mp4
情况2:把字幕直接烧进视频(硬字幕)
如果你需要字幕直接嵌入视频里,不用单独的字幕文件,用这条命令:
ffmpeg -stream_loop 99 -i input.mp4 -vf "subtitles=subtitles.srt" -c:a copy output_hard_subs.mp4
这里的-vf "subtitles=subtitles.srt"就是把字幕渲染到视频画面上的滤镜参数。
要是你不知道原视频的时长,可以用这条命令查看:
ffmpeg -i input.mp4 2>&1 | grep Duration
备注:内容来源于stack exchange,提问作者David Pilling
相关产品推荐
相关产品推荐

