Upgrade to Pro — share decks privately, control downloads, hide ads and more …

タイムラインでの動画自動再生 はどうやってやるの?

タイムラインでの動画自動再生 はどうやってやるの?

今や色々なアプリで出来るようになったタイムラインで動画を自動再生するアプリを作る機会があったので、その技術について解説します。

Avatar for Daisuke Akimoto

Daisuke Akimoto

September 28, 2019

Other Decks in Programming

Transcript

  1. HTTP Live StreamingʢHLSʣͱ͸ʁ ɾΠϯσοΫεϑΝΠϧʢ.m3u8 ϓϨΠϦετʣ ɾϝσΟΞηάϝϯτϑΝΠϧʢ.ts τϥϯεϙʔτετϦʔϜϑΝΠϧ) ϚελʔϓϨΠϦετ .m3u8 ϝσΟΞϓϨΠϦετ

    .m3u8 τϥϯεϙʔτ ετϦʔϜϑΝΠϧ .ts τϥϯεϙʔτ ετϦʔϜϑΝΠϧ .ts τϥϯεϙʔτ ετϦʔϜϑΝΠϧ .ts ϝσΟΞϓϨΠϦετ .m3u8 τϥϯεϙʔτ ετϦʔϜϑΝΠϧ .ts τϥϯεϙʔτ ετϦʔϜϑΝΠϧ .ts τϥϯεϙʔτ ετϦʔϜϑΝΠϧ .ts ϝσΟΞϓϨΠϦετ .m3u8 τϥϯεϙʔτ ετϦʔϜϑΝΠϧ .ts τϥϯεϙʔτ ετϦʔϜϑΝΠϧ .ts τϥϯεϙʔτ ετϦʔϜϑΝΠϧ .ts
  2. HTTP Live StreamingʢHLSʣͱ͸ʁ #EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=480x270 https://xxxxxxxxxxxxx.cloudfront.net/main/teststream_a_low.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=480x270 https://xxxxxxxxxxxxx.cloudfront.net/backup/teststream_b_low.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000,RESOLUTION=960x540 https://xxxxxxxxxxxxx.cloudfront.net/main/teststream_a_mid.m3u8

    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000,RESOLUTION=960x540 https://xxxxxxxxxxxxx.cloudfront.net/backup/teststream_b_mid.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2000000,RESOLUTION=1280x720 https://xxxxxxxxxxxxx.cloudfront.net/main/teststream_a_high.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2000000,RESOLUTION=1280x720 https://xxxxxxxxxxxxx.cloudfront.net/backup/teststream_b_high.m3u8 ϚελʔϓϨΠϦετ
  3. γεςϜઃܭʢAWS࢖༻ʣ App APIαʔό ετϨʔδ&CDN EC2 RDS Lambda Elastic Transcoder Cognito

    S3 Cloud Front ϝσΟΞίϯόʔτ Ξοϓϩʔυ REST ೝূ ίϯςϯπࢀর Πϕϯτ ىಈ mp4→m3u8+ts
  4. γεςϜઃܭʢϝσΟΞม׵ʣ App ετϨʔδ&CDN Lambda Elastic Transcoder S3 Cloud Front ϝσΟΞίϯόʔτ

    1. Ξοϓϩʔυ 4.ίϯςϯπࢀর 2.Πϕϯτ 2.ىಈ 3. mp4→m3u8+ts 1. ΞϓϦ͕S3ʹΞοϓϩʔυʢS3 API࢖༻ʣ 2. Lambda͕S3্ͷmp4ϑΝΠϧ࡞੒Λݕ஌ɺ ɹElastic TranscoderΛىಈ 3. Elastic Transcoder ͸mp4ϑΝΠϧ͔Β ɹෳ਺ଳҬ෼ͷm3u8+tsϑΝΠϧΛ࡞੒ 4. Cloud Front Ͱ͸S3্ͷm3u8+tsϑΝΠϧΛ ɹΠϯλʔωοτ഑৴