C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: AVIwriterで動画圧縮する際のコーデックの問題


(過去ログ 157 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■91398 / inTopicNo.1)  AVIwriterで動画圧縮する際のコーデックの問題
  
□投稿者/ tosh (1回)-(2019/06/20(Thu) 18:33:55)

分類:[C#] 

お世話になります。

AVIWriterを使い、静止画を1秒ごとにキャプチャして動画にするプログラムを作成しています。

コーデックに「MSVC」を指定し、動画と同じサイズを指定してOpenし、タイマーイベントで
静止画をbitmapで取得してAVIWriterオブジェクトにAddFrameして動画に仕立てているのですが、
出力されたaviファイルはWindows Media PlayerやVLCでは再生できるものの
「映画&テレビ」アプリではコーデックエラーのため再生できません。

それだけなら「映画&テレビ」アプリがMSVCに対応していないだけと思うのですが、
AVIWriterのコーデックをMSVC以外に設定すると「Failed creating compressed stream」というエラーになってしまいます。

この問題について検索しても、ほとんど有用な情報が得られませんでした。
解決方法について教えて頂けると有難いです。

以下にソースの一部を記載します。


<設定部分>
// コーデックを指定
aviWriter.Codec = "MSVC";

// フレームレート設定
aviWriter.FrameRate = 1;

// aviストリームを生成
aviWriter.Open(fileName, 1280, 720);


<録画部分>
// カメラ画像をビットマップに変換
Bitmap bitmap = (Bitmap)axipropsapiCtrl1.GetBitmapImage();

// ビットマップを動画フレームに追加
aviWriter.AddFrame(bitmap);

※追加するbitmapのサイズが、aviWriter.Open時の設定値と同じであることは確認済み。

よろしくお願い致します。
引用返信 編集キー/
■91399 / inTopicNo.2)  Re[1]: AVIwriterで動画圧縮する際のコーデックの問題
□投稿者/ kiku (96回)-(2019/06/21(Fri) 08:51:44)
No91398 (tosh さん) に返信
> それだけなら「映画&テレビ」アプリがMSVCに対応していないだけと思うのですが、
> AVIWriterのコーデックをMSVC以外に設定すると「Failed creating compressed stream」というエラーになってしまいます。

動画は扱ったことがなく素人である前提とさせてください。

動画を再生する側でエラーになっているのか?
動画を作成する側でエラーにばっているのか?
この点が良くわからなかったです。

動画を作成する側でエラーになっているのでしたら、
指定した動画コーデックがインストールされていないのでは
と考えました。
こちらは確認されているのでしょうか?

確認方法で調べたら下記がヒットしました。
https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=020351


引用返信 編集キー/
■91400 / inTopicNo.3)  Re[2]: AVIwriterで動画圧縮する際のコーデックの問題
□投稿者/ tosh (2回)-(2019/06/21(Fri) 10:19:58)
kiku様
回答ありがとうございます。

>動画を再生する側でエラーになっているのか?
>動画を作成する側でエラーになっているのか?

拙い説明で申し訳ないのですが、「両方でエラーになっている」というのが現状です。

コーデック「MSCV」が入っているのは、ご紹介頂いた方法で事前に確認済みですが、
MSCVを指定して作成した動画ファイルがWindows Media PlayerやVLCでは再生できるものの、
「映画&テレビ」アプリではコーデックエラーになるというのが「再生側のエラー」です。

MSCV以外のコーデックを指定して作成すると、作成時に「Failed creating compressed stream」
という例外になるのが「作成側のエラー」です。
引用返信 編集キー/
■91401 / inTopicNo.4)  Re[2]: AVIwriterで動画圧縮する際のコーデックの問題
□投稿者/ Hongliang (828回)-(2019/06/21(Fri) 10:51:25)
2019/06/21(Fri) 10:53:39 編集(投稿者)

AVIWriterというのは、AForge.Video.VFW.AVIWriterのことでいいでしょうか。
これのこととすると、これはWindowsのVideo for Windows (VfW) というマルチメディアAPIのラッパになっています。
VfWはすごく古いAPIであり、過去にDirect Showに譲って互換性のためにWindowsに残されている状態です(Direct Showさえもすでに後継APIに移行しました)。

そういう状況なので、標準でサポートされているコーデックはあんまりありませんし、古いコーデックばかりなので新しいプレイヤーアプリではサポートされないものもあるでしょう。
一応ユーザがコーデックをインストールすることもできるはずですが、今更VfWをサポートするコーデックもあんまりないんじゃなかな(調べてないですけど)。

ちなみにAVISaveOptions関数を使えばVfWが使用できるコーデックを調べられますが、Windows 7でもWindows 10 1809でも、以下ぐらいでした。
Microsoft RLE (←8bitカラーまでの対応?だからかAVIWriterで例外)
Microsoft Video 1 [MSVC]
Intel IYUV コーデック [IYUV]
Cinepak Codec by Radius [CVID]
全フレーム(未圧縮) [DIB ] (←4文字目は空白文字)

例えばOpenCvSharpのVideoWriterを使えば、バックエンドにffmpegを使ってエンコードできるので、コーデックに色々使えます。
引用返信 編集キー/
■91403 / inTopicNo.5)  Re[3]: AVIwriterで動画圧縮する際のコーデックの問題
□投稿者/ tosh (5回)-(2019/06/21(Fri) 11:54:01)
Hongliang様
回答ありがとうございます。

AVIWriterの動画が、より古いプレイヤーでしか再生できないのは、
そもそも古いAPIだからなんですね・・・勉強になりました。

今日になって、職場の同僚からも「OpenCVSharpを使ってみたら?」と言われました。
今後はこちらを使ってみようと思いますので、解決済みとします。
ありがとうございました。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -