2010-05-05 2 views
3

YouTube 동영상에는 미리보기 이미지가 영화 자체에 링크 된 YouTube 동영상 목록이 포함되어 있습니다. YouTube API에서 미리보기 이미지 URL을 가져 와서 YouTube 서버에서 해당 위치로 바로 링크합니다. 그래서 우리의 이미지 태그는 다음과 같습니다 :동영상을 찍을 때 YouTube 미리보기 이미지가 정상적으로 처리되는 방법을 알려주세요.

<img src="http://i.ytimg.com/vi/o6CHqSN7O-o/2.jpg" alt="" width="133" height="78" /> 

문제는 때때로 비디오가 제거되고 축소판도 마찬가지입니다. 그 일이 언제 일어날 지 모릅니다. 미리보기 이미지는 깨진 이미지로 바뀝니다. 어떻게 처리할까요? 그것은이 제거 된 설명 할 것, 그것은 물론, 제거됩니다 경우 영화가 작동하지 않습니다,하지만 괜찮아요 -

  • 다운로드 미리보기 및 로컬로 저장 :

    이 솔루션의 숫자입니다 우리는 깨진 이미지를 피합니다.

  • 이미지 섬네일이 변경되었는지 확인하려면 API를 주기적으로 확인하십시오. 더 이상 존재하지 않으면 우리 자신의 "무비 삭제"축소판을 사용하십시오. 이것은 API 호출에 꽤 무겁습니다! 깨진 이미지를 대체 할

  • 를 사용하여 자바 스크립트 (이 많이 좋아하지 않는다)

우리의 이상적인 솔루션이 제거 친절한 "움직임을 표시 할 YouTube의 위치로의 img SRC를 지적하는 것 "영화가 떨어지면 이미지. 그러나 그것은 존재하지 않는 것 같습니다.

다른 사람이 누구입니까? 감사!

답변

1

서버 쪽 YouTube에서 미리보기 이미지를 요청하여 서버의 캐시에 저장하고 캐시 된 이미지를 표시하십시오. 이렇게하면 원본이 제거 된 경우에도 서버에 미리보기 이미지가 계속 표시됩니다. 미리보기 이미지는 각 동영상에 한 번만 요청됩니다. PHP와 같은 의사 코드 :

한 함정 : 썸네일 변경, 캐시 된 버전은 동일하게 유지하는 경우; YT 동영상의 일반적인 문제는 아닙니다. 캐시를보다 지능적으로 만들면 해결할 수 있지만 메타 데이터 (연령, 최대 연령 등)를 저장하고 HTTP 캐싱 헤더를 처리해야합니다. 캐싱 의사 코드 :

  • 은 캐시에있는 개체입니까?
    • 그렇다면 캐싱 된 버전이 신선한가요? (최대 사용 기간 등) 새로운 원격 버전이있는 경우
      • (마지막으로 수정 된, ETAG 등), 다운로드 및 저장
  • 다른 다운로드 및 저장 원격 버전
  • "다운로드 및 저장"이 404를 반환하면 이미지를 "제거됨"으로 변경하십시오.
+0

이것은 첫 번째 옵션에서 설명한대로 미리보기 이미지를 다운로드하고 로컬에 저장하는 것에 매우 가깝다고 생각합니다. 깨진 이미지를 피하는 데는 효과가 있지만 비디오가 제거되면 업데이트되지 않습니다. 그러면 좋을 것입니다. – mrjf

+0

@mrjf : 예, 맞습니다. 안타깝게도, 섬네일을 최신 상태로 유지하는 것은 좀 더 복잡한 캐싱 시스템을 필요로하므로 (예 : "최근에 완료하지 않은 경우에만 미리보기 이미지를 확인하십시오"라는 코드 밑의 스케치와 같이) 사소한 일입니다. 그렇더라도, 당신은 때때로 낡은 데이터를 얻을 것입니다. – Piskvor

0

PHP를 사용하여 파일을 요청하고 HTTP 응답 코드가 200 인 경우에만 축소판을 넣으십시오. 404 또는 다른 오류가 있으면 그곳에 다른 것을 넣으십시오 (사용자가 결정).

+0

일부 경우에는 확실히 좋습니다.우리의 목적에 조금 무거울 수 있습니다. 한 페이지에 100 개의 비디오가 있다면 페이지가로드 될 때마다 각 미리보기 이미지를 요청할 것입니다. 또는 일괄 처리하고 주기적으로 확인할 수도 있지만 API를 주기적으로 확인하는 것과 크게 다르지 않습니다. 아이디어를 가져 주셔서 감사합니다. 개념을 올바르게 얻었습니까? 그 모든 전화를 피할 수있는 방법은 없나요? – mrjf