HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0514
まっきーAVIをエクスポートするプログラムについて7未解決


まっきー

リンク

2019/5/14(Tue) 17:02:49|NO.87342

とある事情があってAVI(音声あり)制作ソフトを作っているのですが
hspcvでは音声がないうえに0xc10100beというエラーが出てしまいます。

どなたか解決法ご存じないでしょうか?



この記事に返信する


GENKI

リンク

2019/5/14(Tue) 22:34:25|NO.87347

検索してみると偶然にも「教えて!goo」でほとんど同じ内容の質問が!
AVIについて教えてください
https://oshiete.goo.ne.jp/qa/10942947.html
でも解決はしなかったようですね。


HSP3付属サンプルmakeavi.hspでコーデックを変えて試して見たのですが、手元の環境ではエラーは再現できませんでした。

> hspcvでは音声がないうえに0xc10100beというエラーが出てしまいます。

調べてみると、このエラーはaviファイルに異常を検出すると出るようです。
0xC10100BE のエラーコードが発生した場合の対処
https://pasokon360.com/0xc10100be.html
適切なコーデックが入っていないために正常と判断できていないだけかもしれません。
aviファイルを出力する直前に出てくるダイアログで、圧縮プログラム(コーデック)を別のものに変えてみるとうまく問題を回避できるかもしれません。「全フレーム(未圧縮)」が確実かも。


> hspcvでは音声がないうえに

今現在HSP3で手軽に音声付きAVIファイルを作成する方法はなさそうです。
この掲示板の過去ログを探すとVFWなど実装できる情報は出てきますが、ちょっと難易度が高い方法しか見つからず、また手軽に使えるような形に整備されていません。ffmpegをコマンドラインから…というのも少し難易度高いですね。
私も昔、AVIファイルを出力するツールを作った事があるのですが、その際は「音声はAviUtlなどのツールを使って後から結合してね」とユーザーに丸投げしました。使ってくれた方の99%ぐらいはちゃんと自分で音声付けてアップしてましたね。



まっきー

リンク

2019/5/16(Thu) 20:29:10|NO.87364

URLは私が質問したものです。紛らわしいことしてごめんなさい。

> 今現在HSP3で手軽に音声付きAVIファイルを作成する方法はなさそうです。
ファイルをpokeとかで作るしかないのでしょうか?



GENKI

リンク

2019/5/17(Fri) 22:54:35|NO.87376

なんとなく、そうかなとは…。

> ファイルをpokeとかで作るしかないのでしょうか?
これは流石に最終手段かなと思っています。
とりあえず思いつく現実的アイデアとしては、難易度が低そうなものから順に…

・ffmpegをインストールして、HSP3から exec か pipeexec 命令を使って実行する。
・VFWのAPIを使う。
・peek/pokeで頑張る。

という感じでしょうか。

> ffmpeg
自作したツールを配布する際に、ユーザーに別途ffmpegをインストールしてもらう作業が発生します。
導入は「つんでれんこ」を使うと簡単です。

> VFW
HSPでのAPI関数の使い方の習得。
API関数のマニュアルの探し方・読み方の習得。
AVIファイルのファイルフォーマットの概要。
このあたりの知識が必要になります。
この掲示板の過去ログを VFW とか Video for Windows とかのキーワードで探すといくつかスレが見つかると思います。

> peek/poke
AVIはRIFFフォーマットです。RIFFフォーマットを読み書きするモジュールは昔作りました。(現在公開中)
しかしAVIファイルのファイルフォーマットについてそれなりに深い知識が必要になると思います。…と言ってもよく知らないので調べたら意外とあっさり解決とかあるかもしれませんが。
バイナリデータを直接操作してファイルを出力する場合は、フォーマットをきちんと調査してから作らないと、突然壊れたファイル吐き出す事もありえるので調査は必須です。こういう心配があるので、ツールや関数があるならできるだけそっちを使ったほうが楽で安心できます。なので最終手段です。

音声データをAVIに結合できるHSP3のモジュールかプラグインが配布されていれば一番いいのですが…。他にいい方法ないのかな。



まっきー

リンク

2019/5/18(Sat) 20:20:37|NO.87394

インストールさせるのは面倒ですし、
様々な事情があるので前者は避けていきたいです

そうすると中者(?)か後者になりますね

> RIFFフォーマットを読み書きするモジュールは昔作りました。(現在公開中)
URLとかおしえてくれるとありがたいです!



GENKI

リンク

2019/5/19(Sun) 00:49:32|NO.87397

mod_riffモジュール
https://mclab.uunyan.com/dl/dl39.htm



まっきー

リンク

2019/5/19(Sun) 03:30:19|NO.87398

URLありがとうございます!
いただいたソースと以下のURLを参考にやっていきたいと思います:
https://makiuchi-d.github.io/mksoft/doc/avifileformat.html

「8.2.1 ビデオ」のところに以下のような記述があると思いますが
> ビデオストリームでは比較的易しい:それぞれのビデオフレームが一つのチャンクになる.

どういうことでしょうか?
私の解釈が正しければbmpsaveなどで保存したpngファイルのヘッダを取り除いたものを
そのままチャンクに格納すればいいのでしょうか?



GENKI

リンク

2019/5/19(Sun) 23:03:51|NO.87411

すみません。私もAVIファイルフォーマットはぜんぜん詳しくないですが今読んだところの解釈で説明します。

> ビデオストリームでは比較的易しい:それぞれのビデオフレームが一つのチャンクになる.

ビデオの場合は、
フレームの数=チャンクの数
となると書いてあります。「8.2.3 例題」の例を詳しく見ると…
ビデオ:3時間,25fps→ビデオ:270,000チャンク
3時間*60*60 * 25fps = 270000フレーム = 270000チャンク
つまり再生時間とフレームレートからビデオ部分のチャンク数は算出できます。という事が書かれているようです。

これに音声部分のチャンク数と合計すると、AVIファイルの動画・音声部分のチャンク数が事前に把握できます。
「8.1 概要」に各チャンクは16,24または32バイトのオーバーヘッドを生じるとあるので、738,750チャンクなら 5910000〜23640000バイト のオーバーヘッドが予想されます。
738750チャンク * 8バイト = 5910000 バイト
738750チャンク * 16バイト = 11820000 バイト
738750チャンク * 32バイト = 23640000 バイト

というのが8章の説明です。


> 私の解釈が正しければbmpsaveなどで保存したpngファイルのヘッダを取り除いたものを

bmpsaveではpng形式ファイルは作れないという話はひとまず置いといて…。
ここはそういう内容の章ではないようですね。そもそも各フレームの画像データのフォーマットは使用するコーデックによって違うでしょうし。


> インストールさせるのは面倒ですし、

そうですか…つんでれんこのインストーラーとしての性能は神がかってると思うんですが。
https://aviutl.info/tunndereko/#toc4
ffmpegもコマンドラインから行けるのでHSP3からの利用も簡単。
https://qiita.com/niusounds/items/f69a4438f52fbf81f0bd



ONION software Copyright 1997-2021(c) All rights reserved.