2010-01-07 4 views
0

곧 우리는 많은 것들을하는 오픈 소스 소프트웨어로 프로젝트를 진행할 것이며 최대 48 시간 동안 USB 기반 카메라의 라이브 피드를 캡처하는 것에 관심을 가질 것입니다. 그것을 논스톱 루프로 덮어 씁니다. 이것은 응용 프로그램의 다른 작업과 병행하여 진행됩니다. 또한 최소 48 시간의 캡처 된 피드를 메뉴 옵션으로 사용자에게 표시해야합니다.리눅스 + 비디오 캡처 및 디스플레이 언어

모듈의 오디오/비디오 부분을 고려하여 적절한 오픈 소스 기술 스택을 제안 해 주시길 바랍니다.이 기능을 사용하지 않으면 Qt를 사용하여 제 물건을 처리 할 수 ​​있지만 어려운 기능이됩니다 . Linux 플랫폼에서 Qt를 사용하여 GUI 응용 프로그램을 개발했지만 응용 프로그램에서 비디오를 녹화하고 표시 할 수있는 기능을 제공하지 못했습니다. Qt는 phonon을 가지고 있지만 그것을 설정하는 것은 악몽입니다. 이전에 여러분 중 일부는 v4linux를 제안했습니다. RHEL 4 시스템에서 capture.c 샘플 프로그램을 컴파일하려고 시도했지만 다음과 같은 오류가 발생했습니다.

usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:436: warning: no semicolon at end of struct or union 

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:436: error: syntax error before '*' token 

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:438: error: syntax error before '*' token 

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:438: warning: data definition has no type or storage class 

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:439: error: syntax error before '}' token 

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:810: error: field `win' has incomplete type 

이렇게 막 다른 골목에 쳐들어서는 안되며, 구체적인 예를 생각해 내지 못했습니다. 또한 website은 자주 업데이트되지 않아 개발 프로세스가 정체되어 있음을 나타냅니다.

응용 프로그램이 메뉴 기반 사용자 상호 작용을 사용하여 그래픽으로 표시되기 때문에 그래픽 부분에 Qt 또는 비슷한 것을 사용해야합니다. 두통은 내가 알아낼 수 없었던 것입니다. 어떻게 구현할 수 있습니까/더미 응용 프로그램에서 비디오 캡쳐/디스플레이 기능을 통합 할 수 있습니까 (제 Qt와 함께 시도한 것은 여러분 중 일부가 다른 라이브러리 또는 언어로 수행 한 것일 수 있습니다) .

편집 : videodev2.h의 로컬 복사본을 가져 와서 define 문을 추가하여 __user 매크로를 포함하여 프로그램을 컴파일 할 수있었습니다. 그러나 이제는/dev/video 장치를 찾을 수 없으므로 실행되지 않습니다. 그래서 다시 video4linux에서 막 다른 골목에 갇혀 있습니다.

+0

@shylent, 완전히 답변/제안하면 답변을 수락합니다. 나는 어떤 게시물도 받아 들일 수 없다. 제가 답변/제안에 완전히 만족하지 못한다면, 저는 그것을 공개하고 싶습니다. 네, 우분투, RHEL4,5 및 openSuse를 사용해 보았습니다. 도움이된다면 도움이 될 것입니다. – rocknroll

답변

0

FFmpeg 라이브러리 라이브러리를 사용해보십시오. 상당히 최근에 (필자는) 비디오 캡처를 위해 V4L과 V4L2를 지원하는 libavdevice 라이브러리도 함께 제공되며 avdevice 소스에서 비디오를 읽고 avcodec을 사용하여 FFmpeg 파이프 라인을 작성하는 것은 어렵지 않습니다. 파일로 avformat ...

0

gstreamer은 캡처를위한 매우 유용한 멀티미디어 스택이며 pygst 및 PyQt4 바인딩은 Python에서 사용하기 위해 존재합니다.

0

"/ dev/video를 찾을 수 없다"고 말하면 Linux가 장치 번호를 지정하기 때문입니다. .c 파일을 보았 더라면 몇 가지 arg_opts가 보였을 것입니다. -d ... (여기서 ...는/dev/video0이됩니다) 또는 .c 파일로 이동하여 0을 추가하십시오/dev/video에서 찾을 수 있습니다. int main의 시작 부분에서 590 행의 어딘가에 있습니다.