Stack Overflow Asked by Jérémy Gachon on January 16, 2021
I wrote a node-js api, with node-js and fluent-ffmpeg :
'use strict';
require('babel-register');
const path = require('path');
const ffmpeg = require('fluent-ffmpeg');
[…]
var infs = new ffmpeg
infs.addInput(doc.data().url).outputOptions([
'-preset slow', '-g 48', '-sc_threshold 0',
'-map 0:0', '-map 0:1', '-map 0:0', '-map 0:1',
'-s:v:0 1280x720', '-c:v:0 libx264', '-b:v:0 2000k',
// "-var_stream_map", "'v:0,a:0 v:1,a:1'",
'-master_pl_name ./' + req.params.id + '/master' + req.params.id + '.m3u8',
'-f hls', '-hls_time 6', '-hls_list_size 0',
'-hls_segment_filename ./' + req.params.id + '/fileSequence|' + req.params.id + '|%d|v%v.ts',
'-max_muxing_queue_size 1024',
]).output('./' + req.params.id + '/video' + req.params.id + '.m3u8')
.on('start', function (commandLine) {
console.log('Spawned Ffmpeg with command: ' + commandLine);
})
.on('error', function (err, stdout, stderr) {
console.log('An error occurred: ' + err.message, err, stderr);
})
.on('progress', function (progress) {
console.log('Processing: ' + progress.percent + '% done')
})
.on('end', function (err, stdout, stderr) {
console.log('Finished processing!' /*, err, stdout, stderr*/)
})
.run()
res.status(200).send('GG').end();
}
});
[…]
That work with
node app.js
on my macbook pro, but when i do
gcloud app deploy
and I call the public url, I have this logs :
Processing: undefined% done
An error occurred: ffmpeg was killed with signal SIGABRT Error: ffmpeg was killed with signal SIGABRT
Here is my app.yaml :
# Copyright 2017, Google, Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# [START gae_flex_quickstart_yaml]
runtime: nodejs
env: flex
# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 6
disk_size_gb: 30
# [END gae_flex_quickstart_yaml]
How can I do to deploy correctly my node-js api on google app engine ?
Thank’s in advance.
Jérémy.
According to the library documentation:
In order to be able to use this module, make sure you have ffmpeg installed on your system (including all necessary encoding libraries like libmp3lame or libx264).
Checking the default node container (that you're using, according to the app.yaml
), I'm not sure the right dependencies come pre-installed.
You can check by going to a deployed instance, enable debugging, and SSHing into it. You can follow the process detailed in the docs.
If all the required dependencies are not pre-installed, you'll have to build a custom container for GAE flex.
Since the node library fluent-ffmpeg
is just running the local command (you can check in the code of the library), it can be that your local computer has everything installed, but it's missing components in the built image.
The fact that you're testing with node app.js
(i.e. not in a build container, but with the local node), gives more credit to this idea.
Answered by Jofre on January 16, 2021
We do not have information about what exactly is doc.data().url
, however this will be something you are getting from db document. So looking into addInput
documentation, I guess, it has to be some local file name. Local file name is, as well, argument of output
method.
This will work on your local environment, however when you deal with files in App Engine you have to use some storage services which is described here.
Answered by vitooh on January 16, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP