2011-07-05 3 views
1

완전히 새로운 기능! 제목에서 알 수 있듯이 웹캠에서 캡처 한 H.264를 사용하여 Live555를 통해 OpenCV 스트림을 제공하려고합니다.Windows에서 Live555를 통해 라이브 OpenCV H.264 스트림을 서비스하십시오.

내가 좋아하는 뭔가를 시도했습니다하십시오 RTSP 스트림을 읽기로

#define LOCALADDRESS "rtsp://localhost:8081" // Address media is served 
#define FOURCCCODEC CV_FOURCC('H','2','6','4') // H.264 codec 
#define FPS 25        // Frame rate things run at 
m_writer = cvCreateVideoWriter(LOCALADDRESS, FOURCCCODEC, FPS, cvSize(VIDEOWIDTH, VIDEOHEIGHT)); 

을 유사하게 수행됩니다 그렇게 작동하지 않습니다

CvCapture *capture = cvCreateFileCapture(LOCALADDRESS); 

내가 Live555에 의존하고있다. H.264로 인코딩 된 CvCapture를 Live555가 제공하도록 어떻게 공급합니까? bytestream을 다른 사람에게 제공하는 것이 힘든 방법이 아닌 것처럼 보이거나 뭔가를 놓친 것 같습니다.

답변

3

내가 아는 바로는 직접적인 방법이 아닙니다. 확실히 수백 줄의 코드만으로는 아무 일도 일어나지 않을 것입니다.

주문형 RTSP 서버를 사용하고 싶다고 가정합니다. 여기서는 서버가 클라이언트가 연결되기를 기다리고 앉아 있고 클라이언트가 연결을 설정하고 요청할 때 스트리밍을 시작합니다)? 그렇다면 this item in the Live555 FAQ applies.

However, Live555 is a weird (possibly misguided?) library이므로 불행히도 그보다 조금 더 복잡합니다. Live555는 이벤트 루프와 함께 단일 작업 스레드를 사용하므로 원시 바이트 스트림을 버퍼 또는 대기열에 넣은 다음 H.264 스트리밍을위한 하위 세션 클래스에서 다음을 확인하고 확인할 것입니다. 대기열에 사용 가능한 데이터가 있으며 그럴 경우 전달하십시오. 그렇지 않은 경우 몇 밀리 초 후에 다른 수표를 예약하십시오. NALU 식별자를 live555에 전달하기 전에 NALU 식별자를 제거해야합니다.

관련 문제