当前位置: 首页 > news >正文

ffmpeg提取通义万象视频封面超时

ffmpeg提取通义万象视频第一帧的时候,一直出现超时的问题,然后我去网上遍寻答案,首先是有说AI生成的视频的编码格式与我们一般标准格式的视频不一致,会把原数据从头部移至尾部,为此写了一个这样的方法,以此来把尾部的元数据提取至头部。

private File standardizeVideo(File originalVideo) { try { File tempVideo = File.createTempFile("standard_", ".mp4"); // 只修复封装,不转码!速度极快! ProcessBuilder pb = new ProcessBuilder( "ffmpeg", "-y", "-i", originalVideo.getAbsolutePath(), "-c:v", "copy", "-c:a", "copy", "-movflags", "faststart", // 把 moov 移到开头 tempVideo.getAbsolutePath() ); Process process = pb.start(); process.waitFor(5, TimeUnit.SECONDS); return tempVideo; } catch (Exception e) { log.error("视频标准化失败", e); return null; } }

但是依旧没有解决超时的问题,而后又使用ffmpeg的强制提取第一帧命令行

ProcessBuilder pb = new ProcessBuilder( "ffmpeg", "-y", "-probesize", "50M", // 扩大探测大小(修复万象视频) "-analyzeduration", "100M",// 延长分析时间(修复万象视频) "-i", videoFile.getAbsolutePath(), "-ss", "00:00:00.500", "-vf", "scale=iw:ih", // 强制渲染一帧 "-vframes", "1", "-q:v", "2", coverFile.getAbsolutePath() );

但是依旧没有解决。
最后发现其实是缓存区满了,导致子进程挂起,所以应该启动单独线程消费 ffmpeg 的输出流

new Thread(() -> { try (BufferedReader reader = new BufferedReader( new InputStreamReader(process.getInputStream()))) { String line; while ((line = reader.readLine()) != null) { // 丢弃输出,防止缓冲区满 } } catch (Exception e) { // 忽略 } }).start();

使用这个代码来做到丢弃输出,防止缓冲区爆满的效果。
最后ffmpeg可以正常提取视频第一帧。

http://www.jsqmd.com/news/1044928/

相关文章:

  • Python-docx实战:深度解析Word段落样式与字体的继承机制
  • BG3ModManager完整使用指南:博德之门3模组管理终极教程
  • 爱回收买二手苹果靠谱吗?我拆了质检流程给你看 - 新闻快传
  • 铜陵GEO服务商代理加盟选型靠谱推荐:2026年铜陵GEO优化城市合伙人合作路径与代理排名更新 - 科技快讯
  • 2026年|10款降AI率工具红黑榜:解决AI率过高问题(论文降AI指南)
  • 2026昆山外墙渗水修缮行业适配指南:本地服务商适配推荐与选型解析 专业防水公司排名推荐(2026年6月防水补漏最新TOP权威排名) - 鼎壹万修缮说
  • 2026年湖北百合种植基地推荐排行榜:百合技术/百合回收/百合种苗案例参考 - 新闻快传
  • 【集合论】卡氏积:从二维到多维的构建、性质与计数法则
  • 深耕贵阳防水领域,匠心守护林城安居 微顺虹防水初心筑品质,服务护林城万家 - 徽顺虹
  • 储能系统网络合规架构:基于本地隔离与安全中继的边缘侧实战
  • 如何构建突破性的实时弹幕采集系统:抖音直播数据抓取的3大创新技术解密
  • 告别龟速与超时:全方位解决 git clone 网络难题的实战指南
  • 2026昆山卫生间维修品牌适配分析与服务商精选推荐 专业防水公司排名推荐(2026年6月防水补漏最新TOP权威排名) - 鼎壹万修缮说
  • 嵌入式MCU电气特性与FLASH操作深度解析:从数据手册到稳定设计
  • 终极指南:3分钟学会用Rufus制作系统启动盘
  • 武汉宝马车型音响升级官方门店,6月让你的宝马音响脱胎换骨,问界原车音响升级/坦克音响改装,宝马车型音响升级旗舰店哪家靠谱 - 音响改装门店分享
  • 2026 郑州八大装修公司综合实力排行榜 - GrowthUME
  • 成都家具安装推荐良匠千艺2026口碑榜 - 我叫一
  • 2026沈阳非急救转运救护车TOP5盘点|辽中同城、浑河跨桥、棋盘山山地、院区转诊首选康跃转运 - 吉修匠
  • 爱回收到店估价和到手价差多少?iPhone 15 Pro实测报告 - 新闻快传
  • 西安家具安装推荐良匠千艺2026口碑榜 - 我叫一
  • 深耕湖州防水领域,匠心守护湖城安居 微顺虹防水初心筑品质,服务护湖城万家 - 徽顺虹
  • Python办公01:一键合并多文件夹下百份 Excel 自动汇总至总表
  • 2026长沙防水补漏权威指南:卫生间/屋面/外墙/地下室正规施工+透明报价+避坑全攻略 - 苏易修缮
  • 郑州装修公司性价比TOP5:花最少的钱装最满意的家 - GrowthUME
  • 从“手工作坊“到“智能工厂“:商业卫星制造的革命性转型
  • MC9S12XE SPI通信协议深度解析:从寄存器配置到实战调试
  • 八股文·数据结构
  • 深耕盐城防水领域,匠心守护盐渎安居 微顺虹防水初心筑品质,服务护鹤城万家 - 徽顺虹
  • CUDA软件实现跨线程块同步