์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์†Œ๊ฐœ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ์žฌ์ƒ๋ชฉ๋ก, ์ฑ„๋„ ๋ฐ ์ถ”์ฒœ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Android์šฉ YouTube ์˜จ๋ผ์ธ ํ”Œ๋ ˆ์ด์–ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

ํ™•์žฅ๋œ ์†Œ๊ฐœ:
์–ผ๋งˆ ์ „ ๋‚˜๋Š” ํ›Œ๋ฅญํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ž‘์„ฑ์ž์™€ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฑ„๋„ ํ—ˆ์šฉ ๋ชฉ๋ก, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋˜‘๊ฐ™์€ ํƒœ๋„๋ฅผ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋•Œ๋•Œ๋กœ ๋‚ด ์•„์ด์—๊ฒŒ ๋งŒํ™”๊ฐ€ ํฌํ•จ๋œ ํƒœ๋ธ”๋ฆฟ์ด๋‚˜ ์Šค๋งˆํŠธํฐ์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ 2-3๋ฒˆ ํด๋ฆญํ•œ ํ›„ ๋ชฉ๋ก์ด ์–ด๋””์— ์žˆ๋Š”์ง€ ์ „ํ˜€ ๋งŒ์กฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(YouTube ํด๋ผ์ด์–ธํŠธ)์˜ ์ถ”์ฒœ ์ˆ˜๋Š” ์ž๋…€๋ฅผ ๋ฐ๋ ค๊ฐ‘๋‹ˆ๋‹ค.

๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ์ฑ„๋„ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜ํ•œ ํ›„ ๋˜ ๋‹ค๋ฅธ ํ‰๋ฒ”ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์น˜๋ช…์ ์ธ ๊ฒฐํ•จ์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. NIH I(๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‚ด ์•„๋“ค)์€ ํŠนํžˆ YouTube Kids ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์Šต๊ด€ ์ดํ›„์— ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ทธ๋‹ค์ง€ ํŽธ๋ฆฌํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์–ผ๋งˆ ํ›„ ์ €๋Š” ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ข€ ์ง€๋‚˜์„œ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค์— ํƒœ๊ทธ๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ :

  • ์ฆ๊ฒจ์ฐพ๋Š” ์ฑ„๋„๊ณผ ์žฌ์ƒ ๋ชฉ๋ก์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๊ณ  ์ƒ‰์ธ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋œ ์žฌ์ƒ๋ชฉ๋ก ๋‚ด์—์„œ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ถˆํ•„์š”ํ•œ ๋™์˜์ƒ์„ ๋„์„ธ์š”.
  • ์ถ”์ฒœ ๋ชฉ๋ก์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ถ”๊ฐ€๋œ ์ฑ„๋„๊ณผ ์žฌ์ƒ๋ชฉ๋ก์—์„œ๋งŒ ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค, GPLv3 ๋ผ์ด์„ผ์Šค: https://github.com/sadr0b0t/yashlang/

๋‹ค์Œ์€ ์ฃผ์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฐœ์š”์™€ Google API ๋ฐ ์›น ๋ž˜ํผ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Android ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ YouTube ๋™์˜์ƒ์„ ์žฌ์ƒํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ์ˆ ์ ์ธ ์„ธ๋ถ€์ •๋ณด์ž…๋‹ˆ๋‹ค.

๋ฉ”์ธ ํ™”๋ฉด ๋ฐ ํ”Œ๋ ˆ์ด์–ด ํ™”๋ฉด: ๋ฌด์ž‘์œ„๊ฐ€ ์•„๋‹Œ ์ฑ„๋„์˜ ๋ฌด์ž‘์œ„ ์ถ”์ฒœ

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฆ‰์‹œ ๊ฒ€์ƒ‰

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) => ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ƒˆ ์ฑ„๋„ ๋˜๋Š” ์žฌ์ƒ๋ชฉ๋ก ์ถ”๊ฐ€

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์˜จ๋ผ์ธ์—์„œ ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์•Œ๋ ค์ง„ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”. ์ฑ„๋„ ๋˜๋Š” ์žฌ์ƒ ๋ชฉ๋ก์˜ ๋น„๋””์˜ค ๋ชฉ๋ก์€ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๋ฉฐ ์•„์ด์ฝ˜์€ ์บ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋™์  ์žฌ์ƒ๋ชฉ๋ก - ๊ฒ€์ƒ‰๊ฒฐ๊ณผ ์žฌ์ƒ

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) => ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

