2017-04-13 1 views
3

AAC 인코딩 오디오 트랙이 Dolby Pro Logic II 데이터로 인코딩되었는지 확인할 방법이 있는지 알아 내려고하고 있습니다. 이 정보를 볼 수 있도록 파일을 검사하는 방법이 있습니까? 나는 (예를 들어 오디오 옵션립니다) -E av_aac -B 320 --mixdown dpl2와 핸드 브레이크에서 미디어 파일을 인코딩하고이 오디오 트랙의 출력입니다 mediainfo 쇼 :오디오 트랙이 Dolby Pro Logic II 믹스 다운인지 확인하는 방법

Audio #1 
ID          : 2 
Format         : AAC 
Format/Info        : Advanced Audio Codec 
Format profile       : LC 
Codec ID         : 40 
Duration         : 2h 5mn 
Bit rate mode       : Variable 
Bit rate         : 321 Kbps 
Channel(s)        : 2 channels 
Channel positions      : Front: L R 
Sampling rate       : 48.0 KHz 
Compression mode       : Lossy 
Stream size        : 288 MiB (3%) 
Title         : Stereo/Stereo 
Language         : English 
Encoded date        : UTC 2017-04-11 22:21:41 
Tagged date        : UTC 2017-04-11 22:21:41 

하지만 것이 출력에 아무것도가 있다면 내가 말할 수 없습니다 DPL2 데이터로 인코딩되었음을 제안합니다.

+0

_ "예를 들어 Handbrake에서 미디어 파일을 인코딩했습니다."_ 작은 샘플 파일을 가져 왔습니까 (2 시간이 아닌 초)? 출력 파일의 바이트에 언급 된 경우 해당 정보를 검색하는 방법을 조언 할 수 있습니다. –

답변

3

tl : dr; 아마도 가능할 것입니다. 프로그래머라면 더 쉬울 수도 있습니다.

인코딩 된 정보가 스테레오 아날로그 쌍일 뿐이므로 "this is DPL2 file"이라는 메타 데이터를 특별히 저장하지 않는 한 Dolby Pro Logic II (DPL2) 신호를 감지 할 수있는 방법이 없습니다. 그러나 당신은 아마 꽤 좋은 추측을 할 수 있습니다.

DPL2를 비롯한 모든 이전 아날로그 Dolby Surround 형식은 서라운드 또는 서라운드의 위상을 반전시킨 다음 원래의 왼쪽 및 오른쪽 채널에 혼합하여 두 채널에 서라운드 정보를 저장합니다. DPL2를 비롯한 Dolby Surround 유형의 디코더는 두 채널 중 하나의 위상을 반전시킨 다음이 신호 쌍의 유사성을 찾음으로써이 정보를 복구하려고 시도합니다. 이것은 Dolby Surround에서와 같이 거의 수행되지 않습니다. 그렇지 않으면 DPL2 에서처럼 이러한 유사성이 인위적으로 편향되어 왼쪽 또는 오른쪽 또는 왼쪽 또는 오른쪽 서라운드로 훨씬 더 밀려납니다.

