Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

View: New views
16 Messages — Rating Filter:   Alert me  

Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by iMDT - Tiago Jacobs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by iMDT - Tiago Jacobs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by iMDT - Tiago Jacobs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.

iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by Art Clarke-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by Andy Shaules :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.

Why not copy red5's meta data method?
 
 
----- Original Message -----
Sent: Tuesday, July 07, 2009 8:08 AM
Subject: Re: [Red5] Mondain,Art or other semigod! Helping on metadata for live h264 publisher.

Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.


_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by iMDT - Tiago Jacobs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
Andy, I was looking inside red5, I debuged entire "walk" of packet.

The method's I used is from red5 meta data services (or I think so).

The amazing thing is that when "Three letter encoder" publish, the metadata and videoPackets come inside the same channelld.

When the "RTMPClient" send metadata (with method publishStreamData), it goes inside other channel (Data channel), this is defined in ConnectionConsumer.java.

I tried setting the data to go inside VideoChannel, like below. But don't worked.

I also figured that RTMPClient uses channel 5, and "Three letter encoder" uses channel 4.

case Constants.TYPE_STREAM_METADATA:
                    log.trace("Meta data");
                    Notify notify = new Notify(((Notify) msg).getData().asReadOnlyBuffer());
                    notify.setHeader(header);
                    notify.setTimestamp(header.getTimer());
                    //I set to video for testing
                    video.write(notify);
break;



Andy Shaules wrote:
Why not copy red5's meta data method?
 
 
----- Original Message -----
Sent: Tuesday, July 07, 2009 8:08 AM
Subject: Re: [Red5] Mondain,Art or other semigod! Helping on metadata for live h264 publisher.

Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.


_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by Mondain :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

>From what Steven and I found out about MP4, the channel ids didnt matter all that much if at all. For example, RubyIzumi sends all its data on channel 5 (audio, video, and data). BTW I cant tell whats wrong with your code, when I want to construct meta data on the fly I just copy code from the Readers.

Paul

On Tue, Jul 7, 2009 at 8:48 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
Andy, I was looking inside red5, I debuged entire "walk" of packet.

The method's I used is from red5 meta data services (or I think so).

The amazing thing is that when "Three letter encoder" publish, the metadata and videoPackets come inside the same channelld.

When the "RTMPClient" send metadata (with method publishStreamData), it goes inside other channel (Data channel), this is defined in ConnectionConsumer.java.

I tried setting the data to go inside VideoChannel, like below. But don't worked.

I also figured that RTMPClient uses channel 5, and "Three letter encoder" uses channel 4.

case Constants.TYPE_STREAM_METADATA:
                    log.trace("Meta data");
                    Notify notify = new Notify(((Notify) msg).getData().asReadOnlyBuffer());
                    notify.setHeader(header);
                    notify.setTimestamp(header.getTimer());
                    //I set to video for testing
                    video.write(notify);
break;




Andy Shaules wrote:
Why not copy red5's meta data method?
 
 
----- Original Message -----
From: aclarke@...
Sent: Tuesday, July 07, 2009 8:08 AM
Subject: Re: [Red5] Mondain,Art or other semigod! Helping on metadata for live h264 publisher.

Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.


_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://gregoire.org/
http://code.google.com/p/red5/
http://code.google.com/p/blue5/

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by Andy Shaules :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.

>When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".
FME sends metadata as an 'invoke' call If i remember right.
 
Red5 does not handle @setDataFrame and so meta data sent from FME is sent to clients directly and thus you get your error async error.
 
Your onMetaData function will never be called because red5 is trying to invoke '@... on the client.
 
Get it? Even if your invoke is correctly structured, red5 fails.
----- Original Message -----
From: tiago@...
Sent: Tuesday, July 07, 2009 8:48 AM
Subject: Re: [Red5] Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

Andy, I was looking inside red5, I debuged entire "walk" of packet.

The method's I used is from red5 meta data services (or I think so).

The amazing thing is that when "Three letter encoder" publish, the metadata and videoPackets come inside the same channelld.

