Mopidy: ํŠธ๋ž™์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์žฌ์ƒํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

์— ๋งŒ๋“  2020๋…„ 04์›” 07์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mopidy/mopidy

๋™์‹œ์— ์—ฐ๊ฒฐ๋œ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•  Jukebox ์›น UI๋ฅผ ๊ตฌ์ถ• ์ค‘์ž…๋‹ˆ๋‹ค. ๋…ธ๋ž˜๋ฅผ ๋Œ€๊ธฐ์—ด์— ๋„ฃ๋Š” ๊ธฐ๋Šฅ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ž™ ๋ชฉ๋ก์ด ๋น„์–ด ์žˆ๊ณ  ์ฒซ ๋ฒˆ์งธ ๋…ธ๋ž˜๊ฐ€ ๋Œ€๊ธฐ์—ด์— ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋…ธ๋ž˜๊ฐ€ ์žฌ์ƒ๋˜๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ๋กœ์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. PlaybackController.play() ๋Š” ํ˜„์žฌ ์žฌ์ƒ ์ค‘์ธ ํŠธ๋ž™์„ ์ค‘๋‹จํ•˜๊ณ  PlaybackController.resume() ๋Š” ์•„์ง ์žฌ์ƒ ์ค‘์ธ ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ํŠธ๋ž™ ๋ชฉ๋ก์„ ์žฌ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ถ„๋ช…ํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํด๋ผ์ด์–ธํŠธ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

await mopidy.tracklist.add(...);
const playbackState = await mopidy.playback.getState();
if (playbackState === "PAUSED") {
  await mopidy.playback.resume();
} else if (playbackState === "STOPPED") {
  await mopidy.playback.play();
}

์ด๊ฒƒ์˜ ๋ฌธ์ œ๋Š” ๋‘ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ๋…ธ๋ž˜๋ฅผ ๋Œ€๊ธฐ์—ด์— ๋„ฃ์œผ๋ฉด ๋‘˜ ๋‹ค "STOPPED" ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๊ณ  ํ•œ ์‚ฌ๋žŒ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ์ง“๋ฐŸ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ API์— ๋‚ด์žฅํ•˜์—ฌ ํŠธ๋ž™์„ ์ถ”๊ฐ€ํ•˜๊ณ  ํŠธ๋ž™ ๋ชฉ๋ก์˜ ์œ ์ผํ•œ ํŠธ๋ž™์ด๊ณ  ์žฌ์ƒ์ด ์ค‘์ง€๋œ ๊ฒฝ์šฐ ์žฌ์ƒํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

C-enhancement A-core

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ณธ์งˆ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ์›์ž ์ปฌ๋ ‰์…˜์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•
ํ•ต์‹ฌ ์ž‘์—…์€ ๋ช…๋ น์„ ๊ตฌํ˜„ํ•˜๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ณ 
๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์œผ๋ฉด ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์–ด๋–ป๊ฒŒ ๋“  ์›น ์†Œ์ผ“์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด.

2020๋…„ 4์›” 7์ผ ํ™”์š”์ผ, 08:55 Stein Magnus Jodal, [email protected]
์ผ๋‹ค:

๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ต์‹ฌ mopidy repo๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/mopidy/mopidy/issues/1897#issuecomment-610236208 ๋˜๋Š”
๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AAHEHKHXVX76W7636PBHZYLRLLMATANCNFSM4MC4SYFQ
.

๋ชจ๋“  6 ๋Œ“๊ธ€

์—ฌ๊ธฐ์—์„œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ต์‹ฌ mopidy ์ €์žฅ์†Œ๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค.

๋ณธ์งˆ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ์›์ž ์ปฌ๋ ‰์…˜์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•
ํ•ต์‹ฌ ์ž‘์—…์€ ๋ช…๋ น์„ ๊ตฌํ˜„ํ•˜๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ณ 
๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์œผ๋ฉด ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์–ด๋–ป๊ฒŒ ๋“  ์›น ์†Œ์ผ“์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด.

2020๋…„ 4์›” 7์ผ ํ™”์š”์ผ, 08:55 Stein Magnus Jodal, [email protected]
์ผ๋‹ค:

๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ต์‹ฌ mopidy repo๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/mopidy/mopidy/issues/1897#issuecomment-610236208 ๋˜๋Š”
๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AAHEHKHXVX76W7636PBHZYLRLLMATANCNFSM4MC4SYFQ
.

๊ฒฝ์Ÿ ์กฐ๊ฑด์„ ์ œ์ณ๋‘๊ณ  _single_ ํด๋ผ์ด์–ธํŠธ์—์„œ ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ๋„ ์ˆ˜๊ณ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

await mopidy.tracklist.add({ tracks: [track] });
await mopidy.playback.play({});

