tl : dr; 아마도 가능할 것입니다. 프로그래머라면 더 쉬울 수도 있습니다.
인코딩 된 정보가 스테레오 아날로그 쌍일 뿐이므로 "this is DPL2 file"이라는 메타 데이터를 특별히 저장하지 않는 한 Dolby Pro Logic II (DPL2) 신호를 감지 할 수있는 방법이 없습니다. 그러나 당신은 아마 꽤 좋은 추측을 할 수 있습니다.
DPL2를 비롯한 모든 이전 아날로그 Dolby Surround 형식은 서라운드 또는 서라운드의 위상을 반전시킨 다음 원래의 왼쪽 및 오른쪽 채널에 혼합하여 두 채널에 서라운드 정보를 저장합니다. DPL2를 비롯한 Dolby Surround 유형의 디코더는 두 채널 중 하나의 위상을 반전시킨 다음이 신호 쌍의 유사성을 찾음으로써이 정보를 복구하려고 시도합니다. 이것은 Dolby Surround에서와 같이 거의 수행되지 않습니다. 그렇지 않으면 DPL2 에서처럼 이러한 유사성이 인위적으로 편향되어 왼쪽 또는 오른쪽 또는 왼쪽 또는 오른쪽 서라운드로 훨씬 더 밀려납니다.
중요한 데이터가 서라운드 채널에 저장되는지 여부를 감지하는 것이 트릭입니다. 내가 할 수있는 방법을 설명해 드리겠습니다. 코드를 작성하지 않고 표현하려고 노력하겠습니다 만, 원하는대로 구현하고 수정하는 것은 개발자의 몫입니다.
- 프로그램 내용의 첫 번째 N 초 정도를 스테레오 파일로 자릅니다. N은 1에서 30 사이입니다. 이 파일을 입력이라고합니다.
- 채널 당 -3dB로 입력 스테레오 채널을 새로운 모노 파일로 믹스 다운합니다. 이 파일을 Center라고 부르십시오.
- 입력의 왼쪽 및 오른쪽 채널을 별도의 파일로 분할합니다. 왼쪽과 오른쪽이라고 부르세요.
- 오른쪽 채널을 반전시킵니다. 이 파일을 RightInvert라고 부르세요.
- Left 및 RightInvert 채널을 채널당 -3dB로 새로운 모노 파일로 믹스 다운합니다. 이 파일을 서라운드 라 부르세요.
- 서라운드 파일의 RMS 및 피크 dB를 결정합니다.
- 서라운드 파일의 RMS 또는 최대 DB가 "허용 오차"아래에 있으면 중지하십시오. 원본 파일은 모노 또는 센터 팬이므로 서라운드 정보를 포함하지 않습니다. 이러한 공차가 무엇인지 알아 보려면 여러 DPL2 및 DPL2가 아닌 소스를 실험해야하지만 수십 개 정도의 파일이 있으면 숫자가 명확 해집니다. 나는 대략 -30 dB 정도를 추측하고있다.
- 센터 파일을 새 파일로 반전하십시오. 이 파일을 CenterInvert라고합니다.
- CenterInvert 파일을 0dB로 서라운드 파일에 믹스합니다 (CenterInvert 및 Surround는 모두 모노이어야 함). 이 새로운 파일 SurroundInvert를 호출하십시오.
- SurroundInvert 파일의 RMS 및 피크 dB를 결정합니다.
- SurroundInvert의 RMS 및/또는 피크 dB가 "허용 오차"미만이면 중지; 원래 소스에는 서라운드 정보가 아닌 좌우 프론트 정보가 포함됩니다. 이러한 공차가 무엇인지 알아 보려면 여러 DPL2 및 DPL2가 아닌 소스를 실험해야하지만 12 개 정도의 파일이 있으면 숫자가 분명 해져야합니다. -35dB 정도를 추측합니다.
- 여기까지 가면 원래 입력에 서라운드 정보가 포함되어있을 가능성이 높으므로 Dolby Surround 인코딩 제품군의 구성원 일 가능성이 큽니다.
sox의 특정 명령으로이 단계를 수행 할 수 있도록이 알고리즘을 작성했습니다. 당신이 더 좋아 지길 원한다면, sox에서 RMS/피크 값 단계를 수행하는 대신, ebur128 프로그램을 실행하고 허용 오차에 대해 LUFS의 레벨을 점검 할 수 있습니다.심지어 서라운드 및 센터 파일을 만든 후에도 실제 DPL2 디코더처럼 7kHz 이상의 모든 주파수를 걸러 내고 디앰 퍼시스를 수행 할 수 있습니다.
이 알고리즘을 간단하게 유지하기 위해 진폭 도메인에서 전체를 스케치했습니다. SurroundLevel 파일의 계산은 FFT 빈의 크기와 각도를 계산하는 방법을 알고 30 ~ 100ms의 창을 사용하는 경우 주파수 영역에서 훨씬 더 정확하게 수행됩니다. 그러나 위의이 저렴한 버전으로 시작해야합니다.
마지막주의. AAC는 최신 심리 음향 코덱입니다. 즉, 압축을 달성하기 위해 스테레오 페이징 및 이미징으로 게임을하는 것을 좋아합니다. 따라서 DPL2를 AAC 스트림에 캡슐화하는 단순한 동작이 DPL2에있는 이미징의 일부를 처리 할 가능성이 높습니다. 솔직히 말하면, DPL2도 AAC도이 파이프 라인의 어느 곳에도 속해 있지 않습니다. DPL2로 원래 인코딩 된 아날로그 스트림을 저장해야하는 경우 AAC가 아닌 WAV 또는 FLAC과 같은 무손실 형식으로 수행하십시오.
이 글을 쓰는 시점에서 Dolby Pro Logic (I)의 작동 개념은 here입니다. 이러한 기본 개념은 여전히 DPL2에 적용됩니다. DPL2의 운영 개념은 here입니다.
_ "예를 들어 Handbrake에서 미디어 파일을 인코딩했습니다."_ 작은 샘플 파일을 가져 왔습니까 (2 시간이 아닌 초)? 출력 파일의 바이트에 언급 된 경우 해당 정보를 검색하는 방법을 조언 할 수 있습니다. –