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

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

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

Re[7]: 動画・音声の切り出しシステム作成方法


(過去ログ 42 を表示中)

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

■21296 / inTopicNo.1)  動画・音声の切り出しシステム作成方法
  
□投稿者/ 量産型小市民 (1回)-(2008/06/30(Mon) 13:43:26)

分類:[C#] 

初めて投稿させていただきます。

C#で、時刻を指定してavi動画ファイル・およびwav音声ファイルを切り出すメソッドの作成方法がわからず、質問させていただきました。具体的には、

・引数
  ・ベースとなるavi(音声の場合はwav)ファイル、もしくはそれへのパス
・切り出し開始時刻
  ・切り出し終了時刻

・返り値:切り出しを行なった後のavi(音声の場合はwav)ファイル、もしくはそれへのパス

というメソッドを作りたいのです。
動画編集に関しては情報が非常に少なく困っています。よろしくお願いします。

ちなみに、使用環境は以下のようになっています。
・言語:C#
・利用環境:VisualStudio2005 Ver8.0
引用返信 編集キー/
■21297 / inTopicNo.2)  Re[1]: 動画・音声の切り出しシステム作成方法
□投稿者/ ネタ好き (505回)-(2008/06/30(Mon) 13:47:45)
No21296 (量産型小市民 さん) に返信
その手の資料を探すのならばC言語がお勧めです。
引用返信 編集キー/
■21299 / inTopicNo.3)  Re[1]: 動画・音声の切り出しシステム作成方法
□投稿者/ 渋木宏明(ひどり) (803回)-(2008/06/30(Mon) 14:15:56)
渋木宏明(ひどり) さんの Web サイト
.NET の標準ライブラリには、その手の機能は含まれていません。

マルチメディア系の API (Video for Windows, Wave API) か、DirectShow を使うことになります。

引用返信 編集キー/
■21453 / inTopicNo.4)  Re[2]: 動画・音声の切り出しシステム作成方法
□投稿者/ 量産型小市民 (2回)-(2008/07/02(Wed) 10:35:26)
No21299 (渋木宏明(ひどり) さん) に返信
> .NET の標準ライブラリには、その手の機能は含まれていません。
>
> マルチメディア系の API (Video for Windows, Wave API) か、DirectShow を使うことになります。
>

返信、どうもありがとうございました。DirectShowを使うことにし、DirectShowLibのサンプルなどを今読み解いているところです。

追加質問で申し訳ないのですが、DirectShowに関する解説やリファレンスで特に参考になりそうなサイトや本を教えてください。MSDNなどを読みながら適切なメソッドを探しているのですが、なかなか理解が進まず困っています。
引用返信 編集キー/
■21454 / inTopicNo.5)  Re[3]: 動画・音声の切り出しシステム作成方法
□投稿者/ ネタ好き (525回)-(2008/07/02(Wed) 10:44:35)
No21453 (量産型小市民 さん) に返信
> ■No21299 (渋木宏明(ひどり) さん) に返信
>>.NET の標準ライブラリには、その手の機能は含まれていません。
>>
>>マルチメディア系の API (Video for Windows, Wave API) か、DirectShow を使うことになります。
>>
>
> 返信、どうもありがとうございました。DirectShowを使うことにし、DirectShowLibのサンプルなどを今読み解いているところです。
>
> 追加質問で申し訳ないのですが、DirectShowに関する解説やリファレンスで特に参考になりそうなサイトや本を教えてください。MSDNなどを読みながら適切なメソッドを探しているのですが、なかなか理解が進まず困っています。

この方面は苦手なので適切なアドバイスは出来ませんが、ひとまずアマゾンでDirectXを検索すればいいと思います。サイトについては恐らく英語圏になるでしょう。
引用返信 編集キー/
■21456 / inTopicNo.6)  Re[3]: 動画・音声の切り出しシステム作成方法
□投稿者/ じゅで (72回)-(2008/07/02(Wed) 11:56:45)
内容未確認。
けどたぶんこのへん。

http://www.codeproject.com/KB/directx/directshownet.aspx
引用返信 編集キー/
■21474 / inTopicNo.7)  Re[4]: 動画・音声の切り出しシステム作成方法
□投稿者/ Azulean (154回)-(2008/07/02(Wed) 23:17:59)
> この方面は苦手なので適切なアドバイスは出来ませんが、ひとまずアマゾンでDirectXを検索すればいいと思います。サイトについては恐らく英語圏になるでしょう。
現状のDirectShowはDirectX SDKの範疇ではなく、PlatformSDK・WindowsSDKの範囲になっているはずです。
引用返信 編集キー/
■21667 / inTopicNo.8)  Re[4]: 動画・音声の切り出しシステム作成方法
□投稿者/ 量産型小市民 (3回)-(2008/07/07(Mon) 15:52:20)
皆様、アドバイスありがとうございます。

