1

C コードで FFmpeg コマンドライン コマンドを複製しようとしています。具体的には、次を実行できるようにしたいと思います。

ffmpeg -re -i video.mp4 -f mpegts udp://localhost:7777

独自のコードで FFmpeg のライブラリを使用している人々のコードを見て気づいたことの 1 つは、FFmpeg コマンドライン コマンドに似た単一のコマンドに対して数百行のコードが含まれていることが多いことです。これは、彼らが非常に具体的なことをしているからだと思います。コマンドラインでその短いコマンドを実行して、必要なものを取得できれば、Cで同じことを行うのに約10行のコードしかかからないはずだからです。コード。これは、それだけの作業が必要ですよね?なぜそれ以上かかるのでしょうか?

FFmpeg ライブラリのストリーミング機能の使用方法に関する説明を見つけるのに少し苦労していますが、それらは非常に特定の目的のためのものであるため、あまり複雑ではありません。上記のコマンドのコードを書く方法を誰か説明できますか? または、少なくとも、そのようなスクリプト/プログラムの作成方法を説明するドキュメントを教えてください。どうもありがとう!

編集:これを最終的にiPhoneアプリから実行したいと思っているので、プログラムからFFmpegを直接呼び出すことはできません。FFmpeg で使用されるライブラリを使用する必要があります。

4

1 に答える 1

4

FFmpeg の内部ライブラリ (libavcode、libavformat など) は、かなり複雑なコード構造を持っています。基本的なことがどのように機能するかを理解するには時間が必要です。次に、いくつかの簡単なテスト アプリケーションを作成してみてください。そうして初めて、特定のコマンドを複製できるようになります。

FFmeg のライブラリの使用方法については、かなり の数の チュートリアルが用意されています (それらのいくつかは廃止された API を使用しています)。「doc/examples」ディレクトリのデモ コードも確認してください。

それが役に立てば幸い !

コメントから:
最新​​の FFmpeg バージョンの examples/muxing.c ソースを確認してください。出力ファイルの代わりに URL を提供してみてください。機能については、ドキュメント/ソースを確認してくださいavformat_alloc_output_context2()。次に、ストリーミングサポートを追加する方法の基本的なアイデアを得る必要があります

于 2013-04-26T12:16:48.733 に答える