質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

2135閲覧

AWS Lambda (Node.js14) でS3に格納した動画ファイルのアスペクト比を取得したい

momoth

総合スコア15

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/07/11 02:42

編集2021/07/13 01:46

いつもお世話になっております。
表題の内容について行き詰まっておりまして、ご教授いただきたく質問させていただきます。

やりたいこと

Node.js14で書かれた既存のLambda関数に、動画ファイルのアスペクト比を判別して処理を分岐させる機能を追加したい。

アドバイスいただきたいこと

・ 以下に記載しております「試したこと」で行き詰まっているエラーの解消方法
・ あるいは全く別の方法でも良いので「やりたいこと」を実現する方法
のいずれかをご教授いただければ幸いです。
何か思いついたことなど、ほんの少しの意見だけでも貰えると非常に助かります。よろしくお願いいたします。

試したこと

アスペクト比を取得するためには動画メタデータが必要なようですので、npmモジュールのmediainfo-wrapperを利用する実装を試しました。
ただし、AWS Lambdaのローカルストレージには容量上限があるため動画ファイルをS3から直接読み込む必要がありましたので、以下のブログなどを参考に、curlオプションを含めたmediainfoのバイナリファイルを自身でコンパイルし、mediainfo-wrapper内のmediainfoバイナリファイルを自作のものに置き換えて利用しました。(コンパイルはAmazon Linux2のEC2インスタンスを建てて実施)
https://aws.amazon.com/jp/blogs/compute/extracting-video-metadata-using-lambda-and-mediainfo/
https://concrete5.co.jp/blog/creating-video-thumbnails-aws-lambda-your-s3-bucket

しかし以下のようなエラーが発生しました。

error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory

同エラーについて調べますと、このエラーに対応したmediainfoのアップデートがあるようでしたが、そちらのバージョン(v20.09)でコンパイルしたバイナリファイルを利用しても同エラーは解消されませんでした。
https://github.com/awslabs/video-on-demand-on-aws/issues/34

バイナリファイルのコンパイル時のログを確認すると、以下のような警告が出ていることに気付きました。

configure: WARNING: unrecognized options: --with-libcurl

同警告を検索すると、同様の事象に直面している人のコメントが多く見つかりました。
https://github.com/MediaArea/MediaInfo/issues/357
こちらの議論を参考に、アップされていたDockerfileの手順を参考にコマンドを叩いたり、perl-coreやzlib-develを入れたり、libcurl.so.4を色んなところに配置した上でコンパイルするなど試みたのですが、上記警告は解消されませんでした。

その後、上記ページに記載されていることはおそらく全て試しましたが、私のケースでは解決しませんでした。
現在、完全に手がかりが途絶えてしまったため、コンパイルのシェルなどのソースコードを読んで解決策を模索しております。
configureファイルの処理内容を確認すると確かに--with-libcurlというオプションは受け付けなさそうでしたので、ac_user_optsというリストにwith_libcurlを追加して無理やり受け付けるようにしてみたり色々やってますが、全く解消する気配がありません...

完全に行き詰まっております。
ほんの少しのアドバイスでも非常に助かります。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2021/07/11 13:54

コンパイルはどのような環境で行いましたか? Lambdaの動作環境(Amazon Linux2)と同じ環境でコンパイルしないとちゃんと動いてくれないことがままあります。 Lambdaの動作環境については下記をご参照ください。 https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html ちなみに、Lambdaの動作環境のコンテナイメージは公開されているのでそちらを使ってコンパイルすると確実です。 https://hub.docker.com/r/amazon/aws-lambda-nodejs
momoth

2021/07/11 14:08

アドバイスありがとうございます! コンパイルはAmazon Linux2で行ってはいますが、クイックスタートのAMIから作成したものでしたので、ご紹介いただいたイメージの方から構築して試してみます。
momoth

2021/07/12 06:37

ご紹介いただいたイメージでコンパイルしても同エラーは解消しませんでした。 ただ、その過程で--with-libcurlオプションが判別できていない旨の警告が出ていることに気付きました。 しかし、やはりこちらの警告が解消できず、結果として元のエラーも解消できておりません...。 引き続き、何か情報を頂けますと助かります。
guest

回答1

0

自己解決

こちら自己解決しました。

バイナリファイルのコンパイル自体はもともとできていたようで、警告は特に関係ありませんでした。
バイナリファイル自体を直接実行することでわかりました。

そのため、mediainfo-wrapperを使わず、mediainfoのバイナリをexecSyncで実行するようにすることでjson型でデータ取得できました。

以下はサンプルコードです。

Node.js

1const target = "{{動画ファイルを参照できるS3のURL}}"; 2const command = './mediainfo --Output=JSON "' + target + '"'; 3const response = JSON.parse(execSync(command));

投稿2021/07/15 01:21

momoth

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問