2013-03-29 23 views
5

、それは書いている:.aviビデオファイルのrtpストリーミングを受信できないのはなぜですか? <a href="http://ffmpeg.org/trac/ffmpeg/wiki/StreamingGuide" rel="nofollow">ffmpeg streamingGuide</a>で

ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -ar 8000 -f mulaw -f rtp rtp://127.0.0.1:1234 & 
ffplay rtp://127.0.0.1:1234 

私は人工的な信号を交換するために、実際のビデオファイルを使用します。 は、それから私は、端末Aで以下の記述:フレーム情報がカウントされ :

ffmpeg -re -i outputFile.avi -f mulaw -f rtp rtp://127.0.0.1:1234 

、働いているようです。

frame= 309 fps= 29 q=31.0 Lsize=  931kB time=00:00:10.30 bitrate= 740.8kbits/s  video:922kB audio:0kB subtitle:0 global headers:0kB muxing overhead 1.030813% 

端子Aのフレームはまだ(完成品ではない)をカウントしたとき、私は端末Bで以下を入力します:ここで終わりに端末Aの情報です

ffplay rtp://127.0.0.1:1234 

しかし、それはありません動作していません: エラー情報:

[udp @ 0x7fb370001500] bind failed: Address already in useB f=0/0 
rtp://127.0.0.1:1234: Input/output error 

なぜですか?

ffmpegの-Re -i out.avi -f MULAW -f:私はffmpegの端末のための入力であるfoo.sdp
を使用カミーユGoudeseune からの指示に従って

[アップデート1] RTP RTP://127.0.0.1:1235

ffplay用の端子は、次のとおりです。

ffplay -i foo.sdp

ffplay端末では、画像なしで多くのエラーが表示されます。

libpostproc 52. 2.100/52. 2.100 
[sdp @ 0x7fafdc0008c0] Undefined type (30) 0KB sq= 0B f=0/0 
[sdp @ 0x7fafdc0008c0] nal size exceeds length: 25453 86 0B f=0/0 
[sdp @ 0x7fafdc0008c0] Consumed more bytes than we got! (-25367) 
[sdp @ 0x7fafdc0008c0] nal size exceeds length: 25453 86 
[sdp @ 0x7fafdc0008c0] Consumed more bytes than we got! (-25367) 
[sdp @ 0x7fafdc0008c0] Unhandled type (27) (See RFC for implementation details 
[sdp @ 0x7fafdc0008c0] Undefined type (31) 0KB sq= 0B f=0/0 
[sdp @ 0x7fafdc0008c0] Unhandled type (27) (See RFC for implementation details 
[sdp @ 0x7fafdc0008c0] nal size exceeds length: 62414 6130B f=0/0 
[sdp @ 0x7fafdc0008c0] Consumed more bytes than we got! (-61801) 
[sdp @ 0x7fafdc0008c0] nal size exceeds length: 62414 613 
[sdp @ 0x7fafdc0008c0] Consumed more bytes than we got! (-61801) 
[h264 @ 0x7fafdc003020] non-existing PPS referencedq= 0B f=0/0 
[h264 @ 0x7fafdc003020] non-existing PPS 0 referenced 
[h264 @ 0x7fafdc003020] decode_slice_header error 
[h264 @ 0x7fafdc003020] Invalid mix of idr and non-idr slices 
[sdp @ 0x7fafdc0008c0] Undefined type (31) 0KB sq= 0B f=0/0 
[sdp @ 0x7fafdc0008c0] Unhandled type (29) (See RFC for implementation details 
[sdp @ 0x7fafdc0008c0] Unhandled type (26) (See RFC for implementation details 
[sdp @ 0x7fafdc0008c0] Unhandled type (27) (See RFC for implementation details 
    Last message repeated 2 times 0KB vq= 0KB sq= 0B f=0/0 
[sdp @ 0x7fafdc0008c0] Undefined type (31) 
[sdp @ 0x7fafdc0008c0] Unhandled type (26) (See RFC for implementation details 
[sdp @ 0x7fafdc0008c0] Unhandled type (25) (See RFC for implementation details 
[h264 @ 0x7fafdc003020] insane cropping not completely supported, this could look slightly wrong ... (left: 2, top: 2) 
[h264 @ 0x7fafdc003020] illegal aspect ratio 
[h264 @ 0x7fafdc003020] missing picture in access unit with size 84589 
[h264 @ 0x7fafdc003020] Partitioned H.264 support is incomplete 
[h264 @ 0x7fafdc003020] insane cropping not completely supported, this could look slightly wrong ... (left: 2, top: 2) 
[h264 @ 0x7fafdc003020] illegal aspect ratio 
[h264 @ 0x7fafdc003020] insane cropping not completely supported, this could look slightly wrong ... (left: 2, top: 2) 
[h264 @ 0x7fafdc003020] illegal aspect ratio 
[h264 @ 0x7fafdc003020] no frame! 
[h264 @ 0x7fafdc003020] RTP: missed 2563 packetsB sq= 0B f=0/0 
[sdp @ 0x7fafdc0008c0] Undefined type (30) 
    Last message repeated 1 times 
[sdp @ 0x7fafdc0008c0] Undefined type (31) 
+0

これは数年後のことですが、これらの回答は他の人に役立っています。これらの回答の1つがあなたのために働いた場合は、それを受け入れてください。 –

+0

親愛なるユーザー1914692、なぜあなたは答えを受け入れませんか?これらの回答のうちの1つは「すてきな回答」のバッジを獲得したものでもあります。 SOの仕組みを知るには、十分な活動とバッジがあります。 SO_REUSEADDR'およびまたは 'SO_REUSEPORT'がtrueに設定されている'場合 –

答えて

14

ffplay rtp://127.0.0.1:1235の代わりにffplay -i foo.sdpを使用してください。

例えば、その中にラインSDP:を、以下のffmpegからのテキスト出力を貼り付けて、ローカルファイルfoo.sdpを作成します。

v=0 
o=- 0 0 IN IP4 127.0.0.1 
s=No Name 
c=IN IP4 127.0.0.1 
t=0 0 
a=tool:libavformat 55.2.100 
m=video 1235 RTP/AVP 96 
a=rtpmap:96 H264/90000 
a=fmtp:96 packetization-mode=1 

を.sdpというファイルがRTPアドレスが含まれているので、あなたがRTPを指定する必要はありません。 //... 同じように。

+1

私はffmpegの端子の入力があるfoo.sdpを使用しますが、いくつかの他のもののために、ロードバランサを構築するためのクールですRTP RTP://127.0.0.1:1235 ffplayための端子である:ffplay -i foo.sdp ffplay端子は画像なしで、エラーの多くを示しています。 – user1914692

+0

[sdp @ 00000000003759c0]ストリーム0のコーデックパラメータが見つかりませんでした(ビデオ:h2 64、なし):未指定サイズ 'analyzeuration'と 'probesize'オプションの値を増やすことを検討してください C:\ rtp.sdp:couldコーデックパラメータを見つけることができません ナン:0.000 FD = 0 AQ = 0キロバイトVQ = 0キロバイトSQ = 0BのF = 0/0 –

+1

lmgtfy:http://stackoverflow.com/a/11659459/2097284 –

3

ffplay rtp://127.0.0.1:1234の着信RTPトラフィックのためのUDPポート1234でリッスンを開始します。

1つのアプリケーションだけが、任意の時点でホスト上の特定のポートでリスンすることができます。

「バインドに失敗しました:既に使用中のアドレス」というエラーは、別のアプリケーションがすでにポート1234をリッスンしていることを示しています。 あなたはまだテストからスクリプトを実行していますか?

ポートをブロックしているアプリケーションを停止するか、別のポートを使用してください。

+0

うーん、同じIPアドレスとTCPポートに2つの異なるプロセスをバインドすることが完全に可能です。 – Fraser

+1

はい、あなたがしたいことはほとんどありません。 'SO_REUSEPORT'を使用した場合受け取ったパッケージは* *だけ(例えば、ラウンドロビンアルゴリズムを使用して、オペレーティングシステムによって決定される1)1で、*すべて*のリスナーでアップになりません。 ffmpegの-re -i out.avi -f MULAW -f:これは(私は考えることはできません) –