一 代码实现
//大概的代码
class DesktopCapturerSource : public webrtc::DesktopCapturer::Callback,
public rtc::AdaptedVideoTrackSource,
public rtc::MessageHandler
{};
void DesktopCapturerSource::OnCaptureResult(DesktopCapturer::Result result, std::unique_ptr<webrtc::DesktopFrame> frame)
{
//ARGB转I420
OnFrame(newFrame);
}
void DesktopCapturerSource::Start(){
//采集屏幕
}
起一个线程执行CaptureFrame()。
在conductor.cc中
rtc::scoped_refptr<webrtc::DesktopCapturerSource> dcs = webrtc::DesktopCapturerSource::Create();
dcs->Start();
rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> video_device = dcs;
rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track_(
peer_connection_factory_->CreateVideoTrack(kVideoLabel, video_device));
二 存在的问题
画面一直嵌套,根本不能用。
用ffmpeg命令行采集桌面,保存文件都是正常的。