タイトルで説明したように、A2DPでBluetooth経由でオーディオを再生すると、0.5秒の遅延が発生します。
これにより、音声がビデオと同期されないため、映画を見ることができなくなります。
遅延がBluetooth標準、A2PDプロトコル、Ubuntu 12.04でのA2DP実装、またはBelkin Z73 Bluetoothレシーバーによるものかどうかはわかりません。
とにかく、これは通常の遅れですか?顕著な遅延なしにBluetooth経由でオーディオを再生する方法はありますか?
いいえ、これは正常ではありませんが、時々Altec Lansing iMT525 Bluetoothスピーカーで同様の問題が発生しました。 Sriの答えに概念的に似た何かが私にとってほとんど常に機能し、接続ごとに一度だけそれをする必要があります。
犯人を探しているなら、まずUbuntuのサウンドシステム、PulseAudio、次にBluetoothレシーバーを見てみましょう。これを試して:
まず、Bluetoothデバイスを削除して再度ペアリングします。
次に、以下をコピーして、ホームディレクトリの.sh
ファイルにコピーし、/home/brillout/pabluezswitch.sh
と言います。
#!/ bin/bash
BLUEZCARD = `pactl list cards short | egrep -o bluez。* [[:space:]] ` pactl set-card-profile $ BLUEZCARD a2dp pactl set-card-profile $ BLUEZCARD hsp pactl set-カードプロファイル$ BLUEZCARD a2dp
ターミナルを開いてchmod +x ~/pabluezswitch.sh
と入力して、ファイルを実行可能にします
設定...キーボード...ショートカットに移動して、カスタムショートカットを作成します。 /home/brillout/pabluezswitch.sh
(パスの適切なユーザー名に置き換えてください!)のようなコマンドで、好きな名前を付けてください。 適用をクリックしてから、右側の無効をクリックして、スクリプトを実行するためのキーボードショートカットを設定します。
これは、ad2p -> hsp -> a2dp
からプロファイルを切り替えることにより、PulseAudioシステムがヘッドセット/スピーカーに送信されるオーディオを強制的に再同期させ、遅延を取り除くことを願っています。
接続して遅延に気付くたびに、上記で選択したキーボードショートカットを押して遅延の修正を試みてください。うまくいけばうまくいきます!
Sudo apt install pavucontrol
pavucontrol
を実行します使用するプレーヤーに関係なく、同様の問題が時々発生します。私のものは、MSI CR400ラップトップとUbuntu 11.10を搭載したNokia BH-503 Bluetoothステレオヘッドフォンです。私はたまたまあなたが試すことができる回避策に出くわしました。
ここの一番上の返信は機能しますが、すべてのBluetoothオーディオデバイスに対応しているわけではありません。一部のデバイスのプロファイル名は、ポスターがBluetoothスピーカーで持っているものとは異なります。たとえば、元々その人によって投稿された次のコードには、明らかにa2dp
およびhsp
という名前のプロファイルがあります。たとえば、これらはどちらもLGトーンでは使用できませんが、Sonyヘッドセットなどの他のデバイスでは使用できます。
#!/bin/bash
BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp
pactl set-card-profile $BLUEZCARD hsp
pactl set-card-profile $BLUEZCARD a2dp
そのコードは表示されるほとんどのBluetoothデバイスで機能しますが、a2dpプロファイルまたはhspプロファイルを持たないデバイスでこれを正しく機能させるには、次のように入力します。
pactl list | grep -Pzo '.*bluez_card(.*\n)*'
これにより、bluetoothデバイスが見つかった後のすべてが返されます。たとえば、LG Tone Ultraヘッドセットでは、次のようになります。
Name: bluez_card.B8_AD_3E_**_**_**
Driver: module-bluez5-device.c
Owner Module: 36
Properties:
device.description = "LG HBS810"
device.string = "B8:AD:3E:**:**:**"
device.api = "bluez"
device.class = "sound"
device.bus = "bluetooth"
device.form_factor = "headset"
bluez.path = "/org/bluez/hci0/dev_B8_AD_3E_**_**_**"
bluez.class = "0x240404"
bluez.alias = "LG HBS810"
device.icon_name = "audio-headset-bluetooth"
device.intended_roles = "phone"
Profiles:
a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: yes)
headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 20, available: yes)
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
Active Profile: a2dp_sink
Ports:
headset-output: Headset (priority: 0, latency offset: 0 usec)
Part of profile(s): a2dp_sink, headset_head_unit
headset-input: Headset (priority: 0, latency offset: 0 usec)
Part of profile(s): headset_head_unit
profiles
セクションに興味があります。このセクションには、a2dp_sink
、headset_head_unit
、およびoff
の3つのプロファイルがあります。必要な2つのプロファイル(A2DPシンク)と(HSP/HFP)が必要です。この場合、a2dpプロファイルの場合はa2dp_sink
、hspプロファイルの場合はheadsethead_unit
です。これは元のポスターのa2dp
およびhsp
とは異なることに注意してください。
さて、上記のコードで、それを修正してファイルに入れます。ファイルbluezswitch.sh
を呼び出しました。
ファイルを置きたいディレクトリに移動します。どこでもかまいません。
touch bluezswitch.sh
それから
nano bluezswitch.sh
このコメントの一番上にあるコードをコピーして貼り付け、a2dp
およびhsp
を上記のコマンドを実行したときに取得した値に置き換えて、そのファイルに貼り付けます。たとえば、これは私のファイルがLGトーンに対してどのように見えるかです。
#!/bin/bash
BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp_sink
pactl set-card-profile $BLUEZCARD headset_head_unit
pactl set-card-profile $BLUEZCARD a2dp_sink
ここで、ctrl-x
、y
の順にクリックしてファイルを保存し、nanoを終了してから、ファイルを実行可能にします。
chmod +x bluezswitch.sh
次に、説明したようにキーボードショートカットを設定してフォローアップします。
設定...キーボード...ショートカットに移動し、カスタムショートカットを作成します。 /home/brillout/bluezswitch.sh(パスの適切なユーザー名に置き換えてください!)のようなコマンドで、好きな名前を付けてください。 [適用]をクリックし、右側の[無効]をクリックして、スクリプトを実行するキーボードショートカットを設定します。
これですべてです。これは、以前は機能していなかったすべてのユーザーに対して機能するはずです。
適応差分パルス符号変調には、先読み型圧縮アルゴリズムが含まれます。このアルゴリズムでは、エンコーダが数バイトの情報を調べる前に情報を送信できません。そのため、データはエンコーダーに蓄積されなければならず、エンコーダーに出入りするストリーム間には固有の時間シフトがあります。ずっと前に、私はデータネットワーク遅延の研究を行って、Voice over Dataテレフォニー(現在のVoIP)の実現可能性を判断しました。私は、ADPCMスタイルの圧縮/エンコードが非常に多くの遅延を導入すると結論付けたと思います。このBluetooth遅延の問題を克服するには、レイテンシーの少ない非圧縮タイプのオーディオエンコーディングが必要になると思います。
私はこの問題に対して多くのアプローチを試みましたが、何もそれを修正できませんでした。それから私はつまずいたset-port-latency-offset
Pulseaudioを使用している場合:
pactl list cards short | egrep -o bluez.*[[:space:]]
これにより、Bluetoothインターフェイスが提供されます。それに応じてレイテンシーを設定します:
pactl set-port-latency-offset <INTERFACE> speaker-output 100000
私は100000マイクロ秒を使用していますが、これは私には問題ありません。
これが私のために解決したものです:$ Sudo apt-get install phonon-backend-vlc
そしてそれが優先バックエンドであることを確認し、KDEで[システム設定] [マルチメディア] [オーディオとビデオ設定] [バックエンド]に移動し、[優先ボタン]
Timmの回答と同様に、受け入れられた回答のプロファイルもありませんでした。 HSPを設定すると、エラーコードが発生しました。
最終的に、ほぼ同一の次のスクリプトを使用しました。
#!/bin/bash
BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp_sink
pactl set-card-profile $BLUEZCARD off
pactl set-card-profile $BLUEZCARD a2dp_sink
この問題は、これらすべての年後もまだ関連があるようです。
Arindam Mani Das の回答と Billy Farrington のコメントに基づいて、次のシェルスクリプトを作成しました。
#!/bin/bash
export BLUEZCARD=`pactl list cards short | egrep -o bluez.*[[:space:]]`
pactl set-card-profile $BLUEZCARD a2dp_sink
pactl set-port-latency-offset $BLUEZCARD headphone-output 100000
私はArindamが推奨するように100000マイクロ秒を使用していますが、これもうまく機能します。
VLCメディアプレーヤーの[ツール]に移動[トラックの同期]タブ[オーディオ/ビデオオーディオトラックの同期]で、約-0.67などの負の値を使用すると、ラグが完全に補正されます。新しいファイルを開くたびに、手動でこれを行う必要があります。クリス
この問題を抱えている人はこのウェブサイトをご覧ください: http://projectzeorymer.wordpress.com/2011/09/01/ubuntu-how-to-connect-nokia-bh-503-bluetooth-headset-to -your-pc / ダウンロードする必要があるものの写真を表示します。
Bluetoothマネージャーをダウンロードし、それを使用してヘッドセットの設定を操作します。サウンド設定をHigh Fidelity Playback(A2DP)に設定してから、サウンド設定に入ります。