いつもお世話になっております。
表題の内容について行き詰まっておりまして、ご教授いただきたく質問させていただきます。
やりたいこと
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を追加して無理やり受け付けるようにしてみたり色々やってますが、全く解消する気配がありません...
完全に行き詰まっております。
ほんの少しのアドバイスでも非常に助かります。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー