java+ffmpeg

最近有个事件回放的功能需求:移动端会将所有截图(webp格式)以及操作手势信息(坐标+时间戳)发送到服务端,然后服务端将图片于位置信息进行合成(重新绘图),然后调用ffmpeg工具将图片连接成视频,供web前段播放。以下是主要步骤:

  1. 操作员在服务端配置:指定的客户(deviceId,userId),指定事件回放的时间段(t1,t2),这些数据存入Oracle的表RAZOR_EVENT_REPLAY 中

  2. 手机端启动应用时,访问接口/pushpolicyquery,请求参数为{"appKey":"xxxxxxxxxxx","useridentifier":"xxxxxxxxxxx","deviceid":"xxxxxxxxxxx"}
    服务端根据请求的userId或deviceId以及APPkey查询表RAZOR_EVENT_REPLAY、RAZOR_CHANNEL_PRODUCT,若有其事件回放的配置信息,则返回该信息,否则返回空,返回数据:

    eventReplayConfigure =
    [{ "erId" : "1049096" , "erUserId" : "xxx" , "erDeviceId" : "xxxxx" , "erTimeStart" : "2017-01-02 13:08:31" , "erTimeStop" : "2017-01-02 13:08:31" , "erProductId" : "xxx" , "erCreateTime" : "xx" , "erFlag" : "x" } ,
      { "erId" : "xxxxxxx" , "erUserId" : "xxx" , "erDeviceId" : "xxxxx" , "erTimeStart" : "2017-01-02 13:08:31" , "erTimeStop" : "2017-01-02 13:08:31" , "erProductId" : "xxx" , "erCreateTime" : "xx" , "erFlag" : "x" } ,
                                             .................]

     

     
  3. 当手机端APP满足一定条件后,获取事件回放的相关数据(图片名:eventReplay_Id+时间  ,比如10029829_1487765797853),并将数据发送至接口/saveEventReplay接口
    上传图片数据:attachment=xxxx
    上传手势等文本数据:

    content={ "data" :[{ "erId" : "1049096" , "data" :{ "motion_x" : "10" , "motion_y" : "10" , "time" : "1487765797853" }} ,
                                                       { "erId" : "1049096" , "data" :{ "motion_x" : "11" , "motion_y" : "12" , "time" : "1487765798100" }} ,
                                                     .......]};


    服务端保存成功后返回:   flag == 1    保存成功
                                           
                                     

  4. 服务端先将图片、操作手势等信息保存至本地,

    利用ffmpeg将webp格式的图片转化为jpg格式:ffmpeg -i webwxgetmsgimg.webp test.jpg


    后期调用jar包获取本地数据,并根据操作手势信息将水印加到图片上,然后再保存至本地

  5. 利用linux shell脚本调用第三方软件ffmpeg将图片连接成视频,供web端调用显示
    1. 多张图片连接成视频:

      ffmpeg -r 5 -f image2 -i frames/img_out%4d.jpg  test22.mp4                        #每秒5帧图片

6.将第4,5步写为shell 脚本,方便一次调用


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值