๋™์˜์ƒ ์ถ”์ฒœ์—๋Š” ๊ฒ€์ƒ‰์–ด๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋™์˜์ƒ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์žฌ์ƒ๋ชฉ๋ก ์„ค์ •์—์„œ ๋™์˜์ƒ์„ ์—ด๋ฉด ๋™์ผํ•œ ์žฌ์ƒ๋ชฉ๋ก์— ์žˆ๋Š” ๋™์˜์ƒ๋งŒ ์ถ”์ฒœ ๋ชฉ๋ก์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์žฌ์ƒ๋ชฉ๋ก๊ณผ ์ฑ„๋„์„ ์ผ์‹œ์ ์œผ๋กœ ๊ป๋‹ค๊ฐ€ ๋‹ค์‹œ ์ผค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฐธ๊ณ : ๋น„ํ™œ์„ฑํ™”๋œ ์žฌ์ƒ๋ชฉ๋ก์˜ ๋™์˜์ƒ์€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ, ์‹œ์ฒญ ๊ธฐ๋ก, ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ชฉ๋ก์—์„œ๋„ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ์žฌ์ƒ๋ชฉ๋ก์„ ๋‹ค์‹œ ์ผœ๋ฉด ์ฆ‰์‹œ ํ•ด๋‹น ํ•ญ๋ชฉ์ด ๋‹ค์‹œ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ๋น„๋””์˜ค ์ถ”๊ฐ€

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฐจ๋‹จ๋œ ๋™์˜์ƒ์€ ์ถ”์ฒœ, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ชฉ๋ก ๋ฐ ์‹œ์ฒญ ๊ธฐ๋ก์—์„œ๋„ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋™์˜์ƒ์€ ์žฌ์ƒ๋ชฉ๋ก ์„ค์ •์— ๊ณ„์† ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด๊ณ  ์‹ค์ˆ˜๋กœ ์ฐจ๋‹จ๋œ ํ•ญ๋ชฉ์„ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜์‹ญ์‹œ์˜ค.
์„ค์ • > ํ—ค๋” ๋ฉ”๋‰ด > ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์ฆ๊ฒจ์ฐพ๋Š” ๋™์˜์ƒ ๋ฐ ์‹œ์ฒญ ๊ธฐ๋ก

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

ํ”Œ๋ ˆ์ด์–ด ํ™”๋ฉด์—์„œ ์ฆ๊ฒจ์ฐพ๋Š” ๋™์˜์ƒ์€ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ๋ณ„ํ‘œ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ™”๋ฉด ์ œ๋ชฉ์˜ ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด์™€ ๊ฐค๋Ÿฌ๋ฆฌ ๋ฐ ๋ชฉ๋ก์˜ ๋กฑํด๋ฆญ

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

๋ณด๊ธฐ ํ™”๋ฉด์ด๋‚˜ ๋ชฉ๋ก์—์„œ ๋น„๋””์˜ค ๋˜๋Š” ์žฌ์ƒ ๋ชฉ๋ก์˜ ์ด๋ฆ„์ด๋‚˜ ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ์‹œ์ž‘ - ์ถ”์ฒœ ์ฑ„๋„ ๋ฐ ์žฌ์ƒ๋ชฉ๋ก ์ถ”๊ฐ€

์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?) => ์ฝ”์…ฐ์ด์˜ ์ฃฝ์Œ์ด ์ถ”์ฒœ ๋ชฉ๋ก์— ์˜ฌ๋ผ์žˆ์Šต๋‹ˆ๋‹ค. (์œ ํŠœ๋ธŒ๋ฅผ ์•„๋Š‘ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?)

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์ฆ‰์‹œ ์œ„์˜ ์Šคํฌ๋ฆฐ์ƒท์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ถˆํ•„์š”ํ•œ ์ฑ„๋„๊ณผ ์žฌ์ƒ๋ชฉ๋ก์€ ์„ค์ •์—์„œ ๋„๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜

