Загрузка файла Flv и индикатор выполнения браузера - PullRequest
1 голос
/ 05 февраля 2009

Я только что запрограммировал утилиту загрузки 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

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

Ответы [ 3 ]

3 голосов
/ 05 февраля 2009

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

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

1 голос
/ 05 февраля 2009

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

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

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

0 голосов
/ 05 февраля 2009

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

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

...