PowerDVD Ultra 18等で『DLNA TV 二か国語放送主福切り替え』がブロークンなのを対策してみる
表題のような問題を解決したいわけですが、最低限左chの日本語音声と右chの英語音声が混ざっているのが不快ですが、PowerDVD Ultra側では切り替えができません。サウンド->スピーカーのプロパティー->レベル->バランス
のLやRを0にしたり、100にしたりすればいいのですが、ダイアログを辿るのが面倒なので、プログラムダブルクリック一発で所望の設定をしたいわけです。で、
#include <windows.h>
#include <mmdeviceapi.h>
#include <endpointvolume.h>
#include <stdio.h>
int main(int argc, char** argv) {
HRESULT hr;
IMMDeviceEnumerator* pEnum = NULL;
IMMDevice* pEndpoint = NULL;
IAudioEndpointVolume* pAudioEndVol = NULL;
hr = CoInitializeEx(0, COINIT_MULTITHREADED);// Coおまじない
// MMDevice インターフェースを取得
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, IID_PPV_ARGS(&pEnum));
if (FAILED(hr)) {
CoUninitialize();
return 1;
}
// defaultのオーディオエンドポイントを取得
hr = pEnum->GetDefaultAudioEndpoint(eRender, eConsole, &pEndpoint);
if (FAILED(hr)) {
if (pEnum)
pEnum->Release();
CoUninitialize();
return 2;
}
// ボリュームオブジェクトを作成
hr = pEndpoint->Activate(__uuidof(IAudioEndpointVolume), CLSCTX_ALL, NULL, (void**)&pAudioEndVol);
if (FAILED(hr)) {
if (pEndpoint)
pEndpoint->Release();
if (pEnum)
pEnum->Release();
CoUninitialize();
return 3;
}
// 左右のチャンネルの音量をセット
char* pfile;
pfile = argv[0] + strlen(argv[0]);
for (; pfile > argv[0]; pfile--)
{
if ((*pfile == '\\') || (*pfile == '/'))
{
pfile++;
break;
}
}
if (!_stricmp(pfile, "left.exe")) {
pAudioEndVol->SetChannelVolumeLevelScalar(0, 1.0, &GUID_NULL); // Left
pAudioEndVol->SetChannelVolumeLevelScalar(1, 0.0, &GUID_NULL); // right
}
else if (!_stricmp(pfile, "right.exe")) {
pAudioEndVol->SetChannelVolumeLevelScalar(0, 0.0, &GUID_NULL); // Left
pAudioEndVol->SetChannelVolumeLevelScalar(1, 1.0, &GUID_NULL); // right
}
else {
pAudioEndVol->SetChannelVolumeLevelScalar(0, 1.0, &GUID_NULL); // Left
pAudioEndVol->SetChannelVolumeLevelScalar(1, 1.0, &GUID_NULL); // right
}
if (pAudioEndVol)
pAudioEndVol->Release();
if (pEndpoint)
pEndpoint->Release();
if (pEnum)
pEnum->Release();
CoUninitialize();
return 0;
}
build済みのバイナリの名前を変更して、
left.exeにするとダブルクリックでleft ch 100%,right ch 0%へ、
right.exeにすると同じく left ch 0%,right ch 100%へ、
それ以外の名前ではleft chも right chも100%になります。
これらのプログラムで2カ国語混線は回避できますが、音量低下とバランス悪化が気になる方は、apo equalizer等で、
Copy: L=L R=L
なるスクリプトを末端に置けばいいです。普通の状態に戻すのは、このスクリプトをremoveすればいいです。(意外に面倒ですけど。)
Author And Source
この問題について(PowerDVD Ultra 18等で『DLNA TV 二か国語放送主福切り替え』がブロークンなのを対策してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/docnao/items/d1572cb5f1907e4bddbd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .