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

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

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

2回答

3129閲覧

助けてください。昨日まで使えてたFFmpegJSライブラリが急に使えなくなった。

fuyukixxx

総合スコア26

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

1グッド

0クリップ

投稿2021/07/28 10:48

編集2021/07/28 12:37

タイトルの通り昨日まで本番環境で問題なく機能してたライブラリが使えなくなりました。
調べたらhttps://githubmemory.com/repo/ffmpegwasm/ffmpeg.wasm/issues/231のトラブルとおそらく一緒でグーグルの更新によって機能しなくなっている感じです。
ef8f87eb-2d66-4bad-9f9e-d11c8e8a0401:22 Uncaught (in promise) ReferenceError: SharedArrayBuffer is not definedとライブラリからエラーがでます。
解決策が記述してあるところで翻訳しても意味がわかりませんでした。申し訳ないです。。

ffmpegライブラリからの例外エラーとして

fmpeg.js

1requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),h&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)

他に気になる点として、googleのISSUESからメッセージがありました。

SharedArrayBuffer usage is restricted to cross-origin isolated sites SharedArrayBuffers (SABs) can be used to construct high-resolution timers. High-resolution timers simplify Spectre attacks on cross-origin resources. To mitigate security risks across browsers, SharedArrayBuffers are gated behind cross-origin isolated contexts starting with Chrome 92 (July 2021). To continue using SharedArrayBuffers, please ensure that this page opts-into cross-origin isolation by setting Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy appropriately. Note that for each iframe, only the first issue is reported for performance reasons. 1 violation Source Location Trigger Status ffmpeg-core.js:22 Instantiation warning Learn more: Enabling SharedArrayBuffer

就活用のポートフォリオとして出そうとしてたもので急なエラーで焦っています。ご助力のほどよろしくお願いします。

Waki285👍を押しています

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

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

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

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

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

odataiki

2021/07/28 12:42

解決策が記述してあるところ のURLを質問文に追加してみてください
guest

回答2

0

自己解決

PHP

1コード 2<?php?> 3header('Cross-Origin-Opener-Policy: same-origin'); 4header('Cross-Origin-Embedder-Policy: require-corp'); 5<?php>

追加したらFFmpegが動作するようになりましたが、AWS S3に繋がらなくなりました。
また解決していきたいと思います。
FFmpegの件サポートありがとうございました。また機会がありましたらご助力の方よろしくお願いします。

投稿2021/07/31 07:34

fuyukixxx

総合スコア26

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

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

0

https://github.com/ffmpegwasm/ffmpeg.wasm に記載があるんですが

SharedArrayBuffer is only available to pages that are cross-origin isolated. So you need to host your own server with Cross-Origin-Embedder-Policy: require-corp and Cross-Origin-Opener-Policy: same-origin headers to use ffmpeg.wasm.

つまりサイトは完全に独立している必要があります。

サーバーの設定が必要だったかな。
nginxの場合は https://qiita.com/tukiyo3/items/8124d5066737debdc6bb を参考にするとイイよ。
apacheの場合はドキュメントルートのところに

<Directory "/var/www/html"> Header set Access-Control-Allow-Origin "http://localhost:8080" Header set Cross-Origin-Embedder-Policy: require-corp Header set Cross-Origin-Opener-Policy: same-origin </Directory>

こんな感じで設定してあげるとイイよ。

firebaseでホスティングしている場合は https://firebase.google.com/docs/hosting/full-config?hl=ja#headers ここを見てね。

あと、使用しているwasmと関連ファイルをダウンロードして配置する必要がある。

  • ffmpeg.min.js
  • ffmpeg-core.js
  • ffmpeg-core.wasm
  • ffmpeg-core.worker.js

wasmを使用している箇所で

<script src="ffmpeg.min.js"></script>

のようにパスを設定し

const ffmpeg = createFFmpeg({ corePath: 'ffmpeg-core.js', log: true });

のようにパスを指定してffmpegを初期化してください。

投稿2021/07/30 00:50

SakuraSymphony

総合スコア10

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

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

fuyukixxx

2021/07/30 04:12

丁寧なご回答ありがとうございます。本番環境をherokuでローカルをMAMPで作っています。 わからない点で教えてもらいたいのが、herokuはおそらくapacheなのでどこに下のコードを貼ればよいですか? <Directory "/var/www/html"> Header set Access-Control-Allow-Origin "http://localhost:8080" Header set Cross-Origin-Embedder-Policy: require-corp Header set Cross-Origin-Opener-Policy: same-origin </Directory>
SakuraSymphony

2021/07/30 04:17

ファイルとしては ``` /etc/httpd/conf/httpd.conf ``` になります。管理者権限でないと編集できないので注意してください。
fuyukixxx

2021/07/30 04:46

/etc/httpd/conf/httpd.confコマンドはターミナルで行う感じですか? apacheがあまり理解してなくてすみません。 それとhttps://skill-up-engineering.com/2020/04/29/heroku%E3%81%A7%E3%81%AEhttpd-conf%E8%A8%AD%E5%AE%9A/ みたいに編集するにはProcfileファイルをいじる必要があるのですか?
SakuraSymphony

2021/07/30 04:50

サーバー系不慣れなんですね。了解です。 ターミナル(TeraTermなど)でサーバーにログインし、管理者権限ユーザーに切り替えます。 vi コマンドで上記のhttpd.conf ファイルを編集してapacheの再起動を行います。 このあたりのことはググれば出てくると思いますので、頑張ってください。
fuyukixxx

2021/07/30 05:19

わかりました。もう少し調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問