Visual C++ 9.0 2008 Express Edition现在除了IDE常有的缓慢臃肿外,可用性还算蛮好的。向离不开windows与IDE的同学推荐一下。
为了在多个开发平台上无障碍编译程序,CMake的学习与部署看来日益紧迫。CMake的学习曲线相比Autotools来说应该平坦很多。但是协调这么多的编译器也不是很容易的事情,不像Autotools只需要考虑GCC。所以也不是什么容易的事情啦。
现在,终于把wxWidgets的minimal的例子转化为Cmake工程,CMakeLists.txt文件如下:
PROJECT( MINIMAL )
SET(wxWidgets_CONFIGURATION mswu)
SET(wxWidgets_USE_LIBS base core)
FIND_PACKAGE(wxWidgets)
IF(wxWidgets_FOUND)
INCLUDE(${wxWidgets_USE_FILE})
ENDIF(wxWidgets_FOUND)
# Add binary called "minimal" that is built from the source file "minimal.cpp".
# The extension is automatically found.
ADD_EXECUTABLE(minimal WIN32 minimal)
# Link the executable to the wxWidgets library.
TARGET_LINK_LIBRARIES(minimal ${wxWidgets_LIBRARIES})
在VC2008Express下需要注意的是“ADD_EXECUTABLE(minimal WIN32 minimal)”中的WIN32关键字,这样工程链接代码时用的是“/SUBSYSTEM:WINDOWS”而不是默认的“/SUBSYSTEM:CONSOLE”。
CMake默认有findwxWidgets.cmake文件,通过“FIND_PACKAGE(wxWidgets)”指令,支持wxWidgets库的使用。通过学习findwxWidgets.cmake这样的.cmake文件是学习CMake的好方法之一哦。
4 04
2008
matthewgong
|
未分类
|
本来就知道gstreamer使用链式法则构建媒体流,但是具体是怎么干的一直没有深究。今天由一个需求带来了我对gstream的初次探索。
这个需求是这样的。我需要将一些飞行仿真的东西从屏幕上录下来。找了很久,终于找到了istanbul这个程序。恩,这个东西很简单、很方便。但是它默认的编码率好像设得很低,录出来动态的视频效果不好。
没关系,istanbul是python写的,可以很方便的看到其内部细节。我发现它是用gstream进行录像的。
final pipeline: istximagesrc name=videosource display-name=:0.0 screen-num=0 use-damage=false ! video/x-raw-rgb,framerate=30/1 ! videorate ! ffmpegcolorspace ! videoscale method=1 ! video/x-raw-yuv,width=1024,height=768,framerate=30/1 ! theoraenc ! oggmux name=mux ! filesink location=/tmp/tmpoNozkR
theoraenc插件使用的是默认的编码方式,太低了,我们升高它!
在/usr/share/python-support/istanbul/istanbul/main/screencast.py的102行,把
'! theoraenc' % (width, height, framerate)改为 '! theoraenc bitrate=1200 quality=63' % (width, height, framerate)
具体的可以查这里
这样最终的pipeline:
istximagesrc name=videosource display-name=:0.0 screen-num=0 use-damage=false ! video/x-raw-rgb,framerate=30/1 ! videorate ! ffmpegcolorspace ! videoscale method=1 ! video/x-raw-yuv,width=1024,height=768,framerate=30/1 ! theoraenc bitrate=1200 quality=63 ! oggmux name=mux ! filesink location=/tmp/tmpoNozkR
当然,这不是最佳的解决方法。应该把配置从gconf系统中读出来才是王道 :)