You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现随机视频播放及1-4秒随机时长遇阻求助

解决视频随机时长播放的问题

你的代码核心问题是随机时长只生成了一次:你把intervall = random.randint(1,4)写在了while循环外面,整个程序运行期间只会产生一个固定的随机数,每次播放都用同一个时长,自然达不到每次随机1-4秒的效果。

接下来给你修正后的方案,同时优化几个潜在问题:

关键修改点

  • 将随机生成播放时长的代码移到while循环内部,每次循环都重新生成1-4秒的随机值
  • 增加视频长度校验,避免视频本身比随机时长还短导致报错
  • 改用ffprobe的结构化输出参数,更稳定地获取视频时长,避免解析文本出错

修正后的完整代码

import random
import time
import subprocess
import vlc
import os
import json

# 创建视频列表(仅包含文件,排除子文件夹)
subfolder = "videos"
videos = [os.path.join(subfolder, f) for f in os.listdir(subfolder) if os.path.isfile(os.path.join(subfolder, f))]

# 初始化VLC播放器
player = vlc.MediaPlayer()

try:
    print("脚本运行中... 按Ctrl+C退出")
    while True:
        # 1. 随机选择一个视频
        video_path = random.choice(videos)
        
        # 2. 每次循环随机生成1-4秒的播放时长
        intervall = random.randint(1, 4)
        
        # 3. 用ffprobe获取视频时长(更可靠的结构化方式)
        try:
            result = subprocess.check_output(
                ['ffprobe', '-v', 'quiet', '-show_format', '-print_format', 'json', video_path],
                stderr=subprocess.STDOUT
            )
            data = json.loads(result)
            video_duration = float(data['format']['duration'])
        except Exception as e:
            print(f"获取视频时长失败: {e}")
            continue
        
        # 4. 校验视频时长是否足够,避免报错
        if video_duration <= intervall:
            print(f"视频{video_path}时长不足{intervall}秒,跳过")
            continue
        
        # 5. 计算随机起始位置
        max_position = video_duration - intervall
        position = random.uniform(0, max_position)
        
        # 6. 播放视频并跳转到指定位置
        player.set_mrl(video_path)
        player.play()
        # 短暂等待播放器初始化,确保位置设置生效
        time.sleep(0.1)
        player.set_time(int(position * 1000))
        
        # 7. 播放指定时长后切换下一个视频
        time.sleep(intervall)
except KeyboardInterrupt:
    print("脚本已退出")

额外说明

  • 优化了视频列表生成逻辑,自动过滤子文件夹
  • 用ffprobe的JSON输出解析时长,比原文本匹配方式更稳定,不会因为输出格式变化失效
  • 增加异常处理,单个视频出错不会导致整个脚本崩溃
  • 添加播放器初始化等待,解决set_time可能失效的问题

内容的提问来源于stack exchange,提问作者mondher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:20:18