์งˆ๋ฌธ๊ณผ ๋Œ€๋‹ต : https://github.com/sadr0b0t/yashlang/
์˜์–ด๋กœ: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
๋ฆด๋ฆฌ์Šค: https://github.com/sadr0b0t/yashlang/releases

  • Google Play์— ์—†์œผ๋ฉฐ ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ์ถœ์‹œ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(Google์€ ์–ธ๊ธ‰๋œ ์ฑ„๋„ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๋˜๋Š” NewPipe ํ”Œ๋ ˆ์ด์–ด๋ฅผ ํฌํ•จํ•˜์—ฌ API๋ฅผ ์šฐํšŒํ•˜๊ณ  ์›น์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค).
  • ์†Œ์Šค์—์„œ ๋นŒ๋“œ: https://github.com/sadr0b0t/yashlang/
  • ๋ฆด๋ฆฌ์Šค ์„น์…˜์—์„œ APK๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. https://github.com/sadr0b0t/yashlang/releases
  • ์‹œ๊ฐ„์ด ์ข€ ์ง€๋‚˜๋ฉด ์นดํƒˆ๋กœ๊ทธ์— ๋‚˜์˜ฌ ๊ฒƒ ๊ฐ™์•„์š” F-๋“œ๋กœ์ด๋“œ (์ถ”๊ฐ€ ์‹ ์ฒญ์ด ์Šน์ธ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค, ๊ทธ๋Ÿฌ๋‚˜ ๊ฑฐ์˜ ํ•œ ๋‹ฌ ๋™์•ˆ ๋” ์ด์ƒ ์›€์ง์ด์ง€ ์•Š์•˜์ง€๋งŒ ์•„์ง์€ ์•„๋‹™๋‹ˆ๋‹ค

๋™์ผํ•œ ๊ธฐ๊ธฐ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์†Œ์Šค์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „ ๊ฐ„ ์ „ํ™˜์€ apk ํŒŒ์ผ์˜ ์„œ๋ช…์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์„ธ์š”. ์ƒˆ ์†Œ์Šค์—์„œ ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ๋จผ์ € ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์„ค์น˜๋œ ๋ฒ„์ „์„ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์žฌ์ƒ๋ชฉ๋ก ์บ์‹œ ๋ฐ ๊ฒ€์ƒ‰ ๊ธฐ๋ก(๋˜๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ)

๊ธฐ์ˆ  ์„ธ๋ถ€ ์ •๋ณด

Google/YouTube ๊ณ„์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ธํ„ฐ๋„ท๋งŒ ํ•„์š”ํ•˜๋ฉฐ ๋‹ค์Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค, ๋ฌด๋ฃŒ GPLv3 ๋ผ์ด์„ผ์Šค.

์งˆ๋ฌธ: ์ž‘์„ฑ์ž์˜ ํ—ˆ๊ฐ€ ์—†์ด(๋˜๋Š” ๋ช…์‹œ์ ์ธ ๊ธˆ์ง€) ์›น์‚ฌ์ดํŠธ๋ฅผ ์Šคํฌ๋žฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ฉ๋ฒ•์ ์ธ๊ฐ€์š”? Google์€ Google Play์—์„œ ์•ฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค., API๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์‚ฌ์šฉ์ž ๊ณ„์•ฝ์„ ์œ„๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.
๋‹ต๋ณ€: ๋ฌผ๋ก  ํ•ฉ๋ฒ•์ ์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐœ์ ์œผ๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ์ •๋ณด๋ฅผ ์ฝ๋Š” ๋ฐ ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ• ์ง€๋Š” ๊ท€ํ•˜์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ: ๋ฏธ๊ตญ ๋ฒ•์›์€ ์›น์‚ฌ์ดํŠธ ์Šคํฌ๋ž˜ํ•‘์„ ์™„์ „ํžˆ ํ•ฉ๋ฒ•ํ™”ํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ๊ธฐ์ˆ ์  ๊ฐ„์„ญ์„ ๊ธˆ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค., ํ•˜์ง€๋งŒ Gul์€ ๋‹ค๋ฅธ ์˜๊ฒฌ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ์•„์ง ๋ฏธ๊ตญ ๋ฒ•์›์— ๊ฐ€์„œ ๊ทธ๋“ค์„ ์„ค๋“ํ•˜๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์ฝ”๋“œ

๋„์„œ๊ด€ ์ƒˆ๋กœ์šด ํŒŒ์ดํ”„ ์ถ”์ถœ๊ธฐ - ์„ ์ˆ˜ ์ง€์› ํ”„๋กœ์ ํŠธ NewPipe, ํŠน์ • ์ฑ„๋„ ๋˜๋Š” ์žฌ์ƒ ๋ชฉ๋ก์— ๋Œ€ํ•œ ๋น„๋””์˜ค ๋ชฉ๋ก์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , ์œ ๋ช…ํ•œ ๋น„๋””์˜ค์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด(๋น„๋””์˜ค ์›น ํŽ˜์ด์ง€์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ)๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , ๋น„๋””์˜ค ์•„์ด์ฝ˜์˜ ์ฃผ์†Œ๋ฅผ ์–ป๊ณ , ๋น„๋””์˜ค ์ฃผ์†Œ๋„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์šธ.

์žฌ์ƒ ๋ชฉ๋ก์„ ๋กœ๋“œํ•˜๋Š” ์ฝ”๋“œ๋Š” ์•ฝ๊ฐ„ ๋ฒˆ๊ฑฐ๋กœ์›Œ์„œ ์—ฌ๊ธฐ์„œ๋Š” ์„ค๋ช…ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ด€์‹ฌ ์žˆ๋Š” ๋ถ„๋“ค์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. ๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ  ๋กœ๋”.

๊ณต๊ฐœ ๋น„๋””์˜ค ํŽ˜์ด์ง€์˜ ์ฃผ์†Œ์—์„œ ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์™€ ํ”Œ๋ ˆ์ด์–ด์—์„œ ์žฌ์ƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์Œ์— ์—ฐ๊ฒฐํ•˜์‹ญ์‹œ์˜ค.
app / build.gradle

dependencies {
...
    // NewPipe: youtube parser
    // https://github.com/TeamNewPipe/NewPipeExtractor
    implementation "com.github.TeamNewPipe:NewPipeExtractor:v0.17.4"
...
}

์ด ํ›„์—๋„ ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด... ์˜ˆ์ œ์—์„œ๋Š” Downloader ํด๋ž˜์Šค๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ๋‹ค๊ณ  ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํ”„๋กœ์ ํŠธ๋กœ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - ๋ฒ„์ „ 0.17.4์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์ด ๋ถ€๋ถ„์€ ์ตœ์‹  ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋‹ค์‹œ ์ž‘์„ฑ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ์•„์ง ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค).