皆様のアドバイスを受け、DirectShowの資料を漁ってみましたが、どうしてもDirectShowからは「動画の一部分を切り出す」メソッドや、それを実現できそうなメソッドを見つけることができませんでした。
代替手段としては、一定時刻以降から1フレームごとにフレーム画像を切り出して、それを後で結合させる方法ですが、かなり回りくどい上に重い処理になってしまいそうです。

もしご存知の方がいれば、「こうすれば作りたいものができるよ」というレベルでのアドバイスをいただければと思います。特にAPIに関してはDirectShowにこだわっているわけではありません。他のAPIでも、使ったら実現できそうなメソッドなどを教えていただけるとありがたいです。
引用返信 編集キー/
■21675 / inTopicNo.9)  Re[5]: 動画・音声の切り出しシステム作成方法
□投稿者/ 渋木宏明(ひどり) (813回)-(2008/07/07(Mon) 16:56:19)
渋木宏明(ひどり) さんの Web サイト
>一定時刻以降から1フレームごとにフレーム画像を切り出して、それを後で結合させる方法ですが、かなり回りくどい上に重い処理になってしまいそうです。

指定時刻以降の再生ができるなら、ほぼ同じノリで切り出しもできます。
フィルタグラフの最終段(近く)にレンダラを接続するのではなく、エンコーダをつなげばいいです。

引用返信 編集キー/
■21994 / inTopicNo.10)  Re[6]: 動画・音声の切り出しシステム作成方法
□投稿者/ 量産型小市民 (4回)-(2008/07/14(Mon) 19:08:05)
なんとかDirectShowの仕様も大体理解し、プログラムを書ける段階にこぎつけましたが、最後のところで詰まってしまっています。

入力ファイル・出力ファイル・切り出し開始時刻・終了時刻から動画を切り出すメソッドとして下のようなコードを書きましたが、以下のような問題が出ています。
・開始点の入力は正常に作動するが、終了点の指定が働いていない(動画の終わりまで切り出してしまう)
・出力ファイルの頭5〜7秒分が正常に灰色になっている(正常にエンコードされていない?)

何度もたずねてしまい申し訳ありませんが、どなたかお答えいただけるとありがたいです。



private void CutMovie(string inputFilePath, string outputFilePath, double start, double end)
        {
            IGraphBuilder graphBuilder;
            IMediaControl _mediaControl;
            IMediaPosition _mediaPosition;
            IMediaSeeking _mediaseek;

            IBaseFilter sourceFilter;

            ICaptureGraphBuilder2 capGraphBuilder;
            IFileSinkFilter sinkFilter;
            IBaseFilter muxFilter;

            int hr;

            //フィルタグラフマネージャ構築
            graphBuilder = (IGraphBuilder)new FilterGraph();

            _mediaControl = (IMediaControl)graphBuilder;
            _mediaPosition = (IMediaPosition)graphBuilder;
            _mediaseek = (IMediaSeeking)graphBuilder;

            //ソースフィルタ構築
            hr = graphBuilder.AddSourceFilter(inputFilePath, inputFilePath, out (IBaseFilter)sourceFilter);
            DsError.ThrowExceptionForHR(hr);

            //出力フィルタ構築
            capGraphBuilder = (ICaptureGraphBuilder2)new CaptureGraphBuilder2();
            hr = capGraphBuilder.SetFiltergraph(graphBuilder);
            DsError.ThrowExceptionForHR(hr);

            Guid mediaSubType = MediaSubType.Avi;
            hr = capGraphBuilder.SetOutputFileName(mediaSubType, outputFilePath, out (IBaseFilter)muxFilter, out (IFileSinkFilter)sinkFilter);
            DsError.ThrowExceptionForHR(hr);

            hr = capGraphBuilder.RenderStream(null, null, sourceFilter, null, muxFilter);
            DsError.ThrowExceptionForHR(hr);

            _mediaPosition.put_CurrentPosition(start);
            _mediaPosition.put_StopTime(end);
            _mediaControl.Run();

            

        }

引用返信 編集キー/
■22491 / inTopicNo.11)  Re[7]: 動画・音声の切り出しシステム作成方法
□投稿者/ 量産型小市民 (5回)-(2008/07/24(Thu) 14:22:18)
上げます。本当に困っていますので、どなたかよろしくお願いいたします。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -