万科 发表于 2015-5-22 20:41

暁美ほむら 发表于 2015-5-22 21:02

我很负责任的告诉你没有
因为每个镜头时间不肯能一样

rrp 发表于 2015-5-22 21:22

我觉得不难,甚至画面都不用分析,把实时码率突变的时间点提出来就行。

白木亚绘香 发表于 2015-5-22 21:36

播放器肯定是没有的,得去专业软件里找,而且专业软件也不能保证100%准确

比如DaVinCi Resolve就可以自动识别镜头切换,只要没有花里胡哨的转场的话识别率还挺高,就看你是什么需求值不值得折腾这个了

无名的旅人 发表于 2015-5-22 22:38

本帖最后由 无名的旅人 于 2015-5-22 23:21 编辑

理论上是可以实现的,原理其实非常简单,比较当前帧与前一帧的画面相似度(如PSNR/SSIM),若非常低则当前帧为场景切换点;但此种实现方式必须首先由软件预览一遍整个视频并建立一个log之后才能分析出结果,媒体播放器想实现这个功能是不可能的(硬说的话实时预处理理论上也可行……还是略勉强了……),简单易用的傻瓜软件据我所知也不存在

相信楼主问这个问题目的仅仅是希望在看视频的时候跳转功能能更加实用一点,直接一键跳到下个场景,很遗憾这是实现不了的……
视频压制时倒是有办法帮助观众实现类似的效果,比如keyint infinite配合高scenecut参数,可以尽量让编码器在场景变换时才插入IDR;在播放如此压制的视频时,大多数情况下直接用播放器的“跳转到下一个关键帧”功能即可跳到下一个场景


如若用AVS实现的话我给个简单的例子:

a=LWLibavVideoSource("Z:\needforspeed-tlr2_h1080p.mov").trim(1,3612)
b=LWLibavVideoSource("Z:\needforspeed-tlr2_h1080p.mov").trim(0,3611)
compare(a,b,logfile="z:\log.txt")

跑一遍这个scrip会得到一个logfile,节选如下(第一个值为帧号,最后一个值为PSNR,暂且只看这两个数据):

   152    0.0000    +0.0000    0      0    111.8416
   153    0.0000    +0.0000    0      0    111.8416
   154    0.0000    +0.0000    0      0    111.8416
   155   70.3094   +68.4349222    -44      8.3280
   156    1.1374    +0.0543   70    -17   41.0940
   157    1.0712    -0.0700   69    -17   41.4131
   158    1.0872    +0.0515   64    -20   41.5274
   159    1.0592    -0.0584   75    -20   41.5056
   160    1.0017    +0.0608   65    -22   42.1723
   161    0.9836    -0.0572   84    -20   42.1913
   162    1.0458    +0.0654   62    -17   41.7453
   163    1.0271    -0.0536   81    -17   41.7990
   164    1.0256    +0.0563   64    -18   41.8621
   165    0.9897    -0.0560   72    -12   41.9399
   166    1.0215    +0.1212   63    -12   41.6391
   167    1.0015    -0.0569   51    -14   41.6518
   168    1.0322    +0.1223   49    -14   41.5174
   169    1.0174    -0.0908   70    -15   41.5337
   170    7.6773    -7.3687   56    -18   27.9118
   171    3.0963    -2.6573   51    -14   35.2013
   172    3.1618    -2.7837   50    -12   35.2873
   173    3.2639    -2.9427   55    -11   35.0137
   174    3.1217    -2.7912   53    -16   35.3935
   175    3.2496    -2.9732   37    -17   35.0726
   176    3.0388    -2.7552   36    -13   35.6071
   177    3.1884    -2.9604   28    -12   35.2466
   178    2.9615    -2.7169   24    -16   35.8582
   179    3.1371    -2.9551   21    -14   35.4232
   180    2.9475    -2.7149   19    -12   35.9193
   181    3.1712    -3.0066   23    -11   35.3562
   182    2.9039    -2.7186   16    -10   36.0272
   183    3.1634    -2.9902   18   -6   35.3883
   184    2.8722    -2.7060   13   -7   36.1490
   185    3.1468    -2.9864   13   -7   35.4704
   186    2.9031    -2.7493   15   -7   36.0593
   187    3.1203    -2.9991   13   -6   35.4779
   188    2.8317    -2.6780    8   -5   36.1239
   189    2.9624    -2.8814    9   -6   35.6305
   190    2.7516    -2.6117    7   -8   35.8277
   191    2.3662    -2.2920    4   -5   36.1223
   192    1.8505    -1.7274    4   -6   36.5645
   193    0.6117    -0.5579    2   -2   42.3644
   194    0.0000    +0.0000    1      0    100.3803
   195    0.0000    -0.0000    0   -1   96.7901
   196   53.4240   +50.8992221    -23   11.2534
   197    0.8157    +0.1780130    -23   35.9253
   198    0.7090    -0.1058108    -21   38.3351
   199    0.6714    +0.0295117    -25   39.0155

可以看到在第155帧与196帧时数值走势出现了骤变且PSNR值极低,说明这两个位置就是scene cut
152、153、154、194、195的PSNR奇高,说明此两处画面与前一帧近乎完全一致;实际上都是黑帧
170帧PSNR相比之前的趋势出现了显著降低,但幅度仍不是特别大、数值仍不是很低,这种情况下就有可能出现误判了,既有可能是小幅场景变换(比如在同一个房间内摄像机切换到了另一个近似角度)、也有可能是fade out,只能亲自看一看加以确认了;实际上是fade out

编辑:刚反应过来,如果在compare中指定channels="uv"的话不会比较luma,对于fade就不会误判了
页: [1]
查看完整版本: 有什么能一个一个镜头快进的media player吗?