YouTube ์›น์‚ฌ์ดํŠธ์˜ ๋น„๋””์˜ค ํŽ˜์ด์ง€ ์ฃผ์†Œ๋กœ ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์˜ ์ฃผ์†Œ๋ฅผ ์–ป์œผ์„ธ์š”:

์•ฑ/src/main/java/su/sadrobot/yashlang/controller/ContentLoader.java

    public String extractYtStreamUrl(final String ytVidUrl) throws ExtractionException, IOException {
        // https://github.com/TeamNewPipe/NewPipeExtractor/blob/dev/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractorDefaultTest.java
        NewPipe.init(Downloader.getInstance(), new Localization("GB", "en"));
        final YoutubeStreamExtractor extractor = (YoutubeStreamExtractor) YouTube
                .getStreamExtractor(ytVidUrl);
        extractor.fetchPage();
        final String streamUrl = extractor.getVideoStreams().size() > 0 ? extractor.getVideoStreams().get(0).getUrl() : null;
//        for (final VideoStream stream : extractor.getVideoStreams()) {
//            stream.getUrl();
//        }
        return streamUrl;
    }

๋™์˜์ƒ ์ฃผ์†Œ ytVidUrl์€ YouTube ์›น์‚ฌ์ดํŠธ์— ์žˆ๋Š” ๋ชจ๋“  ๋™์˜์ƒ ํŽ˜์ด์ง€์˜ ๊ณต๊ฐœ ์ฃผ์†Œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด https://www.youtube.com/watch?v=pd2RlatmNRk