When the "RTMPClient" send metadata (with method publishStreamData), it goes inside other channel (Data channel), this is defined in ConnectionConsumer.java.

I tried setting the data to go inside VideoChannel, like below. But don't worked.

I also figured that RTMPClient uses channel 5, and "Three letter encoder" uses channel 4.

case Constants.TYPE_STREAM_METADATA:
                    log.trace("Meta data");
                    Notify notify = new Notify(((Notify) msg).getData().asReadOnlyBuffer());
                    notify.setHeader(header);
                    notify.setTimestamp(header.getTimer());
                    //I set to video for testing
                    video.write(notify);
break;



Andy Shaules wrote:
Why not copy red5's meta data method?
 
 
----- Original Message -----
Sent: Tuesday, July 07, 2009 8:08 AM
Subject: Re: [Red5] Mondain,Art or other semigod! Helping on metadata for live h264 publisher.

Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflashorg

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflashorg

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflashorg




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.


_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org


_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by iMDT - Tiago Jacobs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I debuged something at client side and it seems not a metadata problem,

On red5 i am looking inside dispatchEvent of ClientBroadcastStream, I am sysouting absolutely everything that is possible, timestamps, datatypes, etc.

Everything is equal from one to another.

The debug on clientside is the same with "working" and "not working" versions (it make me think that it's not a metadata problem).

I will make red5 don't "pipe" metadata from "Three letter encoder" to see what happens.

Using FLV1 the codec works as expected, and writing video
H264  to a file and playing with red5 works also, it's a live streaming, so we not have cuepoints, right?

I was wondering if h264 that
"Three letter encoder" generates is the same that Xuggle generates, I am lost.

"Three letter encoder":
Host: localhost
Connecting...
onBWDone
NetConnection.onStatus [NetStatusEvent type="netStatus" bubbles=false cancelable=false eventPhase=2 info=[object Object]]
Code: NetConnection.Connect.Success
NetConnection.onStatus [NetStatusEvent type="netStatus" bubbles=false cancelable=false eventPhase=2 info=[object Object]]
Code: NetStream.Play.Reset
NetConnection.onStatus [NetStatusEvent type="netStatus" bubbles=false cancelable=false eventPhase=2 info=[object Object]]
Code: NetStream.Play.Start
NetConnection.onStatus [NetStatusEvent type="netStatus" bubbles=false cancelable=false eventPhase=2 info=[object Object]]
Code: NetStream.Play.PublishNotify
Async Error: [AsyncErrorEvent type="asyncError" bubbles=false cancelable=false eventPhase=2 text="Error #2095" error=ReferenceError: Error #1069]


MINE:
Host: localhost
Connecting...
onBWDone
NetConnection.onStatus [NetStatusEvent type="netStatus" bubbles=false cancelable=false eventPhase=2 info=[object Object]]
Code: NetConnection.Connect.Success
NetConnection.onStatus [NetStatusEvent type="netStatus" bubbles=false cancelable=false eventPhase=2 info=[object Object]]
Code: NetStream.Play.Reset
NetConnection.onStatus [NetStatusEvent type="netStatus" bubbles=false cancelable=false eventPhase=2 info=[object Object]]
Code: NetStream.Play.Start
NetConnection.onStatus [NetStatusEvent type="netStatus" bubbles=false cancelable=false eventPhase=2 info=[object Object]]
Code: NetStream.Play.PublishNotify
Async Error: [AsyncErrorEvent type="asyncError" bubbles=false cancelable=false eventPhase=2 text="Error #2095" error=ReferenceError: Error #1069]


Mondain wrote:
>From what Steven and I found out about MP4, the channel ids didnt matter all that much if at all. For example, RubyIzumi sends all its data on channel 5 (audio, video, and data). BTW I cant tell whats wrong with your code, when I want to construct meta data on the fly I just copy code from the Readers.

Paul

On Tue, Jul 7, 2009 at 8:48 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
Andy, I was looking inside red5, I debuged entire "walk" of packet.

The method's I used is from red5 meta data services (or I think so).

The amazing thing is that when "Three letter encoder" publish, the metadata and videoPackets come inside the same channelld.

When the "RTMPClient" send metadata (with method publishStreamData), it goes inside other channel (Data channel), this is defined in ConnectionConsumer.java.

I tried setting the data to go inside VideoChannel, like below. But don't worked.

I also figured that RTMPClient uses channel 5, and "Three letter encoder" uses channel 4.

case Constants.TYPE_STREAM_METADATA:
                    log.trace("Meta data");
                    Notify notify = new Notify(((Notify) msg).getData().asReadOnlyBuffer());
                    notify.setHeader(header);
                    notify.setTimestamp(header.getTimer());
                    //I set to video for testing
                    video.write(notify);
break;




Andy Shaules wrote:
Why not copy red5's meta data method?
 
 
----- Original Message -----
Sent: Tuesday, July 07, 2009 8:08 AM
Subject: Re: [Red5] Mondain,Art or other semigod! Helping on metadata for live h264 publisher.

Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.


_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://gregoire.org/
http://code.google.com/p/red5/
http://code.google.com/p/blue5/

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by iMDT - Tiago Jacobs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
I get, so, it is not a metadata problem, or better (the metadata problem occurs also with "three letter encoder").

Ok, one day lost, let's try another debugging. Some tips on finding differences?

The ramaining possibility is in VideoData packets.

Thanks,
Tiago

Andy Shaules wrote:
>When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".
FME sends metadata as an 'invoke' call If i remember right.
 
Red5 does not handle @setDataFrame and so meta data sent from FME is sent to clients directly and thus you get your error async error.
 
Your onMetaData function will never be called because red5 is trying to invoke %27@... on the client.
 
Get it? Even if your invoke is correctly structured, red5 fails.
----- Original Message -----
From: tiago@...
Sent: Tuesday, July 07, 2009 8:48 AM
Subject: Re: [Red5] Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

Andy, I was looking inside red5, I debuged entire "walk" of packet.

The method's I used is from red5 meta data services (or I think so).

The amazing thing is that when "Three letter encoder" publish, the metadata and videoPackets come inside the same channelld.

When the "RTMPClient" send metadata (with method publishStreamData), it goes inside other channel (Data channel), this is defined in ConnectionConsumer.java.

I tried setting the data to go inside VideoChannel, like below. But don't worked.

I also figured that RTMPClient uses channel 5, and "Three letter encoder" uses channel 4.

case Constants.TYPE_STREAM_METADATA:
                    log.trace("Meta data");
                    Notify notify = new Notify(((Notify) msg).getData().asReadOnlyBuffer());
                    notify.setHeader(header);
                    notify.setTimestamp(header.getTimer());
                    //I set to video for testing
                    video.write(notify);
break;



Andy Shaules wrote:
Why not copy red5's meta data method?
 
 
----- Original Message -----
Sent: Tuesday, July 07, 2009 8:08 AM
Subject: Re: [Red5] Mondain,Art or other semigod! Helping on metadata for live h264 publisher.

Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflashorg

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflashorg

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflashorg




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org


_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by iMDT - Tiago Jacobs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Art, it is out of my skills, when you have a time, please help me.

Suggestions for project name are welcome!

xglue5publisher  = xuggle + glue + red5 publisher

lol

Art Clarke wrote:
Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by rfkrocktk :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

redxugglue ;)

On Wed, Jul 8, 2009 at 9:46 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
Art, it is out of my skills, when you have a time, please help me.

Suggestions for project name are welcome!

xglue5publisher  = xuggle + glue + red5 publisher

lol


Art Clarke wrote:
Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
And do this, knowing the time, that now it is high time to awake out of sleep;
for now our salvation is nearer than when we first believed.

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by iMDT - Tiago Jacobs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

    Please look at:

        http://code.google.com/p/redxugglue/

    What do you think?

    I will refactor all the code, it's very ugly to commit, I think that a world available code will help on getting help from people and help people deploying streaming applications.

    The redxugglue code will be LGPL, but the Xuggler part is AGPL, so, the people will be able to use the program "AS IS" (who will use the program will be the end-users, not the streaming provider services).

     The integration of the software will be using it "as is", with some configurable parts, like logo, title, etc. The use will not be incorporating it on other commercial projects It will make people contribute to player / streamer, at same time they protect their other work.

    I think that everyone will win with this, contributors needed, interested, please mail-me.

    I am offering a premium ( U$ 200 ) for who make h264 "cam-capture-encode-and-publish" work for the project.


    Thanks so much.

    Tiago


Tyler Kocheran wrote:
redxugglue ;)

On Wed, Jul 8, 2009 at 9:46 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
Art, it is out of my skills, when you have a time, please help me.

Suggestions for project name are welcome!

xglue5publisher  = xuggle + glue + red5 publisher

lol


Art Clarke wrote:
Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
And do this, knowing the time, that now it is high time to awake out of sleep;
for now our salvation is nearer than when we first believed.

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by rfkrocktk :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

since I came up with the name, can I be invited to be a project member? ;)

