方块边缘吧 关注:385贴子:16,458
  • 22回复贴,共1

【不会有人看的算法】在秒数和帧数之间转换

只看楼主收藏回复

使用Java编写。Bug似乎修复了。如果有发现请反馈。
使用说明:
调用Convertor.Frame2Sec.convert(int frame)来将帧数转换为秒数。
调用Convertor.Sec2Frame.convert(double second)来将秒数转化为帧数。
异常处理:帧数如果是小数会按照默认异常处理。
秒数如果不是正确的Edge秒数会触发RuntimeException。


IP属地:英国来自Android客户端1楼2015-03-29 18:32回复
    import java.util.*;
    class Convertor{
    private final static double[] FRAME_LIST = new double[]{
    0.0,0.05,0.09,0.14,0.18,
    0.23,0.27,0.32,0.36,0.41,
    0.45,0.50,0.55,0.59,0.64,
    0.68,0.73,0.77,0.82,0.86,
    0.91,0.95
    };
    static class Frame2Sec{
    static double convert(int frame){
    double sec=frame/22+FRAME_LIST[frame%22];
    return sec;
    }
    }
    static class Sec2Frame{
    static int convert(double sec){
    int counter=-1;
    int fr=(int)Math.floor(sec)*22;
    for(double i:FRAME_LIST){
    counter++;
    if((int)(i*100)==(int)(sec*100)-(int)sec*100){
    fr+=counter;
    break;
    }
    else if(counter>=21){
    throw new RuntimeException("Illegal Second Value");
    }
    }
    return fr;
    }
    }
    }


    IP属地:英国来自Android客户端2楼2015-03-29 18:33
    收起回复
      看不懂……


      IP属地:北京来自Android客户端3楼2015-03-30 20:11
      收起回复
        请勿都“没人看的东西”,然而已经加精了


        IP属地:黑龙江来自iPhone客户端4楼2015-03-31 06:18
        收起回复
          略又一个没人看。


          IP属地:上海来自Android客户端5楼2015-03-31 18:05
          收起回复
            略看了等于没看遂没人看。。。


            IP属地:加拿大来自Android客户端6楼2015-03-31 19:05
            回复
              然而重复ray的方式置顶了。然而期待真能做一个App出来。


              IP属地:黑龙江来自iPhone客户端7楼2015-04-01 18:30
              收起回复
                String.format("%.2f", frames / 22D);


                IP属地:美国来自手机贴吧10楼2015-06-03 11:19
                收起回复
                  然而FRAME_LIST[1]应该为0.04而不是0.05


                  IP属地:广东11楼2016-04-08 00:39
                  收起回复