3

プログラムでファイルの実際のタイプを判別しようとしています。そのためには、例えばFFMPegを使わなければならないようです。

アップロードされたファイルが実際にMP4またはFLV(フラッシュビデオの場合)[またはWebM(HTML5の場合)]であるかどうかを確認したいと思います。FFMPegの-i演算子は知っていますが、何をチェックすればよいかわかりません。

例えば:

Input #0, flv, from 'c:\www\data.aspbooru\image\0\40c24ba424d1334ef81c88c416ce794e.flv':

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'c:\www\data.aspbooru\image\0\8c1a747b5188349d92cca17a502d2d57.mp4':

それらはFFMPeg出力です。フラッシュ用にビデオをフィルタリングするときにチェックする必要があるのはこれだけですか?

したがって、それらのいずれも当てはまらない場合。swfファイルを確認するにはどうすればよいですか?

Input #0, swf, from 'c:\www\data.aspbooru\image\0\90447bd30d30ccb1474c0433e948d438.swf':
Duration: 00:07:16.08, start: 0.000000, bitrate: 63 kb/s
Stream #0.0: Audio: mp3, 44100 Hz, 2 channels, s16, 64 kb/s
Stream #0.1: Video: flv, yuv420p, 320x240, 25 fps, 25 tbr, 25 tbn, 25 tbc

チェックはInput #0, swf,十分ですか?それは私が欲しくない含まれているflvを抽出します。

ここで、完全にビデオではないファイルタイプとビデオであるファイルタイプをチェックする必要がありますが、h.264(またはWebm?)でmp4に変換できます。これを行う方法がまったくわかりません。

変換は管理できますが、そのヒントも非常にクールです(h.264とwebmを変換しますか?)。

ランダムファイルを入力しました。これでしょうか? c:\web.config: Invalid data found when processing input

編集:プログラミング言語から独立しているため、プログラミング言語は指定されていません。しかし、言語固有の入力であるVB.NETに感謝します。私はすでにプロセスロジックを持っていて、出力は文字列としてそこにあると仮定できます!正規表現もかっこいいでしょう:)

4

2 に答える 2

2

タイプの決定

MediaInfoで運が良かったかもしれません。

コマンドラインバージョンを取得し、次のように使用します。

mediainfo --full --language=raw --output=xml

これによりXML出力が得られ、XPathを使用してコーデックフィールドを取得できます。または、XMLが適切でない場合は、「-output = xml」を削除してから、テキスト出力を解析するための正規表現を記述します。

認識されないファイルの場合、出力が得られるように見えますが、コーデックフィールドはありません。

ビデオの変換

実際にビデオを変換する場合、FFmpegはビデオエンコーディングのスイスアーミーナイフであり、おそらく最良の選択肢です。

必要な出力コーデックがわかっている限り、入力を実際に知る必要はありません。

このような何かがあなたを始めることができます:

ffmpeg -i input.mov -vcodec libx264 -acodec libfaac -f mov out.mp4

これにより、H.264ビデオとAACオーディオを備えたMPEG-4が提供されます。あなたが望むものを得るためにこれを調整するために利用できる多くのオプションがありますが。

このサイトは、H.264オプションの調整に役立ちます。

幸運を!

于 2011-06-21T20:16:16.000 に答える
0

正規表現よりも良い結果が得られ、自分でその結果を判断できるので、いくつかのライブラリを試してみます。

C#/。NET用のソリッドFFmpegラッパー

于 2010-11-07T09:35:35.590 に答える