Как отправить большой видеофайл с помощью функции Flask send_file () - PullRequest
0 голосов
/ 31 мая 2019

Я хочу отправить большой видеофайл с помощью Slack send_file () API. Однако длина отправляемого файла не совпадает с исходным файлом. Это всегда на несколько сотен байтов меньше по размеру. Не уверен, что мне не хватает. Любая помощь приветствуется.

Серверная программа написана на основе среды Flask + python3. Вот фрагмент кода, который я пробовал:

@app.route('/download_file')
def download_file():
  try:
    f = request.files['file']
    print("File name :", f.filename)
    path = "/home/juno/app_server/" + f.filename
    print ("Path = " + path)
    file_size =  os.path.getsize(f.filename)
    print("File size :", file_size)

    return send_file(path, attachment_filename=f.filename, as_attachment=True)
  except BaseException as e:
     print (e)
     return("<h1>Exception: Download operation failed</h1>")

Оригинальный размер файла: 176331761

Информация об оригинальном файле:

Ввод # 0, mov, mp4, m4a, 3gp, 3g2, mj2, из '160409_A_015.mp4': Метаданные: major_brand: mp42 minor_version: 0 совместимые бренды: mp42mp41 creation_time: 2017-06-23 18:12:28 Продолжительность: 00: 00: 38.10, старт: 0.000000, битрейт: 37020 кбит / с Поток № 0: 0 (англ): видео: h264 (основной) (avc1 / 0x31637661), yuv420p (tv, bt709), 1920x1080, 37015 кбит / с, 29,97 кадров в секунду, 29,97 тб, 30 тыс. Тбн, 59,94 тбк (по умолчанию) Метаданные: creation_time: 2017-06-23 18:12:29 имя обработчика: обработчик данных псевдонима кодировщик: AVC Coding

=======================================

Размер отправляемого файла: 176332165

Информация об отправленном файле:

[mov, mp4, m4a, 3gp, 3g2, mj2 @ 0x1f67340] Форматировать mov, mp4, m4a, 3gp, 3g2, mj2, обнаруженный только при низком значении 1, возможно неправильное обнаружение! [mov, mp4, m4a, 3gp, 3g2, mj2 @ 0x1f67340] атом moov не найден s3.mp4: при обработке ввода найдены неверные данные

МОДИФИКАЦИЯ: Похоже, что команда send_file () отсылает содержимое файла в виде обычных данных, а не видеоданных.

$ file h2.mp4 ===> h2.mp4: данные (загруженный файл)

$ file 160409_A_015.mp4 ===> 160409_A_015.mp4: носитель ISO, MP4 v2 [ISO 14496-14] (оригинальный файл)

...