12

状況: ビデオファイルを保存するために(.net経由で)ffmpegを使用しています。ffmpegから出力を取得できますが、出力をカスタマイズしてより良い結果を得る方法がわかりません。

私の問題: 私の問題は、成功した操作と失敗した操作の間に特定の違いがないことです。

成功の最後の行:

ビデオ:1006kBオーディオ:134kB字幕:0グローバルヘッダー:0kB多重化オーバーヘッド0.943510%

からの最後の行は失敗します

c:\ x \ test-9-8 / 30 / 2012-9:29:56-AM.mp4:引数が無効です

rtmp://cdn.tv/cdn-live39/ definst / stream01:不明なエラーが発生しました

私の質問: ある種の戻りコード(200:成功、500:エラーなど)を追加するオプション(またはコマンドラインパラメーター)はありますか?

ありがとう!

PS:私はこのトピックを見ましたffmpegがエラーになったかどうかを見分ける方法は?ただし、最終行の前後に番号はありません。前回のバージョンにはもう番号がないと思います。

4

2 に答える 2

5

ffmpeg から返された終了コードを確認するだけで済みます。成功した場合は 0 を返す必要があり、それ以外の場合は失敗したことを意味します。

于 2012-08-31T07:05:34.860 に答える
5

私はこれが非常に古いことを知っていますが、私が遭遇し、他の信頼できる答えが見つからず、さらにテストした後:

0 の戻り値をチェックするという提案は、一般的には良いアドバイスですが、すべての場合に役立つわけではありません。ファイルが存在するかどうかを確認するという別のアイデアも良いですが、繰り返しになりますが、すべての場合に役立つわけではありません。

たとえば、入力ファイルがカバーが埋め込まれた mp3 ファイルの場合、ffmpeg は (私のテストでは) この画像を使用し、その画像を (使用できない) ビデオ ファイルとして抽出します。

私が今行っているのは、デバッグ レベルの出力を取得し、多重化されたパケットの数を解析することです。

ffmpeg -i "wildlife.mp4" -c:v copy -an -sn "out.mp4" -y -loglevel debug 2> wildlife.txt

正規表現を使用して、次のテキストを検索します。
Output stream .+ (video): [0-9][0-9]+ packets muxed \([0-9][0-9]+ bytes\)

(これは、すべてのビデオに 9 個以上のパケットがあることを前提としています - もちろん、非常に短いビデオ用に最適化できます)。

もちろん、RTMP またはその他の設定では、出力が異なる場合がありますが、完全な出力ストリームを解析することが唯一のオプションだと思います。

于 2015-06-12T11:06:42.550 に答える