【问题标题】:Creating a Playlist with Elastic Transcoder and Lambda (AWS)使用 Elastic Transcoder 和 Lambda (AWS) 创建播放列表
【发布时间】:2018-04-18 10:04:25
【问题描述】:

我在 Amazon Web 服务上使用 Lambda 创建了一个脚本,用于在将视频上传到 S3 存储桶时自动对视频进行转码。

这个脚本很好用,但是当我将下面的播放列表代码添加到脚本中时,整个脚本停止工作并且它不输出任何视频文件。

知道为什么吗?

Playlist: [{
  Format: 'HLSv3',
  Name: newKey + '.m3u8',
  OutputKeys: [
     newKey + '.ts'
    ]              
}]

这里你可以在脚本中看到上面的代码

'use strict';

var AWS = require('aws-sdk');
var s3 = new AWS.S3({
    apiVersion: '2012-09-25'
});
var eltr = new AWS.ElasticTranscoder({
    apiVersion: '2012-09-25',
    region: 'us-west-2'
});

exports.handler = function(event, context) {
    console.log('Executing Elastic Transcoder Orchestrator');

    var bucket = event.Records[0].s3.bucket.name;
    var key = event.Records[0].s3.object.key;
    var pipelineId = '1521208528859-wd01uu';

    console.log(key);
    console.log(event.Records[0]);

    if (bucket !== 'b-video-upload') {
        context.fail('Incorrect Video Input Bucket');
        return;
    }

    var srcKey = decodeURIComponent(event.Records[0].s3.object.key.replace(/\-/g, " ")); //the object may have spaces  
    var newKey = key.split('.')[0];

    var params = {
        PipelineId: pipelineId,
        OutputKeyPrefix: newKey + '/',
        Input: {
            Key: srcKey,
            FrameRate: 'auto',
            Resolution: 'auto',
            AspectRatio: 'auto',
            Interlaced: 'auto',
            Container: 'auto'
        },
        Outputs: [{
            Key: newKey + '.mp4',
            ThumbnailPattern: newKey + '-thumbnail-{resolution}' + '-{count}',
            PresetId: '1521314602259-6jnl6v', //Generic 1080p
            Watermarks: [{
                InputKey: 'watermarks/b-video-watermark.png',
                PresetWatermarkId: 'BottomLeft'
            }],
        },
        {
            Key: newKey + '.ts',
            ThumbnailPattern: '',
            PresetId: '1521267450305-5yd8hd', //HLS v3 2mb/s
            Watermarks: [{
                InputKey: 'watermarks/b-video-watermark.png',
                PresetWatermarkId: 'BottomLeft'
            }],

        }],
        Playlist: [{
                Format: 'HLSv3',
                Name: newKey + '.m3u8',
                OutputKeys: [
                newKey + '.ts'
                ]

        }]          
    };

    console.log('Starting Job');

    eltr.createJob(params, function(err, data){
        if (err){
            console.log(err);
        } else {
            console.log(data);
        }

        context.succeed('Job well done');
    });
};

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda amazon-elastic-transcoder


    【解决方案1】:

    我遇到了同样的问题。 然后我通过更改播放列表名称来解决它。

    好像是这样的。

    注意1:我在输出桶中有一个名为“hls-input”的文件夹,用于转码视频 所以

    newkey='input/{videoName}'

    输出键:['hls-input/{videoName}.ts']

    在这种情况下,该函数将输出一个与输入具有相同名称的 hls 加密视频,并且工作正常!

    注 2:我使用了 hlsv3,因为 hlsv4 需要视频(没有声音)和音频,我不想将 mp4 分离为视频和音频,这样对我来说效果很好!

    Playlists: [
     {
       Format: 'HLSv3',
       Name: newKey.split('/')[1]  ,
       OutputKeys: [ 'hls-' + newKey + '.ts' ],
     },
    ],
    

    【讨论】:

      猜你喜欢
      • 2016-03-06
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      相关资源
      最近更新 更多