【问题标题】:Code 324 Not Valid Video and Status failed?代码 324 无效视频和状态失败?
【发布时间】:2020-07-06 17:15:25
【问题描述】:

我正在尝试通过 twitter API 从我的网站上传视频。我为大文件抓取了他们的 github 库代码的异步上传文件。我正在分块上传数据。这是代码: (请注意,我使用静态文件大小和块进行测试肯定会感谢动态方法建议)

    MEDIA_ENDPOINT_URL = 'https://upload.twitter.com/1.1/media/upload.json'
    POST_TWEET_URL = 'https://api.twitter.com/1.1/statuses/update.json'

    CONSUMER_KEY = 'xxx'
    CONSUMER_SECRET = 'xxx'
    ACCESS_TOKEN = 'xxx-xxx'
    ACCESS_TOKEN_SECRET = 'xxx'

    VIDEO_FILENAME = request.FILES['video']
    VIDEO_SIZE = 59467

    oauth = OAuth1(CONSUMER_KEY,
                   client_secret=CONSUMER_SECRET,
                   resource_owner_key=ACCESS_TOKEN,
                   resource_owner_secret=ACCESS_TOKEN_SECRET)

    request_data = {
      'command': 'INIT',
      'media_type': 'video/mp4',
      'total_bytes': VIDEO_SIZE,
      'media_category': 'tweet_video'
    }

    req = requests.post(url=MEDIA_ENDPOINT_URL, data=request_data, auth=oauth)
    print req
    media_id = req.json()['media_id']

    print('Media ID: %s' % str(media_id))

    segment_id = 0
    bytes_sent = 0
    vid_file = VIDEO_FILENAME

    while bytes_sent < VIDEO_SIZE:
        chunk = vid_file.read(59467)
        print('APPEND')

        request_data = {
            'command': 'APPEND',
            'media_id': media_id,
            'segment_index': segment_id
        }

        files = {
            'media': chunk
        }

        req = requests.post(url=MEDIA_ENDPOINT_URL, data=request_data, files=files, auth=oauth)

        if req.status_code < 200 or req.status_code > 299:
            print(req.status_code)
            print(req.text)

        segment_id = segment_id + 1
        bytes_sent = vid_file.tell()

        print('%s of %s bytes uploaded' % (str(bytes_sent), str(VIDEO_SIZE)))

    print('Upload chunks complete.')

    request_data = {
        'command': 'FINALIZE',
        'media_id': media_id,
        'media_category': 'tweet_video'
    }

    req = requests.post(url=MEDIA_ENDPOINT_URL, data=request_data, auth=oauth)
    print(req.json())

    processing_info = req.json().get('processing_info', None)
    print(req.status_code)

    time.sleep(5)

    request_data = {
        'status': 'I just uploaded a video with the @TwitterAPI.',
        'media_ids': req.json()['media_id_string'],
        'media_category': 'tweet_video'
    }

    req = requests.post(url=POST_TWEET_URL, data=request_data, auth=oauth)
    print(req.json())

    context = {
        'r': req
    }
    return render_to_response('dashboard/manage_content/display.html', context) 

我遇到以下错误:

{"errors":[{"code":324,"message":"无效视频"}]} 我正在上传 1.6 mb 大小的 mp4 文件。如果您需要更多信息,请告诉我。

【问题讨论】:

  • 你说 mp4 是 1.6MB - 但你的代码说它是 59467 字节。如果您使用正确的尺寸,它会起作用吗?另外,你可以直接在推特网站上上传视频吗?如果不是,则可能是文件已损坏。
  • 当我尝试使用正确的大小时,APPEND 命令在 59467 字节后抛出错误。所以我想也许我可以在尺寸上妥协一点来测试它。是的,我尝试在 Twitter 上上传相同的视频,效果很好。
  • 您对视频大小处理的怀疑是正确的。发布了对我有用的内容,感谢您的时间。

标签: django twitter twitter-oauth


【解决方案1】:

解决方案是使用文件的实际大小而不是文件的一部分,并确保您使用函数来动态获取大小。即使上传了所有块,静态大小也不起作用。

【讨论】:

    猜你喜欢
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 2016-10-29
    相关资源
    最近更新 更多