node.js - 通过URL将文件上传到YouTube会导致Heroku上的 “Memory quota exceeded”

标签 node.js heroku youtube

我正在尝试将文件(仅S3 URL可用)上载到YouTube,但是Heroku上的Dyno总是崩溃,并显示“内存配额超出”错误消息。恐怕文件(或文件的一部分)在上传到YouTube时会存储在内存中,但不知道为什么。在本地使用1GB的文件进行了测试,并没有发现内存使用发生明显变化。是否有人知道如何解决此问题,并能够在服务器上没有大量GB内存的情况下将任何大小的文件上传到YouTube?

import * as rp from 'request-promise';
const Youtube = require('youtube-api');

function upload(config, credentials, fileUrl) {
    const oauth2 = Youtube.authenticate({
        client_id: config.youtube.clientId,
        client_secret: config.youtube.clientSecret,
        redirect_url: config.youtube.redirectUrl,
        type: 'oauth',
    });

    oauth2.setCredentials(credentials);

    const params = {
        auth: oauth2,
        media: {
            body: rp(fileUrl),
            mimeType: 'application/octet-stream'
        },
        part: 'snippet,status',
        resource: {
            snippet: {
                description: 'my description',
                title: 'my title'
            },
            status: {
                privacyStatus: 'private'
            }
        },
    };
    Youtube.videos.insert(params, function (error, result) {
        if (error) {
            console.log(error);
        }
        console.log('success');
    });
}

最佳答案

好了,找到了解决方案:您只需要集成S3 sdk并创建一个readstream!见下文

const readStream = s3.getObject(s3Params).createReadStream();

const params = {
            auth: oauth2,
            media: {
                body: readStream,
                mimeType: 'video/' + videoFormat
            },
            part: 'snippet,status',
            resource: {
                snippet: {
                    description: videoProject.shortDescription + videoProject.longDescription,
                    title: title
                },
                status: {
                    privacyStatus: 'private'
                }
            },
        };

关于node.js - 通过URL将文件上传到YouTube会导致Heroku上的 “Memory quota exceeded”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46282878/

相关文章:

html - ExpressJS/NodeJS 重定向图像

node.js - 我看似有效的 URL 在本地解析,但在部署到 heroku 上时失败

Heroku:WAITING开始时构建超时

ffmpeg - 在 youtube live 上运行 ffmpeg 时没有声音

node.js - FUNCTION_ERROR_INIT_FAILURE AWS lambda

node.js - 部署在 aws 上的 NodeJs 上的 Post 函数返回错误 :502

git - 如何将 git clone 变成一个 fork,然后从 fork 推送到 heroku?

youtube - 如何使用 YouTube Data API v3 获取 channel 中所有视频的列表?

c# - 无法通过MediaElement播放YouTube

javascript - 替换 html 中的 URL 不起作用