2011-10-24 2 views
14

HTML5로 내 웹 사이트 용 비디오를 제작하고 있습니다. 이상적으로 말하면, 하나의 조용한 비디오 파일과 다른 언어로 된 5 개의 다른 오디오 트랙이 비디오와 동기화됩니다.HTML5 비디오 용 다중 오디오 트랙

그렇다면 사용자가 오디오 트랙 사이를 전환 할 수있는 버튼이 있습니다. 올바른 오디오 트랙이 생기게됩니다 (DVD 오디오 트랙 선택과 같이 비디오가 일시 중지되거나 처음부터 다시 시작하지 않고도).

플래시에서는이 작업을 매우 간단하게 수행 할 수 있지만 원하지 않습니다. 순수 HTML5 또는 HTML5 + jQuery에서이를 수행 할 수있는 방법이 있어야합니다. 난 당신이 0 볼륨에서 모든 오디오 파일을 재생하고, 활성 트랙의 볼륨을 증가 줄 알았는데 ...하지만, 심지어는 사용자가 일시 중지하거나 되감기 때 그것을 처리 할뿐만 아니라 그것을 어떻게 할 줄 모르겠다. 비디오 ...

미리 감사드립니다!

답변

3

다섯 개의 트랙을 모두 다운로드 할 수 있다면 비디오에 멀티플렉싱하는 것이 가장 좋은 이유는 무엇입니까? 비디오는 단일 오디오 트랙에만 국한되지 않습니다 (AVI가 여러 오디오 트랙을 처리 할 수도 있음). 그런 다음 동기화가 처리되어야합니다. 필요에 따라 오디오 트랙을 활성화/비활성화 할 수 있습니다.

+1

JavaScript로 어떻게 제어 할 것인가? :) –

+2

@EmphramStavanger : http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#media-elements는'audioTracks' 요소를 제공하고,'.enable()'및'.disable()'을 호출합니다. 나 자신을 테스트하지 않았다. – derobert

+0

신난다, 나는 그것을 조사 할 것이다! –

8

오디오와 비디오 간의 동기화는 단순히 오디오와 비디오를 동시에 시작하는 것보다 훨씬 복잡합니다. 사운드 카드는 약간 다른 속도로 재생됩니다. 44.1kHz는 44.095kHz입니다.

종종 비디오는 오디오 스트림과 동기화되지만 플레이어는 이것을 처리합니다. 재생을 위해 여러 객체를로드하면 효과적으로 동기화되지 않게됩니다.

동영상 플레이어에서 다른 오디오 스트림을 제어하는 ​​방법을 찾을 수있는 유일한 방법입니다. 이것이 가능한지 나는 모른다.

대신 다른 스트림으로 여러 번 인코딩하는 것이 좋습니다. FFMPEG를 사용하여 워크 플로우에 따라 프로세스를 자동화 할 수도 있습니다. 스트림간에 전환하는 것이 문제가되지만 대부분의 비디오 플레이어는 비트율이 주어지면 파일의 바이트 오프셋을 추측 할만큼 견고합니다.

두 언어 만 있으면 왼쪽 및 오른쪽 스테레오 오디오 채널 간의 균형을 조정할 수 있습니다.

+0

브라우저가 ffmpeg처럼 재생하기 전에 하나의 스트림으로 스트림을 멀티플렉하는 것은 매우 어렵습니다. – themihai

+0

@themihai 비디오 트랙과 여러 개의 오디오 트랙이있는 비디오 파일이있는 경우 모두 공통된 참조 지점으로 동기화됩니다. 모두 분리 된 파일이 여러 개있는 경우 그렇지 않습니다. 8 개의 오디오 객체를 일렬로 나열하고, 재생할 것을 말하고, 모두 자신의 디코딩, 버퍼링 등을 할 수 있으므로 동시에 재생할 수 있습니다., 그리고 브라우저가 그것들을 동시에 모두 재생하려고한다고 가정하고 있습니다. 실제로, 당신은 연극을 부르며, 브라우저는 그것을 느낄 때 (즉각적인 것으로 보이기 위해 합리적인 시간 내에) 그 일을합니다. – Brad

+0

@themihai FFmpeg를 사용하면 모든 트랙을 가져 와서 같은 파일에 멀티플렉싱하고 공통 참조 포인트를 제공 할 수 있습니다. 여기에 제안 된 다른 방법으로 Web Audio API를 사용하여 정확한 샘플 재생을 예약 할 수 있습니다. 즉, 모든 오디오가 먼저 PCM 샘플로 디코딩되고 동시에 시작할 수 있습니다. 이 시점에서 클럭 레퍼런스는 출력 장치입니다. – Brad

3

웹 오디오 API를 사용할 수 있습니다.

내 프로그램의 일부가 비디오 요소 이벤트를 수신하고 웹 오디오 API를 사용하여 만든 오디오 트랙을 중지하거나 다시 시작합니다. 이 기능을 사용하면 완벽하게 동기화 된 트랙을 켜고 끌 수 있습니다.

몇 가지 단점이 있습니다.

Internet Explorer에서 Edge를 제외하고 Web Audio API가 지원되지 않습니다.

이 기술은 버퍼링 된 오디오에서만 작동하며 제한적입니다. 대용량 파일에는 몇 가지 문제가 있습니다. https://bugs.chromium.org/p/chromium/issues/detail?id=71704

+0

여전히 'mediagroup'에 대한 힌트를 주셔서 감사합니다. 이제 글을 쓸 때보 다 조금 더 나은지지를 얻었습니다.) – SimonSimCity

+0

나는 어떤 도움이있어서 기쁩니다. 그 specs가 삶으로 데려 오는 것을 보는 것은 멋지다 :) – Nek

+0

mediagroup는 더 이상 사용되지 않았거나/출하되지 않았다 (최소한 크롬에 의해) – themihai

관련 문제