2016-12-24 6 views
0

보스 (Boss)는 내 평소 야구장에서 조금 벗어난 도전을 나에게 건네면서 사용해야 할 기술/프로젝트를 식별하는 데 어려움을 겪고 있습니다. (나는 '새로운'것을 요청했다.)일련의 인 메모리 비트 맵에서 WebM 라이브 스트림을 생성하려면 어떤 기술을 사용해야합니까?

직업 : 버퍼에서 비트 맵을 초당 10 회 픽업하고 10fps 비디오를 생성/제공 할 수있는 .NET 서버 측 프로세스를 빌드한다. 최신 HTML5 지원 브라우저에서 표시 할 스트림

여기에 어떤 레고 블록을 찾아야합니까?

데이브

답변

2

FFmpeg를 사용하고 싶습니다.

Your App -> FFmpeg STDIN -> VP8 or VP9 video wrapped in WebM 

당신이이 이미지를 스트리밍하는 경우, 할 아마도 가장 쉬운 것은 원시 RGB 또는 RGBA 비트 맵으로 비트 맵을 디코딩하고, 다음는 FFmpeg의 STDIN 각 프레임을 쓰기 : 여기에 기본 흐름이다. 먼저 크기와 색상 정보를 결정하기 위해 첫 번째 비트 맵을 읽은 다음 올바른 매개 변수로 FFmpeg 하위 프로세스를 실행해야합니다. 작업이 끝나면 파이프를 닫으면 FFmpeg에서 출력 파일을 완성합니다. 원한다면, FFmpeg의 STDOUT을 S3의 BLOB 저장소 같은 곳으로 리디렉션 할 수도 있습니다.

모든 이미지를 즉시 업로드하고 을 누른 다음을 만들면 훨씬 쉽습니다. 순서대로 파일 목록을 만들고 FFmpeg를 실행하십시오. FFmpeg가 완료되면 비디오가 있어야합니다.

FFmpeg 명령 줄을 만드는 방법을 이해하는 데 도움이되는 추가 정보가 하나 있습니다. WebM은 컨테이너 형식입니다. 그것은 비디오 스트림의 수, 오디오 스트림의 수, 해당 스트림에 사용할 코덱, 자막 스트림, 축소판 이미지와 같은 메타 데이터 등을 추적합니다. WebM은 기본적으로 Matroska (.mkv)이지만 브라우저 제조업체가 WebM 표준을 쉽게 채택 할 수 있도록 일부 기능이 비활성화되었습니다. WebM 내부에서 적어도 하나의 비디오 스트림이 필요합니다. VP8 및 VP9는 매우 호환되는 코덱입니다. 오디오를 추가하려면 Opus를 표준 코덱으로 사용할 수 있습니다. 당신이 얻을 수있는

일부 자원이 시작 :

+0

ffmpeg의 ST 브라우저에 DOUT을 사용 하시겠습니까? – davecove

+0

@davecove 출력을 브라우저로 직접 스트리밍 하시겠습니까? 스트림을 클라이언트 스트림으로 파이프하면됩니다. .NET을 사용한 이후로 오랜 세월이 지났지 만 그와 비슷한 것입니다. 콘텐츠 형식 헤더가 정확하고 청크 분할 전송 인코딩을 사용하고 있는지 확인하십시오. – Brad