나는 시뮬레이션 애니메이션을 렌더링하고 초당 여러 PNG 이미지 파일을 출력하고 이러한 파일을 디스크에 저장하는 Open GL 응용 프로그램을 보유하고 있습니다. 이 이미지 파일을 HTTP 프로토콜로 스트리밍하는 비디오로 스트리밍하여 웹 브라우저에서 애니메이션 비디오를 볼 수 있습니다. 이미 websocket에서 연결을 처리하는 견고한 소켓 서버가 있으며 모든 핸드 쉐이크 및 메시지 인코딩/디코딩 부분을 처리 할 수 있습니다. 내 서버 프로그램과 OpenGL 응용 프로그램은 C++로 작성되었습니다.연속 PNG 출력 이미지 파일을 웹 브라우저에서 라이브 비디오 스트리밍으로 인코딩
마음에 몇 가지 질문 :
이 OpenGL을 애니메이션 출력 스트림 내 웹 브라우저에서 볼 수있는 가장 좋은 방법은 무엇입니까? 비디오 이미지 프레임은 OpenGL 응용 프로그램에서 PNG 이미지 파일로 동적으로 (연속적으로) 생성됩니다. 웹 브라우저는 OpenGL 디스플레이 출력에 해당하는 비디오를 표시해야합니다 (최소 지연 시간 포함).
어떻게 C/C++를 사용하여 프로그래밍 방식으로 연속 (라이브) 비디오로 인코딩 할 수 있습니까? (수동으로 이미지 파일을 Flash Media Live Encoder와 같은 스트리밍 서버 소프트웨어로 푸시하지 않고)? 어떤 비디오 형식을 만들어야합니까?
웹 소켓을 사용하여 애니메이션 데이터를 송수신해야합니까? 아니면 더 좋은 방법이 있습니까? (JQuery Ajax가 대신 호출하는 것처럼,이 작업을 수행하고 있지만이를 구현하는 올바른 방법을 안내해 준다). 이 라이브 비디오 스트리밍이 다른 브라우저에서 작동하면 좋을 것입니다.
HTML5 동영상 태그는 실시간 동영상 스트리밍을 지원합니까, 아니면 특정 URL/디렉토리 (실시간 스트리밍이 아닌)에있는 전체 동영상 파일에서만 작동합니까?
C/C++/Java 응용 프로그램에서 일부 이미지 프레임을 생성하는이 라이브 비디오 스트리밍을 수행하고 웹 브라우저에서이 출력을 비디오 스트리밍으로 사용하는 기존 코드 샘플 (자습서)이 있습니까? Google에서 검색하는 데 몇 시간을 소비 한 후에이 주제에 대한 자습서를 거의 찾을 수 없었습니다.
이 대답은 해당 질문에 대한 효율적인 솔루션을 제공하기 때문에이 대답에 동의라고 표시했습니다. 프레임을 비디오 엔코더에 직접 입력하는 것이 실제로 PNG 파일을 디스크에 출력하는 것보다 효율적입니다. ffmpeg로 라이브 인코딩을하는 것은 쉽지 않을 수도 있지만 라이브 입력 스트림을 듣기 위해 ffmpeg 용 프로그램을 작성하려고합니다. 라이브 입력 스트림을 수신하고 이러한 입력 스트림을 자동으로 인코딩하는 ffmpeg 서버 프로그램을 작성하는 데 사용할 수있는 C++ 예제가 있습니까? 또는 대안으로, 이미지의 프레임을 Red5 서버에 RTMP 스트림으로 직접 보낼 수 있습니까? –
@all_by_grace 아마도 ffmpeg에 다소 복잡한 명령 행을 쓰지 않고도이 작업을 수행 할 수 있습니다. GL 프로그램에서 "YUV4MPEG2"형식의 프레임을 stdout (또는 다른 파이프)에 쓸 수 있다면 다음과 같은 명령 줄을 사용하여 비디오를 인코딩하고 Red5 서버로 보낼 수 있습니다. ffmpeg -f yuv4mpegpipe -i pipe : 0 - vcodec libx264 -vpre normal -f flv rtmp : // localhost/live/testStream 다음은 프레임 형식에 대한 링크입니다. http://kylecordes.com/2007/pipe-ffmpeg – vipw