ํ”Œ๋ ˆ์ด์–ด๋Š” ExoPlayer Google ์ž์ฒด์—์„œ. ์ด๊ฒƒ์€ YouTube์— ๋Œ€ํ•œ ์›น ๋ž˜ํผ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๋น„๋””์˜ค๋ฅผ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ œ ๋‚ด์žฅ ํ”Œ๋ ˆ์ด์–ด๋กœ ๋งค์šฐ ์œ ์—ฐํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์ฃผ์†Œ๋ฅผ ์ œ๊ณตํ•˜๋ฉด YouTube์—์„œ ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์„ ์žฌ์ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ์ŠคํŠธ๋ฆผ ์ฃผ์†Œ๋ฅผ ๋ฐ›์•˜์œผ๋‹ˆ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ์–ด๋–ป๊ฒŒ ๋ณด๋‚ด๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ”„๋กœ์ ํŠธ์— ์—ฐ๊ฒฐ app / build.gradle:

dependencies {
...
    // google Exoplayer
    // https://github.com/google/ExoPlayer
    // https://exoplayer.dev/
    implementation 'com.google.android.exoplayer:exoplayer:2.10.8'
...
}

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™”๋ฉด์— ํ”Œ๋ ˆ์ด์–ด ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐ ๋”ฐ๋ฅธ ๋ชจ๋“  ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ•˜์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํ”„๋กœ์ ํŠธ ์›น์‚ฌ์ดํŠธ๋‚˜ ์ฝ”๋“œ์—์„œ ์˜ˆ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ). ํ”Œ๋ ˆ์ด์–ด์—์„œ YouTube์˜ ๋น„๋””์˜ค ์žฌ์ƒ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ๋ฐ›์€ ์ฃผ์†Œ:

์•ฑ/src/main/java/su/sadrobot/yashlang/WatchVideoActivity.java

