1

バックグラウンド:

私の現在のビデオファイルは、他のユーザーにコンテンツ (RTP) をストリーミングする Linux ベースのシステムに置かれています。を変更した後、コンテンツを撮影してサーバーに送信し、エンコーディングが正しいことを確認しています。問題に遭遇しました。

を使用してこれを実行しようとしましたがffmpeg、このファイルを挿入しているシステムはそれを認識せず、別のデバイスにストリーミングしません。

Windowsシステムですべてのトランスコーディングなどを行っています

C:\Users\mazdak\Documents\Projects\ffmpeg\bin>ffmpeg -y -i input.mp4 -pix_fmt yuv420p -c:v libx264 -profile:v main -level:v 4.1 -color_range 0 -colorspace bt709 -x264opts colorprim=bt709:transfer=bt709:bframes=1 -an output.mkv

エラー: 私が得ているのは

    StreamMedia exception ry: Unexpected NAL unit type: 9
    (...)
    StreamMedia exception ry: First media frame must be sync point

多分私はRTSPのためにそれを準備していませんか? それが問題ですか。私が見ている原因は、ストリーミングできるファイルがGstreamerを使用してエンコードされていることです

だから私は思った..おそらくそれをffmpegしないのですか?試してみましょgst-launchう。これについてどうすればよいかについての指針が必要です。

私が持っているもの:

  • GStreamer の OSSBuild
  • ffmpeg utils
  • input.mp4- H264 メイン プロファイル L3.1 - ピクセル フォーマット yuvj420p
  • コンテナ内のオーディオ

必要なもの (おそらく):

  • output.mkv- H264 メイン プロファイル L4.1 - ピクセル フォーマット yuv420p - RTP が用意されています (rtph264pay モジュール)

  • 音声が削除されました

私がh264_analyze撮影した両方の映画からの出力があります。ストリーミングに成功したムービーと、私が試したムービーからffmpeg

4

2 に答える 2

1

したがって、この質問は、何をしようとしているかに応じて、さまざまな方向に進む可能性があります。これは、mp4 ファイルの h264 ビデオ データを mkv ファイルに再多重化するだけの非常に基本的なパイプラインです。オーディオを無視します。再エンコードは必要ありません。

gst-launch-0.10 filesrc location="bbb.mp4" ! qtdemux ! ビデオ/x-h264 ! h264パース!マトロスカム!ファイルシンクの場所=/tmp/bbb.mkv

これは、mp4 ファイルを分離し、すぐに使用できる x264 設定を使用して再エンコードし、mkv ファイルに再多重化する別のパイプラインです。

gst-launch-0.10 filesrc location="bbb.mp4" ! デコードビン2!ビデオコンバート!x264enc ! h264パース!マトロスカム!ファイルシンクの場所=/tmp/bbb2.mkv

通常、ビデオ形式は、個々のファイルというよりはデータの束に似ています。最上位にはコンテナー形式 (mp4、mkv など) があり、多くの場合、これらのコンテナー内にはさまざまな形式 (h264 ビデオ、AAC オーディオなど) で保存されたビデオおよびオーディオ データがあります。次に、ストリーミング レベルでは、RTP (RTSP は 1 つ以上の RTP ストリームをネゴシエートするための一種のラッパー プロトコル) や MPEGTS などのプロトコルがあります。

また、カメラが生成するものを再確認することもできます。その上で ffprobe を実行できます。

ffprobe 何でも.mp4

簡単なテスト ビデオをゼロから作成して、サーバーが理解できるものを GStreamer で作成できるかどうかを確認することもできます。

gst-launch-0.10 videotestsrc num-buffers=120 ! ffmpegcolorspace ! x264enc プロファイル = メイン ! h264パース!マトロスカム!ファイルシンクの場所=/tmp/main.mkv

gst-launch-0.10 videotestsrc num-buffers=120 ! ffmpegcolorspace ! x264enc プロファイル = ベースライン ! h264パース!マトロスカム!ファイルシンクの場所=/tmp/baseline.mkv

gst-launch-0.10 videotestsrc num-buffers=120 ! ffmpegcolorspace ! x264enc プロファイル = 高 ! h264パース!マトロスカム!ファイルシンクの場所=/tmp/high.mkv

于 2015-04-27T14:28:14.120 に答える