간단한 답변
제공업체가 수신한 것은 이미지가 아니라 사용자의 서버에서 반환된 오류 응답입니다. 브라우저에서 열리는 링크는 단일 브라우저에서의 다운로드가 작동한다는 점만을 증명할 뿐입니다. 제공업체의 서버가 이를 가져올 수 있음을 증명하지는 않습니다. 일반적인 오류는 제출 시 400으로 반환되며, 작업이 생성되지 않습니다:received: ""은(는) 제공업체가 다운로드한 데이터에서 어떠한 이미지 형식도 감지하지 못했음을 의미합니다.
가장 간단한 해결 방법: 일반 오브젝트 스토리지 버킷이나 CDN에 이미지를 호스팅하고 https://cdn.example.com/xxx.png와 같은 일반 공개 URL을 전달하십시오.
실제 사례
한 고객의 첫 프레임 이미지 링크는 다음과 같았습니다:
마지막 행을 통해 이미지와 요청 파라미터에는 문제가 없었음을 알 수 있습니다. 오직 링크에만 문제가 있었습니다.
이러한 링크가 존재하는 이유
이것은 이미지 주소가 아닙니다. 이는 애플리케이션 엔드포인트입니다. 비공개 사용자 파일은 백엔드에 저장되며, 파일이 필요할 때마다 애플리케이션은 만료 시간, 서명 및 다운로드 횟수 제한이 포함된 임시 다운로드 권한을 발급합니다. 이는 비공개 파일을 보호하는 일반적인 방식입니다. 링크가 유출되더라도 얼마 지나지 않거나 몇 번 사용된 후에는 작동을 멈추며, 모든 다운로드 내역을 감사할 수 있습니다. 이 설계는 브라우저에서 한 사용자가 한 번 다운로드하는 상황을 가정한 것입니다. 대신 서버가 파일을 가져오게 되면 문제가 발생합니다:- Range 미지원: 많은 서비스가 포맷을 감지하기 위해
Range헤더로 시작 바이트를 먼저 요청하거나 청크 단위로 다운로드하여 미디어를 가져옵니다. 이러한 엔드포인트는 전체 파일만 반환하며 Range 요청에는 오류로 응답합니다 - 다운로드 횟수 제한: 제공자가 미디어를 가져올 때 사전 확인(probe)을 수행하고, 다운로드하며, 실패 시 재시도할 수 있으므로 반드시 한 번만 다운로드한다고 볼 수 없습니다. 제한 횟수를 모두 소진하면 응답으로 오류 JSON이 반환됩니다
- 짧은 만료 시간: 링크가 만료되면 반환되는 응답 또한 이미지가 아닙니다
이미지 전달 방식 선택
파일이 이러한 유형의 다운로드 권한 부여 엔드포인트 뒤에 있는 경우, 제출하기 전에 다른 링크를 생성하십시오:
- 파일이 이미 오브젝트 스토리지(OSS, S3, R2 등)에 있다면, 스토리지 서비스에서 사전 서명된 URL을 생성하고 만료 시간을 최소 1시간 이상으로 설정하십시오. 사전 서명된 URL은 시간에 의해서만 만료되고, 다운로드 수 제한이 없으며, Range를 지원합니다
- 그렇지 않은 경우, 이미지를 공개 오브젝트 스토리지 버킷이나 CDN으로 복사한 후 Seedance에 새 URL을 전달하십시오
제출 전 링크 확인하기
인터넷 접속이 가능한 모든 머신에서 다음 두 명령어를 실행하십시오.<URL>을(를) 이미지 링크로 교체하고, 셸이 &을(를) 해석하지 않도록 작은따옴표로 감싼 상태를 유지하십시오:
- 두 명령어 모두 JSON이나 HTML이 아닌 이미지를 반환하는지
- 다운로드 횟수 제한 없이 반복 다운로드가 계속 정상 작동하는지
- 쿠키, 로그인 세션 또는 추가 헤더가 필요하지 않은지
- 적어도 제출이 완료될 때까지, 이상적으로는 1시간 이상 링크가 유효하게 유지되는지
- 인트라넷 내부나 IP 허용 목록 뒤에 있지 않고 퍼블릭 인터넷에서 링크에 접근할 수 있는지
관련 문서
동영상 생성 API
이미지를 전달하는 세 가지 방법 및 모든 요청 파라미터
에셋 우선 워크플로
세 가지 방식의 제출 시점 비교 및 에셋 업로드 방법