일시 정지 / 재개 재생 및 다음 / 이전 트랙 블루투스 명령 보내기


10

우분투 PC에서 블루투스를 통해 음악을 스트리밍하는 다른 장치로 블루투스 오디오 명령 (재생 / 일시 중지, 다음 / 이전 노래 및 켜기 / 끄기)을 보내고 싶습니다. 다시 말해서, 나는 트랙을 바꾸고 음악을 일시 정지하고 재개 할 수있는 일종의 블루투스 헤드폰 인 Ubuntu PC "pretending"을 구현하고 싶다.

아래의 pavucontrol 스크린 샷으로 설명 된 다음 설정이 있습니다 ( pt2블루투스를 통해 연결된 장치입니다). 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

이 구성에서 스트리밍은 예상대로 작동 pt2하지만 ( 에서 스트리밍 된 음악을들을 수 있음 ) 일시 정지 / 재개 재생 또는 트랙 변경과 같은 신호를 전송할 수있는 방법을 찾지 못했습니다.

특정 기능을 허용하는 많은 블루투스 프로토콜이 있음을 이미 알고 있습니다. 사양을 올바르게 이해했다면 내가 관심을 갖는 것은 A2DP입니다. 이것이 바로 장치가 연결되는 방식입니다. 그러나 프로파일 드롭 다운에서 HSP / HFP 헤드셋 헤드 유닛, HSP / HFP 헤드셋 게이트웨이 및 끄기 옵션도 있습니다.

그런 명령을 보낼 수있는 Python으로 자체 응용 프로그램을 개발하려고하므로 Python API 또는 bash 명령을 통해 명령을 보내는 데 관심이 있습니다.

블루투스 장치와 통신하는 방법에 관심이 있기 때문에이 질문을하고 있습니다.


나는 테스트 할 기회가없는,하지만 난 같은 문제를 얻을 수 있기 때문에 여기 토론에 너무 솔루션에 관심이 있어요 : ubuntuforums.org/... 부하에 입력 모듈을 추가 단지 seemse 필요하지만 정보가 아닌 있습니다 게시물에 많이.
AtomiX84

@ AtomiX84 나는 반대의 문제가 있다는 인상을 받았습니다. PC 스티어링 음악에 연결된 헤드폰이 아닌 PC 척 헤드폰을 재생하고 싶습니다.
pt12lol


@ kenn 나는 매우 구체적인 것을보고 싶습니다. 대답은 다소 일반적으로 보입니다. 내 유스 케이스에 대해 더 자세한 예제를 제공 할 수 있습니까?
pt12lol

나는 그 분야의 전문가가 아니므로 github를 검색 할 수 있습니다. 또한이 링크를보십시오 stackoverflow.com/questions/48932249/…
kenn

답변:


10

@kenn에서 영감을, 나는 더 깊이 가기로 결정 dbus하고 d-feet도구를 제공합니다. 결국 나는 다음 명령을 사용하여 목표에 도달했습니다.

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_44_78_3E_85_9D_6F org.bluez.MediaControl1.Play

물론 블루투스를 통해 PC에 연결된 모바일 장치에서 음악을 재생했습니다.

일반적으로 블루투스 장치의 경우이 명령은 다음과 같습니다.

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated> org.bluez.MediaControl1.<command_to_send>

장치의 MAC 주소를 확인하려면을 실행하십시오 bt-devices -l. MAC 주소가있는 모든 알려진 (그러나 반드시 연결되어 있거나 검색되지 않은) 장치를 괄호 안에 표시합니다.

허용 된 명령 목록을 찾으려면, 설치 d-feet와 함께 sudo apt install d-feet. 실행 한 후 탭 bluez아래 에서 쿼리 검색을 적용 System Bus하고 장치의 MAC에서 항목을 찾으십시오.

여기에 이미지 설명을 입력하십시오

아래의 블루투스 헤드폰을 사용하는 것과 유사한 방법이 있습니다 org.bluez.MediaControl1. 그러나 해당 트리를 탐색하면 AWAY를 더 많이 찾을 수 있습니다.

dbus-send를 사용하여 신호를 전송하는 명령입니다 dbus. --system스위치는 우리가 System Busd-feet의 탭 에서 물건을 사용하고 싶다는 것을 나타냅니다 . 아직 시도하지는 않았지만 --print-reply디버깅 목적으로 만 사용되며 의무 사항은 아닙니다. d-feet 헤더를 --dest=org.blez나타냅니다 Name. /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>org.bluez.MediaControl1.<command>오브젝트 트리 경로를 참조하십시오.


대단해! 이러한 dbus-send명령을 PC의 미디어 버튼에 매핑 했습니까? 아니면 어떻게 사용하려고합니까?
Robert Riedl

1
@Robert Riedl 게임 패드 버튼 다운 이벤트를 잡아서 모바일 장치로 전송 된 특정 명령으로 매핑하여 음악을 컴퓨터로 스트리밍하려고했습니다. 이 프로젝트의 동기는 음악 매니저가되기를 좋아하는 아들 이었지만 화면에서 너무 많은 시간을 보내고 싶지는 않았습니다. 그래서 나는 그에게 다른 종류의 UX를 제공하기로 결정했다.)
pt12lol
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.