On Wed, Jul 8, 2009 at 2:43 PM, iMDT - Tiago Jacobs <tiago@...> wrote:
    Please look at:

        http://code.google.com/p/redxugglue/

    What do you think?

    I will refactor all the code, it's very ugly to commit, I think that a world available code will help on getting help from people and help people deploying streaming applications.

    The redxugglue code will be LGPL, but the Xuggler part is AGPL, so, the people will be able to use the program "AS IS" (who will use the program will be the end-users, not the streaming provider services).

     The integration of the software will be using it "as is", with some configurable parts, like logo, title, etc. The use will not be incorporating it on other commercial projects It will make people contribute to player / streamer, at same time they protect their other work.

    I think that everyone will win with this, contributors needed, interested, please mail-me.

    I am offering a premium ( U$ 200 ) for who make h264 "cam-capture-encode-and-publish" work for the project.


    Thanks so much.

    Tiago


Tyler Kocheran wrote:
redxugglue ;)

On Wed, Jul 8, 2009 at 9:46 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
Art, it is out of my skills, when you have a time, please help me.

Suggestions for project name are welcome!

xglue5publisher  = xuggle + glue + red5 publisher

lol


Art Clarke wrote:
Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
And do this, knowing the time, that now it is high time to awake out of sleep;
for now our salvation is nearer than when we first believed.

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
And do this, knowing the time, that now it is high time to awake out of sleep;
for now our salvation is nearer than when we first believed.

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by iMDT - Tiago Jacobs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Sure man, I hope your contributions does not stop here.



Tyler Kocheran wrote:
since I came up with the name, can I be invited to be a project member? ;)

On Wed, Jul 8, 2009 at 2:43 PM, iMDT - Tiago Jacobs <tiago@...> wrote:
    Please look at:

        http://code.google.com/p/redxugglue/

    What do you think?

    I will refactor all the code, it's very ugly to commit, I think that a world available code will help on getting help from people and help people deploying streaming applications.

    The redxugglue code will be LGPL, but the Xuggler part is AGPL, so, the people will be able to use the program "AS IS" (who will use the program will be the end-users, not the streaming provider services).

     The integration of the software will be using it "as is", with some configurable parts, like logo, title, etc. The use will not be incorporating it on other commercial projects It will make people contribute to player / streamer, at same time they protect their other work.

    I think that everyone will win with this, contributors needed, interested, please mail-me.

    I am offering a premium ( U$ 200 ) for who make h264 "cam-capture-encode-and-publish" work for the project.


    Thanks so much.

    Tiago


Tyler Kocheran wrote:
redxugglue ;)

On Wed, Jul 8, 2009 at 9:46 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
Art, it is out of my skills, when you have a time, please help me.

Suggestions for project name are welcome!

xglue5publisher  = xuggle + glue + red5 publisher

lol


Art Clarke wrote:
Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
And do this, knowing the time, that now it is high time to awake out of sleep;
for now our salvation is nearer than when we first believed.

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
And do this, knowing the time, that now it is high time to awake out of sleep;
for now our salvation is nearer than when we first believed.

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: Mondain, Art or other semigod! Helping on metadata for live h264 publisher.

