2012-10-02 69 views
1

我正在處理項目,我想將數據包寫入RTMP容器。使用XUGGLER寫入RTMP流

  • 我所實現的是:

    1. 要啓動監聽使用RED5 RTMP請求的應用程序。比方說,RTMP://本地主機/ MYAPP
    2. 我可以打開的IContainer與IContainerFormat的輸出格式爲給予( 「flv」 和 「RTMP://本地主機/ MYAPP /測試」,NULL)
  • 打算請告訴我錯誤是:

    1. 我想寫數據包到這個爲我打開的RTMP通道上。
      • 問題是FFMPEG開始給出錯誤32.與此錯誤有關的一點搜索表明,這通常是因爲客戶端 - 服務器數據消耗之間存在滯後。但我真的無法解決這個問題。我搜查了很多,但每個人都在爲同樣的問題哭泣。我得到的錯誤是:

12:57:20.242 [線程0] ERROR org.ffmpeg - WriteN,RTMP發送錯誤32(129個字節) 12點57: 20.246 [Thread-0] ERROR org.ffmpeg - WriteN,RTMP發送錯誤9(42字節)

(寫入N,RTMP發送錯誤32(45字節) 12:57:20.246 [線程-0] ERROR org.ffmpeg

這是我在Red5服務器上收到的錯誤

[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Provider connect 
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Stream start 
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Provider connect 
[ERROR] [NioProcessor-1] org.red5.server.net.rtmp.codec.RTMPProtocolDecoder - Error decoding buffer 
org.red5.server.net.protocol.ProtocolException: Error during decoding 
    at org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decode(RTMPProtocolDecoder.java:203) [red5.jar:na] 
    at org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodeBuffer(RTMPProtocolDecoder.java:122) [red5.jar:na] 
    at org.red5.server.net.rtmp.codec.RTMPMinaProtocolDecoder.decode(RTMPMinaProtocolDecoder.java:61) [red5.jar:na] 
    at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:225) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:638) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:598) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:587) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:61) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:969) [mina-core-2.0.0-RC1.jar:na] 
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) [mina-core-2.0.0-RC1.jar:na] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.7.0_07] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.7.0_07] 
    at java.lang.Thread.run(Unknown Source) [na:1.7.0_07] 
Caused by: java.lang.IllegalArgumentException: null 
    at java.nio.Buffer.limit(Unknown Source) [na:1.7.0_07] 
    at org.red5.io.amf.Input.bufferToString(Input.java:275) [red5.jar:na] 
    at org.red5.io.amf.Input.getString(Input.java:258) [red5.jar:na] 
    at org.red5.io.amf.Input.readPropertyName(Input.java:565) [red5.jar:na] 
    at org.red5.io.amf.Input.readKeyValues(Input.java:351) [red5.jar:na] 
    at org.red5.io.amf.Input.readSimpleObject(Input.java:501) [red5.jar:na] 
    at org.red5.io.amf.Input.readObject(Input.java:537) [red5.jar:na] 
    at org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodeStreamMetadata(RTMPProtocolDecoder.java:978) [red5.jar:na] 
    at org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodeMessage(RTMPProtocolDecoder.java:564) [red5.jar:na] 
    at org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodePacket(RTMPProtocolDecoder.java:385) [red5.jar:na] 
    at org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decode(RTMPProtocolDecoder.java:190) [red5.jar:na] 
    ... 18 common frames omitted 
[WARN] [NioProcessor-1] org.red5.server.net.rtmp.codec.RTMPProtocolDecoder - Closing connection because decoding failed: RTMPMinaConnection from 127.0.0.1 : 44814 to localhost (in: 3569 out 3521) 
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Close 
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Provider disconnect 
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Provider disconnect 
[INFO] [NioProcessor-1] org.red5.server.net.rtmp.RTMPHandler - Connecting to: [[email protected] Depth = 2, Path = '/default/myapp', Name = 'test'] 
[INFO] [NioProcessor-1] org.red5.server.net.rtmp.RTMPHandler - Remembering client buffer on stream: 300 
[ERROR] [NioProcessor-1] org.red5.server.service.ServiceInvoker - Method FCSubscribe with parameters [teststream] not found in [email protected] 
[WARN] [NioProcessor-1] org.red5.server.stream.PlayEngine - Subscribe to teststream provider failed 

我是新來的媒體流,所以不知道如果我失去了一些東西。

在此先感謝。

回答

0

我不認爲有調試RTMPProtocolDecoder的Java源代碼的機會。

但我不知道你使用的是什麼Red5版本。

RTMPProtocolDecoder.java:203 =>在Red5的/來源的異常的最新版本是在管線147: http://code.google.com/p/red5/source/browse/java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java#147

而且還添加了一些意見。我想你需要做的第一件事是更新到最新的red5。基於此,您可以進行調試並尋求更多幫助。

+0

我開始使用Red5 1.0-RC2,但是它在服務器應用程序中遇到了一些問題,所以經過很多搜索後,我終於切換回Red5 0.9。1版本,其中基本的NetConnection正在發生,而我的服務器應用程序正在接受客戶端請求。 – amd

+0

您需要在某個時候更新到最新版本,在更高版本中有很多內存泄漏修復。如果您打算在某個時候使用您的應用切換到生產,您將需要這些內容。 –

+0

這是Red5 0.9.1的解碼器http://code.google.com/p/red5/source/browse/java/server/trunk/src/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder。 java?r = 4047#202 –

0

只是爲了完成答案。不要依賴Red5 eclipse插件,它會生成與Red 5 1.0RC2不兼容的代碼。 Red5 1.0 RC 2可以在red5-web.xml中更改配置。該應用程序開始工作,我可以使用xuggler在容器上啓動一個流。

謝謝@ seba.wagner。