1

ビデオを複数のファイルに分割せずに、ビデオの特定のフレームのみを高速化しようとしています。これを行うために使用したコードは次のとおりです。

AVISource("C:\Users\me\Desktop\source_10FPS.avi")   # get the 10 fps video source

a= Trim(0,100)                                       # trim the first 10  seconds
b= Trim(100,200).AssumeFPS(14, sync_audio=TRUE)      # trim and speed it up 
c= Trim(200,0).AssumeFPS(10, 1, true)                #trim and go back to original speed 

return (a+b+c)                                       # combine the 3 Trims

しかし、「ビデオのフレームレートが一致しません」というエラーが表示されます

任意の助けをいただければ幸いです

4

1 に答える 1

2

AssumeFPS(14) によって b の FPS を 14 に変更し、それを 2 つの 10 FPS フラグメントと連結しようとしているため、フレームレートは実際には一致しません。FPS は通常、VFR (可変フレーム レート) でない限り、ビデオの途中で変更することはできませんが、これは複雑です。

より簡単な解決策として、次のことができます。

Ar=Audiorate()                                                                  #get audio sampling rate of original clip
a= Trim(0,100)                                                                  #trim the first 10  seconds
b= Trim(101,200).AssumeFPS(14, sync_audio=TRUE).ChangeFPS(10).ResampleAudio(Ar) #trim and speed it up while keeping audio rate and fps intact
c= Trim(201,0)                                                                  #note that to avoid having repeating frames (#100 and #200) you need to change Trim numbers

おそらくよりスムーズな再生のために、ChangeFPS の代わりに ConvertFPS を使用することもできます。


詳細はこちら: http://avisynth.nl/index.php/FPS

于 2015-05-28T11:06:42.113 に答える