2009-02-05 4 views
1

나는 웹 기반 flv 파일 다운로드 유틸리티를 코딩했습니다. flv 파일을 다운로드하려고하면 다운로드 할 시간이없는 것처럼 브라우저에 진행률 막대가 표시되지 않습니다. 다운로드하려는 flv 파일에 메타 태그가 연결되어 있지 않은 경우이 문제가 발생합니다. 그래서 Perl 모듈 FLV::Info을 통해 flv 파일을 실행했고 그 메타 태그 헤더가 있음을 알았습니다.Flv 파일 다운로드 및 브라우저 진행률 표시 줄

File name   0.360730744040669.flv 
File size   167 bytes 
Meta    1 event 
    canSeekToEnd  1 
    filesize   167 
    metadatacreator FLV::File v0.22 
    metadatadate  Wed Feb 4 17:00:07 2009 

누구나 어떤 아이디어 : 아래

내가 FLV 파일에 대한 참조 메타 태그의 예입니다?

답변

3

웹 서버가 Content-Length 헤더를 올바르게 설정하지 않았거나 그와 유사한 것일 수 있습니다.

파일이 실제로 167 바이트입니까? 그것은 다소 작게 보인다.

1

jrockway에 따르면 콘텐츠 길이 헤더 일 가능성이 높습니다. Firefox에서 기본적으로 쉽게 액세스 할 수 있는지 여부는 확실하지 않지만 Live HTTP Headers 플러그인을 사용하면 액세스 할 수 있으며 Firefox를 사용하지 않는 경우 Wireshark을 사용할 수 있습니다. 대신 (그러나 그것은 훨씬 무거 우며 네트워크 트래픽의 나머지 부분에서 헤더를 찾을 수 있도록 다소 혼란스러워 할 수 있습니다). 이 헤더가 설정되었는지 여부를 확인한 후 올바른 값인지 여부를 확인하면 처리 방법에 대해 자세히 알 수 있습니다.

다른 사이트에서 flv 파일을 다운로드 할 때 진행률 표시 줄이 나타나는지 확인하는 것이 좋습니다. 그런 다음 샘플 파일과 제대로 작동하는 파일 간의 차이점을 살펴볼 수 있습니다.

파일의 내용 (FLV :: Info가 세부 정보를 가져 오는 위치)이 진행률을 계산하는 중간 다운로드에 사용되면 다소 놀랍습니다.

0

메타 데이터에 대해 읽은 내용은 Flash에서 비디오를 재생하는 방법과 관련이 있습니다. Flash에서 동영상의 길이를 확인하려면 메타 데이터가 필요합니다. 이것이 메타 데이터가 일반적으로 파일의 시작 부분에 위치하는 이유입니다. H264 비디오를 인코딩 할 때 메타 데이터는 ffmpeg와 같은 도구를 통해 파일 끝에 저장되며 "스트리밍"이 제대로 작동하려면 시작 부분으로 이동해야합니다.

그러나 브라우저의 진행률 막대에 영향을주지 않아야합니다. 예를 들어 youtube가 헤더에 Content-Length를 설정하지 않았기 때문일 수 있습니다.