[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002525] Re: Ruby-LibFAME



村上@神戸大です. 

From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx>
Date: Fri, 18 Nov 2005 01:12:51 +0900

> できたビデオが速すぎるので、
> 
> #params.frame_rate_num = 25  # fps (frames per second)
> 
> のコメントを外して値を小さくしたのですが、結果は変りませんでした。
> 1秒辺りのコマ数を減らすにはどうすればいいでしょうか?

上の値を10とかにしてみると,

[murashin@faris ~/temp/] > ruby ./dcl.rb
libfame 0.9.1 Copyright (C) 2000-2002 Vivien Chappelier
This library is provided under the terms of the LGPL. See COPYING for details
MPEG-1 profile 320x320 @ 10.00 fps 75% quality adaptive search range
I coding sequence
Using MMX arithmetic
 *** MESSAGE (SWDOPN) ***  GRPH1 : STARTED / IWS =  4.                         
Warning: MPEG-1 doesn't support frame rate 10/1! Using 25 fps instead.
(以下略)

と怒られるので, このメッセージをlibfameの中身から探すと, 

libfame-0.9.1/src/fame_syntax_mpeg1.c に

  if(fps_num == 60    && fps_den ==    1) frame_rate = 8; /* 60         fps */
  if(fps_num == 60000 && fps_den == 1001) frame_rate = 7; /* 60000/1001 fps */
  if(fps_num == 50    && fps_den ==    1) frame_rate = 6; /* 50         fps */
  if(fps_num == 30    && fps_den ==    1) frame_rate = 5; /* 30         fps */
  if(fps_num == 30000 && fps_den == 1001) frame_rate = 4; /* 30000/1001 fps */
  if(fps_num == 25    && fps_den ==    1) frame_rate = 3; /* 25         fps */
  if(fps_num == 24    && fps_den ==    1) frame_rate = 2; /* 24         fps */
  if(fps_num == 24000 && fps_den == 1001) frame_rate = 1; /* 24000/1001 fps */
  if(!frame_rate) {
    FAME_WARNING("MPEG-1 doesn't support frame rate %d/%d! "
                 "Using 25 fps instead.\n", fps_num, fps_den);
    fps_num = 25;
    fps_den =  1;
    frame_rate = 3; /* 25 fps */
  }

というのが見付かります. 
おそらく, フレームレートは23.976..までしか落せないと思います. 
mpeg_encodeのマニュアルにもフレームレートは
上の8つの値しか受け付けないと書いてあるので, 
MPEG1とはたぶんそういうものなのだと思います.

私がmpeg_encodeを使うときには, 同じ絵を何フレームにも
渡って使いまわすことで解決しています. 
----
Shin'ya Murakami [murakami@xxxxxxxxxxxxxxxxxxxxxxx]