全般的日本語フォーラム

Moodle2.4.x - 日本語ファイル名の場合は動画が再生できない

 
画像 Hiroshi Matsuda
Moodle2.4.x - 日本語ファイル名の場合は動画が再生できない
 

自分たちが管理するMoodleサイトにおいて,この度,Moodle2.2.xから2.4.xへアップデートしました。

その中で,動画ファイル名(.flvなど)に日本語文字を含む場合,flowplayerで正しく再生できない不具合に遭遇しています。Moodle2.2.xでは問題なかったので,2.4.xになってからデグレードしているようです。

Moodle Trackerにも以下のとおり報告がありました。
  [MDL-37670] Flowplayer doesn't accept non ascii characters
 
このへんの情報をもとにして,Moodleソースの ./lib/flowplayer/flowplayer-3.2.14.swf などを最新版の flowplayer-3.2.16.swf などに差し替えてみましたが,変わらず再生できませんでした。逆に,日本語ファイル名でも正しく再生できていたMoodle2.2.xのflowplayer-3.2.7.swfを持ってきて,ファイルを置き換えてみたりしましたがNGでした。

ブラウザ環境としては,Firefox, IE, Operaでは再生できず,現在の状態(2.4.3)でもChromeは問題なく再生できています。本件について情報をお持ちでしたら,情報交換して頂ければと思います。

# また可能あれば [MDL-32670] に vote してくだされば,もしかしたら何かしらの進展があるのかもしれません。

 
評点平均:有益(Useful) (1)
1997年の頃の写真です
Re: Moodle2.4.x - 日本語ファイル名の場合は動画が再生できない
Translators

Voteしました.

この春休み中に私のところでもMoodle2.4のサイトを新たに立ち上げます.余裕ができましたら原因と対策を考えてみます.

画像 udagawa mitsuru
Re: Moodle2.4.x - 日本語ファイル名の場合は動画が再生できない
Developers

試してみたところ、Moodle2.3.xでも同様でした。

どうやらflowplayerに渡しているURLにマルチバイト文字が含まれるのが原因のようでしたので、mod/resource/locallib.php の70行目付近、function resource_display_embed() 中の
$path = '/'.$context->id.'/mod_resource/content/'.$resource->revision.$file->get_filepath().$file->get_filename();

$path = '/'.$context->id.'/mod_resource/content/'.$resource->revision.$file->get_filepath().rawurlencode($file->get_filename());
に書き換えてみたところ上手く再生されるようになりました。

別のところで問題が出る可能性も否定できませんので、要検証です。
ご参考までに。

 
評点平均:有益(Useful) (3)
画像 TEAM 4
Re: Moodle2.4.x - 日本語ファイル名の場合は動画が再生できない
 

Moodle 2.4.3 に udagawa様に報告頂いた設定を反映し、動作確認をしてみました。

chromeでは、変化なく日本語ファイルを再生できましたが、
IE9 と FireFox(ver 19.0.2)では再生できませんでした。

なお、IE9とFireFoxでコースのトピックに日本語ファイルを置いて再生したとき、
flowplayer上で
 "200 Stream not found, NetStream.Play.StreamNotFound, clip: '[Clip] ~"
のエラーが表示されます。

ソースを追求し、エラーの原因と対策方法がないか探ってみようと思います。

 
評点平均:有益(Useful) (1)
画像 udagawa mitsuru
Re: Moodle2.4.x - 日本語ファイル名の場合は動画が再生できない
Developers

検証に使ったMoodle2.3環境では問題なかったと思うのですが、確かにMoodle2.4.3ではflowplayerでエラーになって再生できませんでした。

確認したところ、lib/javascript-static.js の1903行目付近に

flowplayer(video.id, src, {
    plugins: {controls: controls},
        clip: {
            urlEncoding: true,
            url: video.fileurl, autoPlay: false, autoBuffering: true, scaling: 'fit', mvideo: video,
            onMetaData: function(clip) {

と赤字部分を加えれば良いみたいです。
(参考リンク: https://github.com/flowplayer/flash/issues/59#issuecomment-11333906

また、この部分を書き換えると、urlencode()無しでも大丈夫みたいです。。。前の書き換えはおそらく不要だったということで。書き換え後はMoodleのサイト管理 > 開発 > キャッシュのクリアが必須です。

一応念のため、IE9とFirefox20、Chrome26でflvで動作を確認したしました。

 
評点平均:有益(Useful) (3)
画像 Hiroshi Matsuda
Re: Moodle2.4.x - 日本語ファイル名の場合は動画が再生できない
 

おっしゃるとおり,Moodle2.4.3の場合は rawurlencode の追加対応で本問題(flowplayerで日本語ファイルを再生できない)は解消しませんでしたが、もう一方の "urlEncoding: true," の対応(だけ)で本問題は解消しました。

(確認環境:IE8, IE10, Firefox20, Chrome26, Opera12)

どうも有難うございました。大変助かりました。合わせて [MDL-32670] の方も更新してくださり有難うございます。このままソースに取り込んでくれればいいですね。