중요한 데이터가 서라운드 채널에 저장되는지 여부를 감지하는 것이 트릭입니다. 내가 할 수있는 방법을 설명해 드리겠습니다. 코드를 작성하지 않고 표현하려고 노력하겠습니다 만, 원하는대로 구현하고 수정하는 것은 개발자의 몫입니다.

  1. 프로그램 내용의 첫 번째 N 초 정도를 스테레오 파일로 자릅니다. N은 1에서 30 사이입니다. 이 파일을 입력이라고합니다.
  2. 채널 당 -3dB로 입력 스테레오 채널을 새로운 모노 파일로 믹스 다운합니다. 이 파일을 Center라고 부르십시오.
  3. 입력의 왼쪽 및 오른쪽 채널을 별도의 파일로 분할합니다. 왼쪽과 오른쪽이라고 부르세요.
  4. 오른쪽 채널을 반전시킵니다. 이 파일을 RightInvert라고 부르세요.
  5. Left 및 RightInvert 채널을 채널당 -3dB로 새로운 모노 파일로 믹스 다운합니다. 이 파일을 서라운드 라 부르세요.
  6. 서라운드 파일의 RMS 및 피크 dB를 결정합니다.
  7. 서라운드 파일의 RMS 또는 최대 DB가 "허용 오차"아래에 있으면 중지하십시오. 원본 파일은 모노 또는 센터 팬이므로 서라운드 정보를 포함하지 않습니다. 이러한 공차가 무엇인지 알아 보려면 여러 DPL2 및 DPL2가 아닌 소스를 실험해야하지만 수십 개 정도의 파일이 있으면 숫자가 명확 해집니다. 나는 대략 -30 dB 정도를 추측하고있다.
  8. 센터 파일을 새 파일로 반전하십시오. 이 파일을 CenterInvert라고합니다.
  9. CenterInvert 파일을 0dB로 서라운드 파일에 믹스합니다 (CenterInvert 및 Surround는 모두 모노이어야 함). 이 새로운 파일 SurroundInvert를 호출하십시오.
  10. SurroundInvert 파일의 RMS 및 피크 dB를 결정합니다.
  11. SurroundInvert의 RMS 및/또는 피크 dB가 "허용 오차"미만이면 중지; 원래 소스에는 서라운드 정보가 아닌 좌우 프론트 정보가 포함됩니다. 이러한 공차가 무엇인지 알아 보려면 여러 DPL2 및 DPL2가 아닌 소스를 실험해야하지만 12 개 정도의 파일이 있으면 숫자가 분명 해져야합니다. -35dB 정도를 추측합니다.
  12. 여기까지 가면 원래 입력에 서라운드 정보가 포함되어있을 가능성이 높으므로 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입니다.

+0

+1,이 방법은 많은 위양성을 산출 할지라도. 예를 들어 잘못 배치 된 마이크를 사용하여 녹음에서 위상 반전을 얻을 수 있습니다. 항상 발생합니다. – Dalen

+0

Dalen은 진절머리 나는 녹음에는 위상 반전이 가능하지만 악조건에 대해서는 치료할 수 없다고 말합니다. 위상 반전은 항상 발생합니다. " – johnwbyrd

+0

아니요? 스테레오 확장 효과가있는 에코 효과가 나면 어떻게됩니까? 오우, 간단한 음향조차도 긴 음표 인 경우 가끔 반전 된 신호처럼 보일 수 있습니다. 실제로 위상 반전을 사용하는 합성 재료는 무엇입니까? 간단한 MS가 완료되면 어떻게됩니까? 위상 보코더가 시간 늘이기 또는 피치 변경에 사용되거나 실제로 큰 겹침을 사용하는 필터가 사용되는 경우 창 가장자리에는 항상 반전 가능성이 있습니다. 처음에는 오른쪽에 있지 않았다고 말할 수 있기 때문에 항상 피할 수는 없으므로 대신 오른쪽 등 뒤 스피커로 가야합니다. – Dalen

2

파일에 둘 이상의 채널이있는 경우 여러 트랙 일 수 있지만 서라운드 용도로 사용한다고 가정합니다. 이 경우에는 "생각한"채널을 재생 시스템에서 처리하는 것이 가장 좋습니다. (파일 헤더가 무엇을 말하지 않으면)

파일은 스테레오입니다. 가상 서라운드 파일인지 여부를 알고 싶다면 헤더에서 인코더 필드를보고 어떤 인코더가 사용되었는지 확인하십시오. 많은 도움이되지는 않지만 다소 도움이 될 수 있습니다. 대부분의 인코더 필드는 비어 있고 두 번째로 인코더가 서라운드 데이터를 혼합 한 레코더와 같을 필요는 없습니다. 즉, 레코더는 먼저 원시 PCM 데이터를 만든 다음이를 일부 인코더로 보내 압축 된 파일을 만듭니다. (AAC 또는 뭐든간에) 또한 다양한 응용 프로그램과 버전이 있으므로 엔코더 필드가 다를 수 있으므로 모든 항목을 추적하는 것은 좋지 않습니다.

