pjsip 编译
来源:互联网 发布:网络机柜几u啥意思 编辑:程序博客网 时间:2024/06/11 03:37
转载一下网友的博文: http://sipsimpleclient.org/projects/sipsimpleclient/wiki/WIPVideo
WIPVideo
Notes while video is a work in progress. Repository: http://devel.ag-projects.com/cgi-bin/darcsweb.cgi?r=saul/python-sipsimple-video;a=summary
Dependencies
The following dependencies are required to build PJSIP with video support (including H264)
- SDL 2
- ffmpeg (libavformat, libswscale, libavcodec, libavutil)
- libx264
Versions I have tried:
- SDL (2.0.0-7655)
- ffmpeg (2.0 release)
- libx264 (snapshot-20130806-2245-stable)
Patches
If the above versions are used, PJSIP needs to be patched with the attached patch (avcodec.diff) or it won't compile. This does not occur when compiling it against the latest library versions on Debian unstable. No longer needed.
Installing dependencies (Debian / Ubuntu systems)
The situation here is a bit sad. Both Debian and Ubuntu ship with libav instead of FFmpeg, but libraries are called the same. PJSIP had to be patched in order to properly work with libav, and the patch as not yet been included upstream.
On Debian, when the Debian-Multimedia repositories are used (quite common) you get FFmpeg and not libav. Oh the joy!
Installing dependencies on Debian:
If using the Debian-Multimedia repositories, do not install libavcodec-extra.
Installing dependencies on Ubuntu:
Note on H.264 support: In order to have H.264 support, FFmpeg (or libav) need to be compiled with support for it. The standard packages don't, hence the need for installing the libavcodec-extra packages.
Compiling dependencies
All dependencies will be compiled to a directory in the user's HOME directory:
libx264
ffmpeg
SDL
There is a bug in SDL, when a Cocoa window is closed, it brings up the next window in the z stack. Comment this out in close() function of SDL_cocoawindow.m
Compiling PJSIP (pjsua, for testing)
Proposed API
API for video components is based on 2 different types of video capable entities:
- VideoProducer: a source for video data, for example a video camera or a remote video stream
- VideoConsumer: a sink or destination for video data, for example a video rendering window
Data flow
Data flow works in pull fashion, that is, a producer doesn't start to produce data until there is a consumer which will consume it.
VideoProducer
Produces video data.
Internal API:
- _add_consumer: attach a consumer, called by the consumer
- _remove_consumer: detach a consumer from a producer, called by the consumer
Public API:
- start: start producing video as soon as a consumer is attached
- stop: immediately stop producing data
- close: remove all consumers and stop producing video data
- producer_port: pointer to the pjmedia_port object
VideoConsumer
Consumes video data.
Public API:
- producer: (r/w property) attach this consumer to a producer, in order to render the video data generated by the producer. If set to None, it's detached
- consumer_port: pointer to the pjmedia_port object
- close: detach from producer and free all resources
Producer and consumer objects
- VideoDevice: Producer, acquires video from a user camera.
- VideoWindow: Consumer, renders video in an SDL window. Extra methods: show/hide. Properties: native_handle, size.
- LocalVideoStream: Consumer, takes video from a VideoDevice and sends it to the remote party.
- RemoteVideoStream: Producer, produces video sent by the remote party.
These are just theoretical objects, won't be implemented in the first go.
- VideoFileWriter: Consumer, saves incoming video data to a video file.
- VideoFilePlayer: Producer, produces video data out of a video file.
- VideoMixer: Producer/Consumer, consumes video from multiple sources and produces aggregated video data.
NOTE: pjsip does have a AVI file player, which also seems to support audio.
- pjsip 编译
- pjsip 编译
- pjsip编译
- pjsip编译
- pjsip编译及使用说明
- pjsip编译及使用说明
- pjsip编译及使用说明
- vs2008 编译pjsip
- pjsip编译与使用
- pjsip 编译配置项
- 编译android版本pjsip
- 编译android版本pjsip
- pjsip编译问题
- vc6编译pjsip 0.8
- PJSIP编译与使用说明
- vs2005编译pjsip
- PJSIP的编译
- VS2005编译PJSIP库
- 创建平台独立的高质量应用程序及代码库的要点
- quartz的Cron表达式
- Struts2的Annotation使用
- ubuntu13.10 x64 运行adb 报错
- 多线程的那点儿事(之避免死锁)
- pjsip 编译
- Basic UDP communication
- 设计模式--原型模式Prototype(创建型)
- 多线程的那点儿事(之多线程调试)
- 位移传感器MPU6050的使用
- JQUERY剪裁图片插件
- MATLAB之插值
- android 系统资源文件
- vijos 1028 最长上升序列。