LoginSignup
4
4

More than 5 years have passed since last update.

OS X MavericksでSDLが画面初期化できなくて落ちるやつ

Last updated at Posted at 2015-01-09

週末はホビープログラマ、ということで。
ちょっと MLT (Media Lovin' Toolkit) で遊ぼうと思って

最新の mlt-0.9.2 をビルドして、Pythonバインディングのサンプル (mlt-0.9.2/src/swig/python/play.py) に適当な動画ファイルを渡して実行したら

Python[7087:d07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error (1000) creating CGSWindow on line 263'

とか出て落ちるわけですよ
PythonとかSWIGのせいではなさそうです

mlt.Consumer() で "sdl" 以外のConsumerプラグイン、例えば "sdl_audio" とか "rt_audio" を指定するとちゃんと音だけ出るのです

SDLを入れなおしたりビルドしなおしたりXCodeをアップデートしたり、色々やりましたけど

結論からいうと、
http://stackoverflow.com/questions/12641755/sdl-video-init-causes-exception-on-mac-os-x-10-8
にある pre_init() をまるっと mlt-0.9.2/src/modules/sdl/consumer_sdl.c に貼り付けて、consumer_start() の先頭で呼ぶようにしたら解決しました。
(libSDLmainをリンクする、というのも試してみたけどうまくいかなかった)

Macでは、SDLのビデオカードの初期化に問題があって、それが最新版 (SDL 1.2.15)でも直っていないとかそんなような話のようです。

====

ちなみに
なんでOpenCVじゃなくて?って思われた方の為に。

先に試してます。

  • cv2では開きたい動画が開けなかった(codecの対応が弱いのか?ffmpegでは開けてるのだけど)
  • 音声も利用したい

といった辺り。pyffmpeg はメンテナンスされてなくて最新のffmpegに対応してないらしいし。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4