動画の再アップロード作業が想像以上に大変な予感

以前の投稿でゲーム制作実況の動画をひとつのアカウントにまとめるために再アップロードするということを書きました。当初はすでに作ってあった動画ファイルをアップロードするだけなのですぐに終わるかなと思っていたのですが、予想以上に大変な作業になることが判明してしまいました。

頻繁に動画を上げたり削除したりしていたので、コメント入れてくださった方には申し訳ありませんでした。今回からは1動画ずつ確認してアップロードしていきます。

すべてのアップロードした動画が再エンコードされる

これは前回の投稿でも書きましたが、以前の仕様では 100MB 未満の MP4 ファイルをアップロードした場合、ニコニコ動画のほうで再エンコードされずに投稿できていたので、ローカルで動画のクォリティを確認すれば大丈夫でした。しかし、今回の仕様変更を知らずに29ファイルアップロードした後に動画を確認したら、再エンコードのせいでとても見れるようなレベルではない動画になってしまったため、アップロードした動画をすべて削除しました。

仕方ないので、新仕様のフォーマットに合わせて動画をすべて再作成することにしました。ただ、元データはあるので、Aviutl をカスタマイズし編集ファイルを開いて外部出力すれば割とすぐにいけると思ってました。

編集データの値がおかしくなってた

早速動画ファイルを生成しなおして6ファイルほどアップロードした後に動画を確認してみたら、恐ろしいほどに音ずれが発生していました。動画にもよりますが、おそらく数秒ぐらいはずれていたと思います。ほかの動画を確認してもやはりずれていたのでアップロードした動画をすべて削除いたしました。

原因はわかっていないのですが、Aviutl で過去に編集したデータを開いたところ、動画と音声の再生位置がずれていました。動画によっては動画や音声が分割されて編集されているので、結局1から確認してずれていないかすべて再確認する必要性が出てきました。当初は Ver 0.99 を使っており、今は Ver 1.00 を使っているので、もしかしたら Aviutl をバージョンアップしたせいなのかもしれません。ただ、どの動画までずれているかはまだ確認していないので、原因ははっきりとはしていません。

ということで、現在動画をひとつひとつ確認しながら作り直しているので、すべてアップロードしなおすには結構時間がかかると思います。ただその代わり、現行のニコニコ動画に仕様に合わせるのでファイルサイズが大きくなる分、画質が以前よりもよくなるので見やすくなるかと思います。一応 #30 の動画もすでに作成が完了していますので、全動画をアップロードし終わるまではもうしばらくお待ちください。


ニコニコ動画に動画をアップロードしたときのエンコードの仕様が変わった?

確か以前まで動画ファイルのサイズが 40MB だか 100MB までの動画はアップロードしたときに再エンコードされずにアップロードできていたので、アップロード後の画質が落ちることはなかったと思うのですが、先ほど前に上げた動画を再アップロードしてみたところ、とてつもなく画質が悪くなってしまいました。

どうも 12/8 の仕様変更で挙動が変わってしまったらしく、アップロードした動画はすべて再エンコードされてしまうようです (下記リンク先参照)。ゲーム制作実況の動画はすべて 40MB で統一していたので、そのまま再アップロードするとかなり見れたもんじゃない画質になってしまいました。

とりあえず動画の元データはまだ残っているので、アップロード用の動画を再作成してみて、いい感じにアップロードできるかどうか試してみたいと思います。結構パワー使いそうだ…。


[ASP.NET MVC] Release ビルドでコントローラークラスが消える…?

実はさっきまで sorceryforce.net のルートページを開こうとしてもエラーになっていました。原因ははっきりとはしていないのですが、HomeController クラスで何らかの処理をさせようとすると NullRefenenceException で落ちるというエラーが発生していました。単純に Index メソッド内で「int a = 0;」とさせるだけでも Null 参照で落ちます。おそらく HomeController のインスタンス自体が null になっているような感じでした。(C++言語なんかだと自分自身のインスタンスを delete するなんて裏ワザもあったりするんですけどね。インスタンス要素にアクセスしなければ処理は継続できるという)

私が想定する原因としては Release ビルドを行う際にコードの最適化が実行されるのですが、HomeController クラスに処理を入れた場合でも、HomeController クラスは実際にはどこからも参照されていないクラスなので最適化した際にごっそり削られたのではないかと思っています。ためしに「コードの最適化」のチェックを外して Web サイトにアップロードすると問題なく動作します。なので今は適当なクラスで HomeController クラスのインスタンスを生成するコードを入れておいてビルドするようにしています。こうするとコードの最適化が実行されても HomeController クラスは正常に動作します。でも他のコントローラークラスは正常に動作するんですよね…。


HTML5でファイルを複数選択してアップロードする方法

HTML5 では input タグの属性に「multiple="multiple"」を追加するだけで、ファイル選択時に複数のファイルを選択できるようになります。

<input id="fileUpload"  name="fileUpload" type="file" multiple="multiple" />

HTML 4.01 の時は、複数のファイルをアップロードするのに、対応する数の input タグを配置しなければいけませんでした。

ただし、multiple 属性は Web ブラウザが対応していないと効果がありません。今のところ Google Chrome, Safari が対応されているようです。

 

ちなみに、ASP.NET で multiple 属性による複数ファイルがアップロードされた場合、Request.Files に選択されたファイルの数だけ HttpFileCollectionBase が格納されるようです。