ํŠธ๋ž™ ๋ชฉ๋ก์ด ๋น„์–ด ์žˆ๋Š” ์ƒํƒœ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์ œ ์ฃผํฌ๋ฐ•์Šค ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋…ธ๋ž˜๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ณ  ์ €๋Š” ํ•ญ์ƒ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์žฌ์ƒ๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ž™ ๋ชฉ๋ก์ด ๋น„์–ด ์žˆ๊ณ  ์•„๋ฌด ๊ฒƒ๋„ ์žฌ์ƒ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ƒˆ ํŠธ๋ž™์ด ์žฌ์ƒ์„ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ์‹œ ์ค‘์ง€๋œ ๊ฒฝ์šฐ ์ผ์‹œ ์ค‘์ง€๋ฅผ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ฒŒ ๋Š๊ปด์ง€๋Š” ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ API๊ฐ€ ์ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ?:

const firstFewTracks = await mopidy.tracklist.slice({ start: 0, end: 3 });
...
const [tlTrack] = await mopidy.tracklist.add({ tracks: [track] });
if (firstFewTracks.length === 0) {
  await mopidy.playback.play({ tlid: tlTrack.tlid });
} else {
  const playbackState = await mopidy.playback.getState();
  if (playbackState === "stopped") {
    await mopidy.playback.play({});
  } else if (playbackState === "paused") {
    await mopidy.playback.resume();
  }
}

API์˜ ์ฒ ํ•™์€ ๊ฐ ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•ด ๋งค์šฐ ์ •ํ™•ํ•˜์—ฌ ๋‚ด ๊ฒฝ์šฐ์™€ ๊ฐ™์€ ๋™์ž‘์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋นŒ๋”ฉ ๋ธ”๋ก์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋˜๋Š” ๋‹ค๋ฅธ ์ƒํƒœ์™€ ํ˜ธ์ถœ์ž์˜ ๋ช…๋ฐฑํ•œ ์˜๋„์— ๋Œ€ํ•ด ๋” ํƒ„๋ ฅ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์•„๋ฌด ๊ฒƒ๋„ ์žฌ์ƒ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํŠธ๋ž™ ๋ชฉ๋ก์„ ์ง„ํ–‰ํ•˜๋Š” PlaybackController.resume() ).

ํŠธ๋ž™ ๋ชฉ๋ก์ด ๋น„์–ด ์žˆ๋Š” ์ƒํƒœ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์˜ˆ์ƒํ•œ ๋Œ€๋กœ ๊ทธ๊ฒƒ์ด ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ์˜คํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ผ์‹œ ์ค‘์ง€๋˜๋ฉด ์ธ์ˆ˜ ์—†์ด play ํ˜ธ์ถœ์ด ์žฌ๊ฐœ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ ๋‹ค์Œ์ด ์Šค ๋‹ˆํŽซ๊ณผ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

await mopidy.tracklist.add({ tracks: [track] });
const playbackState = await mopidy.playback.getState();
if (playbackState != "playing") {
  await mopidy.playback.play({})
}

Core API๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์›น ํด๋ผ์ด์–ธํŠธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ๋„ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์ž‘์€ ๋นŒ๋”ฉ ๋ธ”๋ก์ด ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœ์ž์˜ ์˜๋„๋Š” ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ์—์„œ ํ•ญ์ƒ ๋ช…ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€์ •์„ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘์ง€๋˜์—ˆ์„ ๋•Œ "์žฌ๊ฐœ"ํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด๋Š” ์žฌ๊ฐœ

@altano , ๋‚ด ์ œ์•ˆ์— ํ–‰์šด์ด ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @kingosticks , GStreamer๊ฐ€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋กœ ํŠธ๋ž™ ๋ณ€๊ฒฝ ํ›„ ๊ฐ„ํ—์ ์œผ๋กœ ์žฌ์ƒ์— ์‹คํŒจํ•˜๋Š” ๊ด€๋ จ ์—†๋Š” ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ด ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ด์ œ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ 2020-04-20 03:57:04,106 [1:MainThread] mopidy.audio.gst,
GStreamer ์˜ค๋ฅ˜: ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋˜๋Š”

GStreamer ์˜ค๋ฅ˜: ๋ฆฌ์†Œ์Šค์— ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด Discourse ํฌ๋Ÿผ์— ๊ฒŒ์‹œํ–ˆ์ง€๋งŒ(github ๋ฌธ์ œ์— ์ŠคํŒธ ๋ฉ”์ผ์„ ๋ณด๋‚ด๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค) ๋‚ด ๊ฒŒ์‹œ๋ฌผ์ด ์ŠคํŒธ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์Šน์ธ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ์ด ๊ฐ„๋‹จํ•œ ๋…ผ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์‹œ๋„ํ•˜๊ณ  ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