JAVA + FFMPEG多线程处理

Aaron_zhao_ 2015-02-26 10:39:00
有3个转码服务器,每台服务器上都安装了FFMPEG软件。有多个视频文件需要转码,视频文件相关数据已存入数据库中。
需求:主程序一直运行,一直查询数据库,如果发现有未进行转码的视频数据就将该视频数据分到一台空闲转码服务器上进行转码。用多线程。
...全文
953 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
FFMPEG 支持命令行调用, 支持多进程同时使用; 我们目前就用它搞; 不过,有的进程会挂死,一直挂在那里占用资源,调用者也不知道其是个什么状态,这是个麻烦。 我用java 写了一些视频转换任务的接收,执行,排队启用的东西,不过我的初衷是 任务实时接收(用UDP收任务)没有存到数据库里, 后来加了数据库,结果更加麻烦了,要考虑转换任务的排他(就是启用多个转换调度程序时,不能重复转换 以及转换完的要丢到历史任务中去)
MiceRice 2015-02-27
  • 打赏
  • 举报
回复
对FFMPEG不太熟悉,是否支持命令行调用方式(不支持的话就比较麻烦了)?是否支持多进程同时运行? 其实你并发规模不大,可以每个机器都启动一个程序,定期轮询数据库,发现有新到未处理数据就抢占该任务(设置标志位和抢占时间点),启动一条线程然后用Runtime去调用FFMPEG的命令行,然后处理完毕后再更新状态(标志位和完成时间点)。 另一个需要设计处理的是异常出错情况,那么会有某个数据的状态标志一直是“处理中”,但总是不结束,这种要么得考虑运行过程中有监控机制来捕获异常然后重置标志位,要么就是粗暴点直接定期重置这些超期未完结的标志位。

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