コマンドプロンプト上から音楽ファイルの変換が出来るffmpegを利用して
C#プログラムを作ろうと思い、下記のサイトを参考にしてc#プログラムを作りコマンドを入力してみたのですがうまくいきません。
しかし、同じコマンドをコマンドプロンプトを手動で開いて打ち込むと成功します。

参考にしたサイト:http://dobon.net/vb/dotnet/process/standardoutpu …
入力したコマンド:"E:/ffmpeg.exe" -i "E:/a.m4a" -b:a 320k "E:/a.mp3"
 ※コマンドの-b:a 320kの表記は320kbpsのビットレートで変換するコードです。
 ※a.m4aをa.mp3に320kbpsのビットレートで変換するコマンドになります。

現状をまとめると以下のようになります。
(1)コマンドプロンプトを手動で起動して、以下のコマンドを打ち込むとうまく変換してくれる。
"E:/ffmpeg.exe" -i "E:/a.m4a" -b:a 320k "E:/a.mp3"
(2)しかしこのコマンドを下記のコードで実行すると処理が行われない。
(3)そうなると下記のコード自体に問題があるように思われるが、
下記のコードで"dir c:\"など簡単なコマンドを実行すると成功する。

ダブルクオテーション(")やスペースなどに問題があるのかと思いいろいろと試してみましたがダメでした。
どうすれば下記のコードで"E:/ffmpeg.exe" -i "E:/a.m4a" -b:a 320k "E:/a.mp3"のようなコマンドを実行出来るのでしょうか?
実行する方法、もしくは違うコードで実行する方法などを知っておられる方、ぜひご教授ください!非常に困っております。


---------------------------------------------------------------------------------------------------
■コマンドプロンプトをC#上から実行するコード
http://dobon.net/vb/dotnet/process/standardoutpu …のコードの丸写し
---------------------------------------------------------------------------------------------------
//Processオブジェクトを作成
System.Diagnostics.Process p = new System.Diagnostics.Process();

//ComSpec(cmd.exe)のパスを取得して、FileNameプロパティに指定
p.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec");
//出力を読み取れるようにする
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = false;
//ウィンドウを表示しないようにする
p.StartInfo.CreateNoWindow = true;
//コマンドラインを指定("/c"は実行後閉じるために必要)


//○成功する
p.StartInfo.Arguments = "dir c:\";
//×失敗する
p.StartInfo.Arguments = "\"E:/ffmpeg.exe\" -i \"E:/a.m4a\" -b:a 320k \"E:/a.mp3\";


//起動
p.Start();
//出力を読み取る
string results = p.StandardOutput.ReadToEnd();
//プロセス終了まで待機する
//WaitForExitはReadToEndの後である必要がある
//(親プロセス、子プロセスでブロック防止のため)
p.WaitForExit();
p.Close();

//出力された結果を表示
Console.WriteLine(results);
---------------------------------------------------------------------------------------------------

このQ&Aを見た人が検索しているワード

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>うまくいきません。



「なにが」「どう」「いまくいかない」んでしょうか?

プロセス起動した後に無反応になる?
プロセス終了した後に表示されるべきメッセージが表示されない?
プロセス起動できない?
起動したffmpeg.exeが終了しても戻ってこない?

参考ページではcmd.exeに/cオプションを指定しているようですが、
変更されたソースでは指定していないようで…。
その場合、
p.WaitForExit();
でちゃんと戻ってこれるんですかね?
# 起動したcmd.exe自体は終了していないはずですが…
# /Cも/Kも無かった場合ってどういう動作するんですかね?(Windows7 Pro 64Bitでcmd dirとしたら無視されてしまいましたが)

cmd.exe経由でなくても、必要条件満たせばffmpeg.exeの起動は可能と思いますよ。
ffmpeg.exeを利用するフロントエンドアプリなんかもそうしているでしょうし。
「ffmpeg.exe フロントエンド」で検索してみるとアプリは見つかるかと。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
私の説明がたりませんでしたね。追記で書かせていただきます。

上記のプログラムは
p.StartInfo.Argumentsに値を入れることでプロンプトにコマンドを入力して、p.Start()でプロンプトで処理を実行し、string results = p.StandardOutput.ReadToEnd();でその結果を読み取るものだと思います。

しかし
p.StartInfo.Arguments = "\"E:/ffmpeg.exe\" -i \"E:/a.m4a\" -b:a 320k \"E:/a.mp3\";
と入力して実行すると、プロンプトは立ち上がるのですが、立ち上がるだけでコマンドが入力されないんです。ビルドすると未入力のコマンドプロンプトが立ち上がって処理が止まってしまう感じです。

/cは処理後にプロンプトを閉じるコマンドのようですので単純化するために除去しました、"dir c:\"だと成功するので必ずしも必要無いと思いました。

ちなみに以下のように/cをつけて実行するとエラーになりました。「ファイル名、ディレクトリ名、またはボリュームラベルの構文が間違っています」というエラーになりました。

p.StartInfo.Arguments = "/c \"E:/ffmpeg.exe\" -i \"E:/a.m4a\" -b:a 320k \"E:/a.mp3\";

お礼日時:2015/08/03 16:23

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QC++とC#

C,C++と進みC#
Visual C#がありますが
C++とC#の違いを教えてください.
C++とJAVAをたしたようなもの
なのでしょうか?

Aベストアンサー

文法/構文上の類似点は多々ありますが、「別物」です。
その相違について掲示板で列挙できるものではありません。
# 本を読んでください。

QC#とC++/CLIの連携について

C#とC++/CLIの連携について
C++/CLI側にC#で作成した変数を渡したいのですが、やり方がわかりません。

そもそも一つのソリューションにC++/CLIとC#を混在することはできるのでしょうか。
やはりC++/CLI側はDLLにして、C#がそのDLLを利用するのでしょうか。

Aベストアンサー

.NETの各種言語は混在することができます。
たとえば、C#でGUIの設計をし.NET用DLLを作成し、内部処理をC++でWin32APIを使って書き、C++/CLIでラップして、GUIと結び付ける、とかもできます。

「変数を渡す」というのが表現として良く分かりませんが、変数というよりはクラスを共有する感じになるかと思います。

とはいえC++/CLIはネイティブコードとマネージドコードを混ぜれるがゆえに、逆に色々と問題があるので、ちゃんとネットや本で調べたほうが良いかと思います。

QC++ C# 語源

C++とC#(C++++)はかなり大雑把に言うとCの拡張版ですが、なぜ+が二個単位なのでしょうか。
C → C++ → C#
C+とC+++は存在しないのでしょうか。
C → C+ → C++ → C+++ → C#
もし存在しないのであれば、どのような理由でそうなったのでしょうか。

Aベストアンサー

C/C++のインクリメント演算子が、++だからじゃないでしょうか。

QC#でできてC++でできないことは?(C#のメリットとは?)

これから新しい言語として、C#もしくはC++の勉強をしたいと
考えています。

C#にできてC++にできないこと、あるいはその逆でC++にはできて
C#ではできない。ということがあれば、教えていただけないでしょうか?

感覚としてはC++であれば何でもできるという感じではあるのですが、
C#を使うメリットってどんなことがありますか?
やはり、ビジュアル開発(コントロールのDrag&Dropで画面開発ができる)
の簡単さというところがC#でのメリットでしょうか?

ちなみに私はこれまで、C -> VB -> Java といった順で言語を習得
してきました。

Aベストアンサー

>C#にできてC++にできないこと
無いでしょう。
基本的にC/C++の場合コンパイラの種類に依りますが
内部にアセンブラを書くこともできますから
C/C++で出来ないことはC#でも出来ません。
(勿論#1さんの言われるように言語レベルの仕様で出来ない事はあります。)

簡単さでいうとC#です。VB6の開発経験があるとのことですが
VC#だとVBのフォームを作成するような感じでインターフェースを
作っていけます。(一応VC++でも可能)

一方C#で出来ないことですが
当然ですがフレームワークに依存しないソフトを作る事が出来ません。
Javaで作ったソフトがJREを必要とするのと同じです。
他にはCPUの特殊な命令(SSEやMMX)を呼び出すとかドライバの開発等も出来ません。

ちなみにVC++でもフレームワークは使えるので
フレームワークのガベージコレクション等を使うことは可能です。
(ただフレームワークを使うならC#の方が簡単です。)

QC#でCのコンソール出力の取得

C#でCのコンソール出力の取得
Cで作成したDLLをC#で利用しています。このときDLLファイルはC言語のprintfを使用しています。この出力内容を取得して、C#でテキストボックス等に表示する方法はありませんでしょうか。

Aベストアンサー

使ったこと無いのですが
Googleで調べたところ以下のWebページがヒットしました。

@IT
.NET TIPS
コンソール・アプリケーションの出力を取り込むには?[C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/657redirectstdout/redirectstdout.html

参考URL:http://www.atmarkit.co.jp/fdotnet/dotnettips/657redirectstdout/redirectstdout.html

QC、C++、C#の関係について

現在C#で簡単な開発しています。

今度就く業務ではC++が必要だから、勉強しておくようにと言われました。
C#を使っていながら、恥ずかしい質問なのですが・・・

 ・よく聞く「VC++」と「C++.Net」は、違うのでしょうか?
  正式名称が「Microsoft Visual C++ .Net」なので、同じような気がするのですが。
  私の使用PCには「Microsoft Visual Studio .Net 2003」が入っています。

 ・C言語とC++との違いは何なのでしょうか?
  両者の関係が分かりません。
  C++を勉強する場合、C言語というのは飛ばしてよいのでしょうか?
  C#を習得するときは、C言語を勉強しませんでした。
  C++で開発とか、C#で開発とか言いますが、「C言語で開発」とは言わないですよね?

C#とC++がどれほど違うのかが不安です。
質問がたくさんになってしまいましたが、よろしくお願いいたします。

Aベストアンサー

 ・よく聞く「VC++」と「C++.Net」は、違うのでしょうか?

文脈により違うものをさす可能性もあります。(同じ可能性もありますが、大抵は違うかも…)

「VC++」は、Microsoft社のC++コンパイラ製品名(の略称)であって、言語ではないです。
但し、特にMFCでの開発をさして(C++と区別して)「VC++」と表現する方もいます。

そして、「VC++」は、「非.NET platformのC++(標準C++)」と、
.NET platform用のManaged C++(MSの独自拡張。後に整理されてC++/CLIとして規格化)の*両方に*対応してます。

C++.NETというと、恐らくはManaged C++(MS独自拡張)か、
C++/CLI(これはECMAで独立した言語として標準化)をさすと思われます。
# Managed C++とC++/CLIも微妙に違う言語です。

一報、単にVC++と言う場合、標準C++(+MFC)の可能性が高いです。


> 私の使用PCには「Microsoft Visual Studio .Net 2003」が入っています。

これは、.NET framework上のManaged C++と標準C++の両方に対応した製品です。

 ・C言語とC++との違いは何なのでしょうか?

C言語は、ISO/IEC9899で標準化された言語です。
C++は、C言語をベースに開発された別の言語です(ISO/IEC14882)。
そして、.NET framework用のC++/CLI (ECMA-372)も別の言語です。

CとC++の関係を例えるなら、ラテン語と英語とかみたいなものでしょうか。
(ベースでもあり、参考にはなるが、似て非なるもの)

> C++を勉強する場合、C言語というのは飛ばしてよいのでしょうか?

知っているとお得です。知らないと将来「はまる」可能性もあります。
ですが、最初に勉強するべきかといわれると、議論が分かれるところだと思います。

> C++で開発とか、C#で開発とか言いますが、「C言語で開発」とは言わないですよね?

「C言語で開発」とも言います。
(PCアプリだと「C言語+Win32」ということが少ないだけで、組込業界等に行くと普通にあります。別言語ですし、C言語のシェアも高いので)

> C#とC++がどれほど違うのかが不安です。

根本のOOPとかは共通ですが、C++の方が格段に複雑で難易度が高いです。
C++⇒C#は比較的容易ですが、逆は結構面倒だと思います。

C#がオートマ車の運転なら、C++はF1カーのようなもの。
クラッチの切り方から注意しないとエンストしたり、事故ります。
その代わり極めれば性能が出ます。(反面、極めるのは困難です)

 ・よく聞く「VC++」と「C++.Net」は、違うのでしょうか?

文脈により違うものをさす可能性もあります。(同じ可能性もありますが、大抵は違うかも…)

「VC++」は、Microsoft社のC++コンパイラ製品名(の略称)であって、言語ではないです。
但し、特にMFCでの開発をさして(C++と区別して)「VC++」と表現する方もいます。

そして、「VC++」は、「非.NET platformのC++(標準C++)」と、
.NET platform用のManaged C++(MSの独自拡張。後に整理されてC++/CLIとして規格化)の*両方に*対応してます。

C++.NET...続きを読む

QC++/CLIのDLLをC#で使う

C++/CLIのDLLをC#で使う

ソリューションの中にC++/CLIでクラスを作成し、出力がDLLのプロジェクトと、
C#でGUI画面の処理のプロジェクトがあります。
このときC#側でC++/CLI側で作ったDLLを使用したいのですが、やり方がわかりません。

DLL自体はC#のDebugフォルダに入っており、参照設定で読み込んでいます。

ご教授のほど、よろしくお願いいたします。

Aベストアンサー

VC側で作成したクラス変数を C#側で生成してやれば VC側のクラスが使えますよ

一例として VCSample01というプロジェクトのClass1というクラスなら
C#側で
VCSample01.Class1 objClass1;
と宣言しておいて

Form_Loadイベントなどで
objClass1 = new VCSample01.Class1;
とインスタンス(実体)を生成します

何かのイベントで
objClass1.SampleMethod( 123 );
int nVal = objClass1.GetMethod();
などといった具合ですが

# SampleMethodやGetMethodなどがVC側で作成したクラスのメソッドと仮定しています

QWinアプリ(c#) webアプリ(c#.net) とは?

4月から社会人になります。
職種はシステムエンジニアです。
社員十数名ほどの小さな会社で、研修はありません。

何かやっておいた方がいい事はないか質問すると、
「Winアプリ(c#)やwebアプリ(c#.net)あたりをやっておくといいかもしれない。」
との事で、とりあえずC#の入門書を買ってみたのですが、
わからない事だらけで困っています。
超初心者なので、細かく教えて頂けないでしょうか。

(1)Winアプリ・webアプリとは何ですか。
(2)C#とC#.netは同じなのですか。違うのなら、C#.netとは何ですか。
(3)C#とはVisual C#の事ですか?

その他知っておくべき事等お教え頂ければ幸いです。
宜しくお願い致します。

Aベストアンサー

>(1)Winアプリ・webアプリとは何ですか。
WinアプリとはWindowsアプリケーションソフトのこと。
その名のとおりWindowsというOSで動作するアプリケーションソフトのことです。
アプリケーションソフトとは『特定の目的のために作られたソフトウェア』って意味です。

webアプリは、
ブラウザ(IEなど)で動作させるアプリケーションソフトです。
ですので、WindowsというOSに限らずLinuxなど他のOSでもブラウザさえあれば動作します。
このOKWave自体もWebアプリケーションですね。

>(2)C#とC#.netは同じなのですか。違うのなら、C#.netとは何ですか。
同一です。

>(3)C#とはVisual C#の事ですか?
ほぼそう考えてよいと思います。
正確にはVisual C#とはマイクロソフトのVisual Studioを使って、C#という言語で開発するって意味です。


最初はとにかく入門書の内容に従ってプログラムを打ち込んで動かしてみることですね。

QVisual C#とVisucal C++の違い

Visual C#とVisual C++の違いについて教えてください。
C#はC++の上位互換だとかんがえてよいでしょうか?

Aベストアンサー

こんにちは、じゃんぬねっと です。

C# はどちらかといえば、Java と Delphi を足したような言語です。
構文は C 系統ですが、C++ から省かれた概念がゴマンとあります。

NCL 的な意味合いで VC++ の上位にあたるのは、Managed C++ (MC++) です。
.NET Framework 2.0 から C++/CLI へと変貌を遂げました。

簡単ではありますが、概要を書かせて頂きました。

QC#の入門書

これからC#を勉強しようと考えていて、入門書を探しています。Amazonのレビューなどを読んだりして、下の4つで悩んでいます。
・プログラミングC# 第5版 (大型本)
・独習C# 第2版
・JIS規格対応 標準C#入門 改訂第2版 (大型本)
・猫でもわかるC#プログラミング (猫でもわかるプログラミングシリーズ) (単行本)

今のところ、買おうと思っているのは、「プログラミングC# 第5版」です。理由は、これの第4版に限らずオライリーの書籍全般の評判がいいから、C#について詳しく書かれている書籍だとレビューなどで見たからです。

ちなみに私は、PASCAL、C言語、Perl、Perl/Tk、CaslIIなどを大学の講義で学びました。C#については全く何も知りません。また、ソフトは「Visual C# 2008 Express Edition」の使用を考えていますが、これも使用したことがなく、使い方が全くわかりません。できれば、入門書に使い方などが書いてあるとありがたいのですが、インターネットなどで使い方を知ることができるなら、なくてもかまわないと思っています。

こんな私ですが、上の4つの本を読んだことがある方、C#の開発をしたことがある方は、おすすめの書籍やC#開発ソフトの使い方が書いているサイト、C#の学習等について意見を頂けないでしょうか。上の本以外にいい本があるなどでもかまいません。漠然としていて申し訳ありませんが、回答よろしくお願いします。

これからC#を勉強しようと考えていて、入門書を探しています。Amazonのレビューなどを読んだりして、下の4つで悩んでいます。
・プログラミングC# 第5版 (大型本)
・独習C# 第2版
・JIS規格対応 標準C#入門 改訂第2版 (大型本)
・猫でもわかるC#プログラミング (猫でもわかるプログラミングシリーズ) (単行本)

今のところ、買おうと思っているのは、「プログラミングC# 第5版」です。理由は、これの第4版に限らずオライリーの書籍全般の評判がいいから、C#について詳しく書かれている書籍だとレビューなど...続きを読む

Aベストアンサー

私はC#のバイブルとかいう宣伝文句を信じて

・プログラミングC# 第5版 (大型本)

を買いましたけど、C#関連書籍の量産体制に入った著者が、べつの著者を雇って書きなぐったような本です。
メンバ変数という言葉を使いながら、その定義すら書かれていませんから、オブジェクト指向の予備知識が前提。
しかもメンバ変数がいつのまにか、フィールドという言葉に置き換わっていたりするんですが、フィールドの定義は何かと思って索引を見ると「→メンバ変数を参照」とか書いてある。
翻訳も関係ないページの脚注が別のページに載っていたりする。
これで5000円もするんですから、ひどいもんです。

困ったことに、この本を参考書籍として推薦してたりする別の書籍(著者が、この本の前の版(これは結構良書らしい)を読んでいても、この版は読んでないのがばればれ)もあったりして、あきれます。 「C#3.0/.NET Framework3.5対応」とか言いながら、実際の中身は「C#2.0/.NET Framework2.0」しか使っていなかったりするし。
ところでさいきん

http://www.atmarkit.co.jp/fdotnet/extremecs/index/index.html

を見ました。
初心者向けじゃないけど、現時点ではたぶん、日本語の本では唯一、C#3.0の中身について、きちんと書いてある良書だと思います。

川俣 晶
究極のC#プログラミング ~新スタイルによる実践的コーディング

私はC#のバイブルとかいう宣伝文句を信じて

・プログラミングC# 第5版 (大型本)

を買いましたけど、C#関連書籍の量産体制に入った著者が、べつの著者を雇って書きなぐったような本です。
メンバ変数という言葉を使いながら、その定義すら書かれていませんから、オブジェクト指向の予備知識が前提。
しかもメンバ変数がいつのまにか、フィールドという言葉に置き換わっていたりするんですが、フィールドの定義は何かと思って索引を見ると「→メンバ変数を参照」とか書いてある。
翻訳も関係ないページの...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報