그러나 60 % 이상의 확실성으로 데이터를 검사하여 가상 서라운드인지 아닌지를 추측 할 수 있습니다. 이것은 고급 DSP가 될 것이며, 속도를 내기 위해 기계 학습까지 포함될 수 있습니다. 스테레오 신호에 HRTF (머리 관련 전달 함수)의 특정 기능이 포함되어 있는지 확인해야합니다. 이것은 시간 영역에서 나타나는 동일한 소리와 주파수 영역에서의 고조파 특징 (특성 주파수 변화) 사이의 강도 차이 및 지연 특성을 조사함으로써 달성 될 수 있습니다. 두 가지를 모두해야 할 필요가 있습니다. 하나도 없으면 가상의 서라운드가 아닌 매우 훌륭한 스테레오 녹음이라고 말할 수 있기 때문입니다. 어딘가에 이미 매핑 된 HRTF 관련 기능이 있는지 또는 자신이 직접 수행해야하는지 여부는 알 수 없습니다.

제대로 작성하는 데는 많은 시간이 소요되는 매우 복잡한 해결책입니다. 또한 그것은 성능 문제가 될 것입니다.

이 방법을 사용하면 거의 원래의 서라운드 채널로 스테레오 믹스 다운을 해제 할 수 있습니다. 그러나 스테레오에서 서라운드로의 변환을 위해 다른 방법이 사용되고 소리가 잘 들립니다.

이러한 탐지를 수행하기로 결정한 경우 HRTF 기능이 매핑되지 않은 경우 1 년 또는 2 년 이상 열심히 할애하십시오. 그럴 경우 몇 주, 큰 스트레스를 받으면 번개를 치고 행운을 기원합니다. 나는 비슷한 것을했다. 그것은 살인자입니다.

아웃 오브 박스 솔루션을 원한다면 헤더가 인코더 필드를 제공하고 엔코더가 서라운드 - 스테레오 변환에만 사용되는 것으로 알려져 있지 않은 한 질문에 대한 대답은 아니오입니다. 필자는 설명 된대로 실제 데이터에서이를 수행 한 사람이 없다고 생각합니다. 그렇지 않은 경우 상용 제품의 일부입니다. 원하는 것을하는 것이 일반적으로 필요하지는 않지만 할 수 있습니다.

아, BTW, HRTF 반전 검색을 시도해보십시오. 도움이 될 수 있습니다.

+0

하나, Dolby PL2에 헤더가 없습니다. 둘째, 돌비 PL2는 가능한 가장 넓은 의미에서 HRTF와는 아무런 관련이 없습니다. 문제를 해결하는 것이 "진보 된 DSP"이고 "인공 지능이 관련 될 것"이라고 대답 한 사람은 대답도 정확하지도 않다. – johnwbyrd

+0

하나 : 우리는 스테레오 파일이 한 번 돌비인지 여부를 말하고 있습니다. AAC 컨테이너에는 가장 확실하게 헤더가 있습니다. 그리고 두 가지 예, 데이터에서 DSP를 사용하여 서라운드의 특성을 얻으려는 신호의 특성을 추출합니다 (HRTF로 인한 변화와 가장 유사 함). 신호가 서라운드에 속하는지 아닌지를 확인하기 위해 NN과 같은 분류 자에게 이러한 기능을 제공 할 것입니다. – Dalen

+0

AI가 누구에게나 너무 넓 으면 AI를 기계 학습으로 변경합니다. 내가 제안하는 방법에서, 나는 그것을 사용할 것이다. 그리고 저는 큰 지지자가 아닙니다. 사실 90 % 이상의 확실성을 달성하기 위해 내 방법과 방법을 모두 사용합니다. – Dalen

관련 문제