private void playVideoStream(final String streamUrl, final long seekTo) {
    if (streamUrl == null) {
        // ะพัั‚ะฐะฝะพะฒะธั‚ัŒ ะฟั€ะพะธะณั€ั‹ะฒะฐะฝะธะต ั‚ะตะบัƒั‰ะตะณะพ ั€ะพะปะธะบะฐ, ะตัะปะธ ะฑั‹ะป ะทะฐะณั€ัƒะถะตะฝ
        videoPlayerView.getPlayer().stop(true);
    } else {
        // https://exoplayer.dev/
        // https://github.com/google/ExoPlayer

        final Uri mp4VideoUri = Uri.parse(streamUrl);
        final MediaSource videoSource = new ProgressiveMediaSource.Factory(videoDataSourceFactory)
                .createMediaSource(mp4VideoUri);

        // ะŸะพัั‚ะฐะฒะธะผ ะฝะฐ ะฟะฐัƒะทัƒ ัั‚ะฐั€ะพะต ะฒะธะดะตะพ, ะฟะพะบะฐ ะณะพั‚ะพะฒะธะผ ะฝะพะฒะพะต
        if (videoPlayerView.getPlayer().getPlaybackState() != Player.STATE_ENDED) {
            // ะ•ัะปะธ ัั‚ะฐะฒะธั‚ัŒ ะฝะฐ ะฟะฐัƒะทัƒ ะทะดะตััŒ ะฟะพัะปะต ั‚ะพะณะพ, ะบะฐะบ ะฟะปะตะตั€ ะฒัั‚ะฐะป ะฝะฐ ะฟะฐัƒะทัƒ ัะฐะผ, ะทะฐะบะพะฝั‡ะธะฒ
            // ะธะณั€ะฐั‚ัŒ ะฒะธะดะตะพ, ะฟะพะปัƒั‡ะธะผ ะทะดะตััŒ ะฒั‚ะพั€ะพะต ัะพะฑั‹ั‚ะธะต STATE_ENDED, ะฟะพัั‚ะพะผัƒ ะฝะฐะผ ะฝัƒะถะฝะฐ ะทะดะตััŒ
            // ัะฟะตั†ะธะฐะปัŒะฝะฐั ะฟั€ะพะฒะตั€ะบะฐ.
            // ะŸั€ะธ ัั‚ะพะผ ะทะฝะฐั‡ะตะฝะธะต getPlayWhenReady() ะพัั‚ะฐะฝะตั‚ัั true, ะฟะพัั‚ะพะผัƒ ะฟั€ะพะฒะตั€ัะตะผ ะธะผะตะฝะฝะพ ัะพัั‚ะพัะฝะธะต.
            // https://github.com/google/ExoPlayer/issues/2272
            videoPlayerView.getPlayer().setPlayWhenReady(false);
        }

        // Prepare the player with the source.
        ((SimpleExoPlayer) videoPlayerView.getPlayer()).prepare(videoSource);

        // ะฃะบะฐะถะตะผ ั‚ะตะบัƒั‰ัƒัŽ ะฟะพะทะธั†ะธัŽ ัั€ะฐะทัƒ ะฟั€ะธ ะทะฐะณั€ัƒะทะบะต ะฒะธะดะตะพ
        // (ะฒ ะบะพะผะตะฝั‚ะฐั… ั‡ั‚ะพ-ั‚ะพ ะฟะธัˆัƒั‚ ั‡ั‚ะพ-ั‚ะพ ะฟั€ะพ ะดะฐั‚ะฐัะพั€ัั‹, ะบะพั‚ะพั€ั‹ะต ะฟะพะดะดะตั€ะถะธะฒะฐัŽั‚ ะธะปะธ ะฝะต ะฟะพะดะดะตั€ะถะธะฒะฐัŽั‚
        // ะฟะตั€ะตั…ะพะดั‹ seek ะฟั€ะธ ะทะฐะณั€ัƒะทะบะต, ะฟะพั…ะพะถะต, ั‡ั‚ะพ ัั‚ะพ ั„ะธะณะฝั - ะฟั€ะพัั‚ะพ ะดะตะปะฐะตะผ seek ัั€ะฐะทัƒ ะฟะพัะปะต ะทะฐะณั€ัƒะทะบะธ)
        // Exoplayer plays new Playlist from the beginning instead of provided position
        // https://github.com/google/ExoPlayer/issues/4375
        // How to load stream in the desired position? #2197
        // https://github.com/google/ExoPlayer/issues/2197
        // ะฒ ัั‚ะพะผ ะผะตัั‚ะต ะฝะพั€ะผะปะฐัŒะฝั‹ะน duration ะตั‰ะต ะฝะต ะดะพัั‚ัƒะฟะตะฝ, ะฟะพัั‚ะพะผัƒ ะตะณะพ ะฝะต ะฟั€ะพะฒะตั€ัะตะผ
        //if(seekTo > 0 && seekTo < videoPlayerView.getPlayer().getDuration()) {
        if (seekTo > 0) {
            // ะฝะฐ 5 ัะตะบัƒะฝะด ั€ะฐะฝัŒัˆะต
            videoPlayerView.getPlayer().seekTo(seekTo - 5000 > 0 ? seekTo - 5000 : 0);
        }
        videoPlayerView.getPlayer().setPlayWhenReady(true);
    }
}

์•Œ๋ ค์ง„ ๋ฌธ์ œ

  • Google/YouTube ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•˜๋Š” ์—ฐ๋ น ์ œํ•œ์ด ์žˆ๋Š” ๋™์˜์ƒ์€ ์žฌ์ƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ : Ilya Muromets, Mosfilm Cinema Concern, ๋ฃจ์Šฌ๋ž€๊ณผ ๋ฅ˜๋“œ๋ฐ€๋ผ ์˜ํ™” 1, Mosfilm Film Concern

