Загрузка файла Flv и индикатор выполнения браузера

Я только что написал веб-утилиту для загрузки файлов FLV. Когда я пытаюсь загрузить FLV-файл, браузер не показывает индикатор выполнения, так как я не вижу времени, оставшегося для загрузки. Где-то я читал, что это происходит, если файл flv, который вы пытаетесь загрузить, не имеет связанного с ним метатега. Итак, я пропустил свой FLV-файл через модуль Perl FLV::Info и увидел, что заголовок метатега присутствует.

Ниже приведен пример метатега, который я вижу для файла 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

У кого-нибудь есть идеи?


person Abhi    schedule 05.02.2009    source источник


Ответы (3)


Вероятно, ваш веб-сервер неправильно устанавливает заголовок Content-length или что-то в этом роде.

Ваш файл действительно всего 167 байт? Это кажется несколько маленьким.

person jrockway    schedule 05.02.2009

Как говорит jrockway, это, вероятно, заголовок Content-Length — я не уверен, обеспечивает ли Firefox легкий доступ по умолчанию, но Live HTTP Headers предоставляет вам доступ, и если вы не используете Firefox, вы можете использовать Wireshark вместо этого (но это намного тяжелее, и может потребоваться некоторое время, чтобы найти заголовки среди остального сетевого трафика). Как только вы увидите, устанавливается ли этот заголовок (и если да, то является ли это правильным значением), вы узнаете больше о том, как действовать дальше.

Стоит убедиться, что вы получаете индикатор выполнения при загрузке файлов FLV с других сайтов, и как только это произойдет, вы можете начать смотреть на различия между вашим образцом файла и теми, которые ведут себя правильно.

Я был бы несколько удивлен, если бы содержимое файла (из которого FLV::Info получает свои данные) использовалось в середине загрузки для расчета прогресса.

person Cebjyre    schedule 05.02.2009

То, что вы читали о метаданных, вероятно, связано с тем, как Flash воспроизводит видео. Метаданные необходимы для того, чтобы Flash знал, какова продолжительность фильма. Вот почему метаданные обычно помещаются в начало файла. При кодировании видео H264 метаданные помещаются в конец файла с помощью таких инструментов, как ffmpeg, и для правильной работы «потоковой передачи» вам необходимо переместить их в начало.

Однако это не должно влиять на индикатор выполнения в браузере, что, скорее всего, связано с тем, что, например, YouTube не устанавливает Content-Length в заголовке.

person grapefrukt    schedule 05.02.2009