by iMDT - Tiago Jacobs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I made red5 ignore all non VideoData packets, to exclude the possibility of metatags problem.

CHANGES ON org.red5.server.stream.ClientBroadcastStrem.java (to make red5 only accept videoData and only the first).

private Integer m_number_videoDataPAckets = 0;
public void dispatchEvent(IEvent event) {
        if(!event.getClass().getName().contains("VideoData")) return;
        if(m_number_videoDataPAckets > 15) return;
        else m_number_videoDataPAckets++;

Some tips in this way?

DEBUG from red5 console with "thre letter encoder" (that show image);
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - setPublishedName: red5StreamDemo
[INFO] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - Stream start
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: firstPacketTime=0 (abs)
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=0 (absolute)-0 = 0
[INFO] [NioProcessor-2] org.red5.server.stream.VideoCodecFactory - Trying codec org.red5.server.stream.codec.ScreenVideo@82c23d
[INFO] [NioProcessor-2] org.red5.server.stream.VideoCodecFactory - Trying codec org.red5.server.stream.codec.SorensonVideo@9e4585
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=0 (absolute)-0 = 0
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=1635 (absolute)-0 = 1635
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=90 (relative)+1635 = 1725
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=119 (relative)+1725 = 1844
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=56 (relative)+1844 = 1900
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=54 (relative)+1900 = 1954
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=166 (relative)+1954 = 2120
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=36 (relative)+2120 = 2156
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=77 (relative)+2156 = 2233
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=144 (relative)+2233 = 2377
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=126 (relative)+2377 = 2503
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=63 (relative)+2503 = 2566
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=97 (relative)+2566 = 2663
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=76 (relative)+2663 = 2739
[DEBUG] [NioProcessor-2] org.red5.server.stream.ClientBroadcastStream - CBS=@013f99af: rtmpEvent=VideoData  timestamp=55 (relative)+2739 = 2794



DEBUG from red5 console with redxugglue (that dont show image);
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - setPublishedName: red5StreamDemo
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Stream start
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: firstPacketTime=0 (abs)
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=0 (absolute)-0 = 0
[INFO] [NioProcessor-1] org.red5.server.stream.VideoCodecFactory - Trying codec org.red5.server.stream.codec.ScreenVideo@1cc5d23
[INFO] [NioProcessor-1] org.red5.server.stream.VideoCodecFactory - Trying codec org.red5.server.stream.codec.SorensonVideo@1f6d2e3
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=67 (absolute)-0 = 67
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=66 (relative)+67 = 133
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=67 (relative)+133 = 200
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=67 (relative)+200 = 267
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=66 (relative)+267 = 333
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=67 (relative)+333 = 400
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=67 (relative)+400 = 467
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=66 (relative)+467 = 533
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=67 (relative)+533 = 600
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=67 (relative)+600 = 667
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=66 (relative)+667 = 733
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=67 (relative)+733 = 800
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=67 (relative)+800 = 867
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=66 (relative)+867 = 933
[DEBUG] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - CBS=@0165ab39: rtmpEvent=VideoData  timestamp=67 (relative)+933 = 1000





Mondain wrote:
>From what Steven and I found out about MP4, the channel ids didnt matter all that much if at all. For example, RubyIzumi sends all its data on channel 5 (audio, video, and data). BTW I cant tell whats wrong with your code, when I want to construct meta data on the fly I just copy code from the Readers.

Paul

On Tue, Jul 7, 2009 at 8:48 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
Andy, I was looking inside red5, I debuged entire "walk" of packet.

The method's I used is from red5 meta data services (or I think so).

The amazing thing is that when "Three letter encoder" publish, the metadata and videoPackets come inside the same channelld.

When the "RTMPClient" send metadata (with method publishStreamData), it goes inside other channel (Data channel), this is defined in ConnectionConsumer.java.

I tried setting the data to go inside VideoChannel, like below. But don't worked.

I also figured that RTMPClient uses channel 5, and "Three letter encoder" uses channel 4.

case Constants.TYPE_STREAM_METADATA:
                    log.trace("Meta data");
                    Notify notify = new Notify(((Notify) msg).getData().asReadOnlyBuffer());
                    notify.setHeader(header);
                    notify.setTimestamp(header.getTimer());
                    //I set to video for testing
                    video.write(notify);
break;




Andy Shaules wrote:
Why not copy red5's meta data method?
 
 
----- Original Message -----
Sent: Tuesday, July 07, 2009 8:08 AM
Subject: Re: [Red5] Mondain,Art or other semigod! Helping on metadata for live h264 publisher.

Sorry Tiago, but I don't have time to look at this right now.

On Tue, Jul 7, 2009 at 7:49 AM, iMDT - Tiago Jacobs <tiago@...> wrote:
    People, I don't care if it take a week to be replied, just put "reply to Tiago" in your todo list :D

    It will be a big improvement for everyone using red5 (and not much revolutionaire, because all work was done by paul, with their mp4 code and by art with xuggler), just putting some glue on this pieces.

    Thanks so much.


iMDT - Tiago Jacobs wrote:
SURPRISE! with "three letters other encoder"  it's also give error, and the codecid is 7, when "three letters other encoder" got closed, it restarted with vp6.

But no, it's not working yet, any help will be appreciated.

            Notify createdNotify = new Notify();
            createdNotify.setTimestamp((int) System.currentTimeMillis());
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009");
            props2.put("videocodecid", (java.lang.Integer) 7);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("avcprofile", (java.lang.Integer) 66);
            props2.put("avclevel", (java.lang.Integer) 31);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
            _client.publishStreamData(streamId, msg2);

iMDT - Tiago Jacobs wrote:
It's known by everyone that i am working on a opensource live encoder, it's ugly and dirty code for now, just to figure the work, after this, i'll rewrite everythin on a beauty code.

Please, may I give a bit of your attention?

I am writing a publisher of H264 live content, and I am having problems with metadata.

I got the packets generated by other "well known encoder" that comes to "ClientBroadcastStream" and deserialized them.

I maked a "reverse" of this, serializing the new packets.

When packet arrive client (the publisher application) I got: "19:52:45:911 - Asynchronous code error - ReferenceError: Error #1069".

Have you seen this error?

I never created a packet from scratch on my whole life, so, it's possible that the error is obvious.

_client is a simple RTMPClient with "published" state (some code from StreamingProxy).

Look my created packet:

            Notify createdNotify = new Notify();
           
            IoBuffer buf2 = IoBuffer.allocate(1024);
            buf2.setAutoExpand(true);
            Output out2 = new Output(buf2);

            out2.writeString("@setDataFrame");
            out2.writeString("onMetaData");
           
            Map<Object, Object> props2 = new HashMap<Object, Object>();
            props2.put("videokeyframe_frequency",  (java.lang.Integer) 5);
            props2.put("videodevice", "Microsoft LifeCam VX-1000");
            props2.put("keywords", "");
            props2.put("width", (java.lang.Integer) 320);
            props2.put("videodatarate", (java.lang.Integer) 200);
            props2.put("presetname", "Medium Bandwidth (300 Kbps) - H.264");
            props2.put("copyright", "");
            props2.put("creationdate", "Mon Jul 06 18:22:19 2009\n");
            props2.put("videocodecid", (java.lang.Integer) 4);
            props2.put("author", "");
            props2.put("title", "");
            props2.put("height", (java.lang.Integer) 240);
            props2.put("description", "");
            props2.put("rating", "");
            props2.put("framerate", Double.parseDouble("15"));

           
            out2.writeMap(props2, new Serializer());
            buf2.flip();

            createdNotify.setData(out2.buf());
            RTMPMessage msg2 = new RTMPMessage();
            msg2.setBody(createdNotify);
                      
            _client.publishStreamData(streamId, msg2);


_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://www.xuggle.com/
xu‧ggle (zŭ' gl) v. To freely encode, decode, and experience audio and video.

Use Xuggle to get the power of FFmpeg in Java.


_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org




--
http://gregoire.org/
http://code.google.com/p/red5/
http://code.google.com/p/blue5/

_______________________________________________ Red5 mailing list Red5@... http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org