JSエラーのためビデオファイルのアップロードに失敗しました

Discourse は一般的に動画のアップロードには向いていないことは承知していますが、解決策を見つけるためのヒントをいただければ幸いです。

一部の動画ファイルは、「アップロード中 100%」で無期限に停止してしまいます。ユーザーに残された選択肢は、ページを更新するか、投稿を閉じることだけです。どれだけ待っても、ファイルサイズが小さくても、この状態は変わりません。

ファイルがスタックしている検証またはチェックを行っているコードがあることは明らかですが、Ruby On Rails / Discourse の開発にはまだ慣れていないため、ファイルがどこでスタックしているのか、その経路をまだ特定できていません。しかし、問題なくファイルをアップロードする方法を見つけました。ただし、あまりユーザーフレンドリーな方法ではありません。

同じファイルを、ファイル名の拡張子を .mp4 から .pdf に変更してアップロードすると、問題なくアップロードされ、実際には適切な拡張子で追加されます。

例:
PXL_12234563421LS.mp4 をアップロードするとファイルが無期限にスタックしますが、PXL_12234563421LS.pdf としてアップロードすると、アップロードは完了し、投稿に適切な動画マークダウンが追加されます。

![PXL_20200811_12234563421LS|video](upload://sxVpgLrc3L2MukaD5eS5QOgPY7j.mp4)

この経路に詳しい方はいらっしゃいますか?何が起こっているのか説明していただけますか?また、どこかでこれを無効にすることはできますか?問題の箇所を特定し、ガイダンスを得てバグを報告することも可能です。

ありがとうございます。

「いいね!」 4

インターネットの問題かもしれません。
しかし、通常はページをリロードすると問題が解決し、動画をアップロードできるようになりますか?

ご返信ありがとうございます。しかし、これはインターネットの問題ではありません。どのコンピューター、どのブラウザーでも発生します。ディスコースインスタンスが実行されているのと同じネットワークからアップロードしているので、インターネットには接続していません。

拡張子を変更することでアップロードが成功するというのは、元のファイルがまだ「アップロード中」であるのと同じ投稿でさえ、ビデオファイルに対してディスコースで実行されているコードが特定のファイルで無期限に詰まっていることを明確に示しています。

「いいね!」 1

コンソールにエラーが表示されますか?

動画を try.discourse.org にアップロードしていただけますか?

「いいね!」 1

ファイルのサイズはどのくらいですか?最大ファイルサイズは30MBだと思います。

モバイル経由かPC経由かもお聞きしたいのですが、以下でコンピューターについて言及されていますね。

try.discourse.org でこれを試しましたが、.mp4 ファイルは許可されていません。元の投稿に記載すべきでした。申し訳ありません。

また、これは 8 メガバイトの小さなファイルです。ファイル サイズは関係ないことがわかりました。

コンソールでエラーが発生するかどうかについてですが、ログを見ており、アップロードが開始され、そのイベントに関する他の何も表示されないことがわかります。コンソールとして参照している、確認すべき別の場所はありますか?

モバイルと PC の両方で同じ問題が表示されます。これは間違いなく生成されたファイルに固有の問題であり、ffmpeg でファイルを再エンコードしても問題は解決しません。また、Chrome と Firefox の両方で試しましたが、どちらも同じ問題が表示されます。

明確にするために、ファイル名を「movie.mp4」から「movie.pdf」に変更するだけで、問題なくアップロードできるようになります。「アップロード中 100%」でスタックしなくなります。

ファイルサイズは 8MB です。この問題が表示される映画ファイルのサイズは任意です。アップロード中にファイルが通過するパスを特定および追跡できれば、どこでスタックしているかを絞り込むことができるでしょう。

追加したので、今試してください。

ブラウザのコンソール、またはサーバーログ(/logs)に何か表示されますか?

はい、そこで再現できました。もう少し小さい例を見つける必要がありましたが、たくさんあります :slight_smile:

最初の画像は、拡張子 .mp4 のファイルをアップロードしているところを示しており、どれだけ待っても「アップロード中 100%」で止まってしまいます。スクリーンショットを撮る前に 5 分間待ちました。

try.discourse.org で、ユーザー: testdub として、投稿を開いたまま「アップロード中 100%」の状態にしておきました。そちらで役立つかもしれません。返信があるまで開いたままにしておきます。

PDF は許可されていませんが、TXT は許可されているので、ファイルを .txt にリネームしたところ、アップロードが完了しました。

同じファイルを .txt 拡張子でアップロードすると、数秒で完了し、ビデオ Markdown として表示されます。

念のため、アップロードしたファイルの md5 も以下に示します。

62b865b29c47acbce859c27246c0d7c3  PXL_20240812_174504425.LS.mp4
62b865b29c47acbce859c27246c0d7c3  PXL_20240812_174504425.LS.txt

ブラウザコンソールでそのファイルをアップロードしようとしたときに表示されるエラーは次のとおりです。

image

Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
    at composer-video-thumbnail-uppy.js:80:31

8998f3f964284f7e0ab4007836dbddd736757617.mp4.gz (3.3 MB)

これはクライアント側の問題なので、修正が必要です。

「いいね!」 2

はい、ありがとうございます、マイケル!

私も同様の返信をしようとしていました。


Firefoxのコンソールを見ると、次のような表示があります。

Media resource blob:devsite.net could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)

Chromeでは、何が起こっているのか、より良いと思われる別のエラーが表示されます。

Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
    at https://devsite.net/assets/chunk.d340137c92abde91812c.d41d8cd9.js:74:3649
「いいね!」 3

私も同様の問題をWordPressで抱えていました。そしてMP4が壊れてしまいました。短いMP4は問題なくアップロードできましたが、もしそれが機能するのであれば、MP4自体、またはそれを作成したプロセスで確認すべきでしょうか?

解決できましたか?

修正を検討している担当者がおります。はい。

「いいね!」 3

この問題の修正がアップされました。

「いいね!」 3

ブレイクさん、迅速な対応ありがとうございます!テストしたところ、Chromeでは問題なく動作しましたが、Firefoxでは「アップロード中 100%」で止まってしまい、コンソールに以下のエラーが表示されました。

Media resource blob:https://devsite.net/a2deff66-3376-4c6e-9cca-f18275c312ce could not be decoded.
Media resource blob:https://devsite.net/a2deff66-3376-4c6e-9cca-f18275c312ce could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)

Firefox 129.0.2 でテストしました。

他に提供できる情報があればお知らせください。

「いいね!」 1

この修正でうまくいくはずです。この場合、動画のサムネイルは作成されませんが、今回は実際にアップロードできなくなることはありません。

「いいね!」 3

ありがとうございます。Firefoxで正常にアップロードできました。迅速な対応とフォローアップに大変感謝いたします。

「いいね!」 2

このトピックは、最後の返信から3日後に自動的にクローズされました。新しい返信は許可されていません。