์กฐ์–ธ: ๊ทธ๋Ÿฌํ•œ ๋น„๋””์˜ค๋ฅผ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋น„๋””์˜ค ์ž‘์„ฑ์ž์—๊ฒŒ ์‹ค์ˆ˜๋กœ ์„ค์ •๋œ ์ œํ•œ์„ ์ œ๊ฑฐํ•˜๋„๋ก ์š”์ฒญํ•˜์‹ญ์‹œ์˜ค.

  • ์„œ๋น„์Šค๊ฐ€ ๊ธธ์ด๋ฅผ XNUMX์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ผ๋ถ€ ๋ฐฉ์†ก ๋น„๋””์˜ค๋Š” ์žฌ์ƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (ํ•ด๋‹น ๋น„๋””์˜ค์˜ ๊ฒฝ์šฐ ๋ชฉ๋ก๊ณผ ๊ฐค๋Ÿฌ๋ฆฌ์˜ ๊ธธ์ด๋Š” "[dur undef]"๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.)

์˜ˆ : ์ข€ ๊ธฐ๋‹ค๋ ค! Soyuzmultfilm HD(์–ด๋ฆฐ์ด๋ฅผ ์œ„ํ•œ ๋งŒํ™”)์˜ ๋ชจ๋“  ํ˜ธ, Soyuzmultfilm ์ŠคํŠœ๋””์˜ค์˜ ๋งŒํ™”, ์ธ๊ธฐ ๋งŒํ™” Soyuzmultfilm, Soyuzmultfilm studio์˜ ๋งŒํ™”

์กฐ์–ธ: ๊ทธ๋Ÿฌํ•œ ๋น„๋””์˜ค๋ฅผ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.

  • ์ง์ ‘ ๋งํฌ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋™์˜์ƒ์€ ์‚ฌ์šฉ์ž์˜ ๋™์˜์ƒ์„ ๋ชจ๋‘ ๋‹ค์šด๋กœ๋“œํ•˜๋”๋ผ๋„ ๋กœ์ปฌ ์žฌ์ƒ๋ชฉ๋ก์— ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ : ๋ถˆ ๊ธธ๋“ค์ด๊ธฐ 1ํ™”, Mosfilm Cinema Concern

  • ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์žฌ์ƒ๋˜์ง€๋งŒ ํ”Œ๋ ˆ์ด์–ด์—์„œ๋Š” ์žฌ์ƒ๋˜์ง€ ์•Š๋Š” ๊ณต๊ฐœ ๋™์˜์ƒ์„ ๋ฐœ๊ฒฌํ•œ ๊ฒฝ์šฐ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๋‚ด์ฃผ์„ธ์š”(์ƒˆ ๋ฒ„์ „์—์„œ ๋ฌธ์ œ๊ฐ€ ์ด๋ฏธ ํ•ด๊ฒฐ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค) ์ƒˆ๋กœ์šด ํŒŒ์ดํ”„ ์ถ”์ถœ๊ธฐ ์ด ๋ฒ„์ „์œผ๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด).

  • ์ธํ„ฐ๋„ท ์†๋„๊ฐ€ ๋Š๋ฆฌ๋ฉด ์ธํ„ฐํŽ˜์ด์Šค ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ๊บผ์ง€์ง€๋Š” ์•Š์Œ).

๊ทธ ๊ฒฐ๊ณผ,

๋‚ด ์•„๋“ค์€ ํƒœ๋ธ”๋ฆฟ์—์„œ Android ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์‚ผ์„ฑ ์Šค๋งˆํŠธ TV๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ๊ณ ์˜ ์ž๋…€ ๋ณดํ˜ธ๋Š” ์—ฌ์ „ํžˆ ๊ฐœ์ธ์ ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ œ๊ฐ€ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ํŽธ๋ฆฌํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ์ž‘์—… ๋ฒ„์ „์˜ ์ฒซ์ธ์ƒ์€ ๋งˆ์น˜ ๋‹ค๋ฅธ ์„ธ๊ณ„์— ์™€ ์žˆ๋Š” ๋“ฏํ•œ ๋Š๋‚Œ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋Š” YouTube์—์„œ ๋‹ค์šด๋กœ๋“œ๋˜์ง€๋งŒ ์ด๋Š” ๋” ์ด์ƒ YouTube๊ฐ€ ์•„๋‹ˆ๋ผ ๋งˆ์น˜ ๋ˆˆ์—์„œ ์ง€๋„ค๋ฅผ ๊บผ๋‚ด ์œ ๋ฆฌ๋ณ‘์— ๋„ฃ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์•ˆ์ „ํ•˜๊ณ  ํ†ต์ œ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€