[Helix-client-dev] Recording Real Audio Content

[Helix-client-dev] Recording Real Audio Content

Eric Hyche ehyche at real.com
Wed Mar 14 05:18:21 PDT 2007


Actually what I meant was stepping through
rmfformat when you play back the recorded file
to see what it doesn't like about it...

But to answer your question: rmfformat is
only used on the client for http:// and file://
URLs - otherwise, the RTSP stack is used and
not a fileformat plugin.

Eric

=============================================
Eric Hyche (ehyche at real.com)
Technical Lead
RealNetworks, Inc.  

> -----Original Message-----
> From: John Stirling [mailto:js at reciva.com] 
> Sent: Wednesday, March 14, 2007 5:48 AM
> To: ehyche at real.com
> Cc: helix-client-dev at lists.helixcommunity.org
> Subject: Re: [Helix-client-dev] Recording Real Audio Content
> 
> I've started trawling through rmfformat...
> 
> I've inserted a few prints to see what the initial file header looks 
> like in both cases (http:// recorded file and rtsp:// live stream).
> 
> eg in CRealMediaFileFormat::RIFFReadDone
> 
> I can see the data when playing via http:// but nothing seems to come 
> out on the rtsp:// case. Is the header info transmitted 
> differently in 
> the rtsp:// case ?
> 
> John
> 
> 
> 
> 
> Eric Hyche wrote:
> 
> >John,
> >
> >One thing that jumps out at me off the top
> >of my head is the mime type. Here's an rmdump
> >output of your recorded live file:
> >
> >      92 MDPR size=      603 objver=0
> >
> >         Stream Number:    0
> >         Max Bit Rate:     44100
> >         Avg Bit Rate:     44100
> >         Max Packet Size:  640
> >         Avg Packet Size:  640
> >         Start Time:       0
> >         Preroll:          0
> >         Duration:         4527
> >         Stream Name:      Audio Stream
> >         Mime Type:        audio/x-pn-multirate-realaudio-live
> >
> >If you are actually recording multirate, then you
> >would have multiple MDPR's here, but I only see one.
> >So if you are really only recording one stream, I would
> >just have the mime type be audio/x-pn-realaudio (and
> >drop the "multirate" and the "live" part).
> >
> >Try fixing that, and if it still won't play, I would
> >step through rmfformat and see what is going wrong.
> >(I'm almost certain there's something that rmfformat
> >doesn't like...)
> >
> >Eric
> >
> >=============================================
> >Eric Hyche (ehyche at real.com)
> >Technical Lead
> >RealNetworks, Inc.  
> >
> >  
> >
> >>-----Original Message-----
> >>From: John Stirling [mailto:js at reciva.com] 
> >>Sent: Tuesday, March 13, 2007 11:15 AM
> >>To: ehyche at real.com
> >>Cc: helix-client-dev at lists.helixcommunity.org
> >>Subject: Re: [Helix-client-dev] Recording Real Audio Content
> >>
> >>I've unpacked via RuleToFlagMap as suggested, but still can't 
> >>get it to 
> >>play. When I try to play it via splay it starts up and looks 
> >>like it's 
> >>playing but no audio. It then stops after the expected 
> track duration 
> >>and closes without reporting any errors.
> >>
> >>Everything in the header looks ok to me, so not sure why this 
> >>isn't playing.
> >>
> >>If you had time to have a quick look to see if you see anything 
> >>obviously wrong that would be useful
> >>
> >>This was recorded via a local http server and plays back ok 
> on splay :
> >>http://copper.reciva.com/recorded_1a.ra
> >>
> >>This was recorded via live stream 
> >>http://www.bbc.co.uk/radio1/realaudio/media/r1live.ram. It 
> plays back 
> >>silence via splay :
> >>http://copper.reciva.com/recorded_1b.ra
> >>
> >>
> >>Both recorded files have the following headers
> >>
> >>1. Real Media File Header (.RMF)
> >>2. Properties Header (PROP)
> >>3. Media Properties Header (MDPR) (x1)
> >>4. Content Description Header (CONT)
> >>5. Data Chunk Header (DATA)
> >>
> >>John
> >>
> >>
> >>
> >>
> >>Eric Hyche wrote:
> >>
> >>    
> >>
> >>>That sounds right.
> >>>
> >>>Eric
> >>>
> >>>=============================================
> >>>Eric Hyche (ehyche at real.com)
> >>>Technical Lead
> >>>RealNetworks, Inc.  
> >>>
> >>> 
> >>>
> >>>      
> >>>
> >>>>-----Original Message-----
> >>>>From: John Stirling [mailto:js at reciva.com] 
> >>>>Sent: Monday, March 12, 2007 2:00 PM
> >>>>To: ehyche at real.com
> >>>>Cc: helix-client-dev at lists.helixcommunity.org
> >>>>Subject: Re: [Helix-client-dev] Recording Real Audio Content
> >>>>
> >>>>So if that bit is set, then I write flags = 2 to the 
> output file ? 
> >>>>Otherwise flags = 0 ?
> >>>>
> >>>>John
> >>>>
> >>>>
> >>>>
> >>>>Eric Hyche wrote:
> >>>>
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>John,
> >>>>>
> >>>>>Since I'm seeing rules like 8 and 9, then this
> >>>>>looks like a SureStream file. So you can't always
> >>>>>look for rule 0.
> >>>>>
> >>>>>However, what you can do is look for the 
> >>>>>stream header property called "RMFF 1.0 Flags" and
> >>>>>unpack that into a RuleToFlagMap found in
> >>>>>common/include/rule2flg.h. Then once you've
> >>>>>unpacked that, then you can simply take the
> >>>>>ASM rule number from the IHXPacket plug it
> >>>>>into the RuleToFlagMap. If the resulting flag
> >>>>>you get out has the keyframe bit set (look
> >>>>>for HX_KEYFRAME_FLAG in common/include/hxpacketflags.h),
> >>>>>then you know this is a keyframe.
> >>>>>
> >>>>>Eric 
> >>>>>
> >>>>>=============================================
> >>>>>Eric Hyche (ehyche at real.com)
> >>>>>Technical Lead
> >>>>>RealNetworks, Inc.  
> >>>>>
> >>>>>
> >>>>>
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>>>-----Original Message-----
> >>>>>>From: John Stirling [mailto:js at reciva.com] 
> >>>>>>Sent: Monday, March 12, 2007 1:29 PM
> >>>>>>To: ehyche at real.com
> >>>>>>Cc: helix-client-dev at lists.helixcommunity.org
> >>>>>>Subject: Re: [Helix-client-dev] Recording Real Audio Content
> >>>>>>
> >>>>>>I've managed to record a section of a real audio track 
> >>>>>>       
> >>>>>>
> >>>>>>            
> >>>>>>
> >>>>streamed via a 
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>>local http server.
> >>>>>>
> >>>>>>Table below shows:
> >>>>>>ASMFlags - reported via pPacket->GetASMFlags()
> >>>>>>ASMRule - reported via pPacket->GetASMRuleNumber()
> >>>>>>DPHflags - flags written out to DataPacketHeader
> >>>>>>
> >>>>>>It only works if you wait for ASMRule == 0 
> (KEYFRAME_RULE) before 
> >>>>>>writing the first packet
> >>>>>>
> >>>>>>| ASMFlags | ASMRule | DPHflags |
> >>>>>>---------------------------------
> >>>>>>| 3 | 0 | 2 |
> >>>>>>| 3 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 3 | 0 | 2 |
> >>>>>>| 3 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>| 2 | 1 | 0 |
> >>>>>>
> >>>>>>
> >>>>>>I can't get it working on a live stream (eg 
> >>>>>>http://www.bbc.co.uk/radio1/realaudio/media/r1live.ram)
> >>>>>>
> >>>>>>| ASMFlags | ASMRule | DPHflags |
> >>>>>>---------------------------------
> >>>>>>| 1 | 8 | 2 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 8 | 2 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>| 1 | 9 | 0 |
> >>>>>>
> >>>>>>
> >>>>>>When I attempt to play the track on a PC it says 
> 'Player needs to 
> >>>>>>download new software to play this clip', and then it does an 
> >>>>>>update on 
> >>>>>>real player and fails to play the track.If I try to play the 
> >>>>>>track via 
> >>>>>>splay it reports error missing plguins : 0x80040011. Is there 
> >>>>>>something 
> >>>>>>that prevents recording of live streams ?
> >>>>>>
> >>>>>>John
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>John Stirling wrote:
> >>>>>>
> >>>>>>  
> >>>>>>
> >>>>>>       
> >>>>>>
> >>>>>>            
> >>>>>>
> >>>>>>>Eric Hyche wrote:
> >>>>>>>
> >>>>>>>    
> >>>>>>>
> >>>>>>>         
> >>>>>>>
> >>>>>>>              
> >>>>>>>
> >>>>>>>>John,
> >>>>>>>>
> >>>>>>>>The ASM flags are not transmitted over the UDP packets.
> >>>>>>>>So you have to reconstruct them, and it can be kind of
> >>>>>>>>tricky.
> >>>>>>>>
> >>>>>>>>Just to make sure I understand what you are doing - you have 
> >>>>>>>>implemented recording by implementing
> >>>>>>>>IHXRecordService? So the packets you are recording are
> >>>>>>>>getting passed to you from the client engine? Or did
> >>>>>>>>you implement this in some other way?
> >>>>>>>>      
> >>>>>>>>
> >>>>>>>>           
> >>>>>>>>
> >>>>>>>>                
> >>>>>>>>
> >>>>>>>Yes, we've implemented IHXRecordService.
> >>>>>>>
> >>>>>>>    
> >>>>>>>
> >>>>>>>         
> >>>>>>>
> >>>>>>>              
> >>>>>>>
> >>>>>>>>Are you writing
> >>>>>>>>the file out via IHXFileWriter?
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>      
> >>>>>>>>
> >>>>>>>>           
> >>>>>>>>
> >>>>>>>>                
> >>>>>>>>
> >>>>>>>No, we're not using IHXFileWriter.
> >>>>>>>
> >>>>>>>    
> >>>>>>>
> >>>>>>>         
> >>>>>>>
> >>>>>>>              
> >>>>>>>
> >>>>>>>>If you implemented it via IHXRecordService, then you 
> >>>>>>>>                
> >>>>>>>>
> >>may have to 
> >>    
> >>
> >>>>>>>>fiddle with the ASM flags to
> >>>>>>>>get them right. You may want to look at the file
> >>>>>>>>datatype-restricted/rm/fileformat/intrstrm.cpp
> >>>>>>>>in the method FillOnePacket() to see how the
> >>>>>>>>RealMedia file format sets the ASM flags.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>      
> >>>>>>>>
> >>>>>>>>           
> >>>>>>>>
> >>>>>>>>                
> >>>>>>>>
> >>>>>>>OK I'll have a look.
> >>>>>>>
> >>>>>>>    
> >>>>>>>
> >>>>>>>         
> >>>>>>>
> >>>>>>>              
> >>>>>>>
> >>>>>>>>Eric
> >>>>>>>>
> >>>>>>>>=============================================
> >>>>>>>>Eric Hyche (ehyche at real.com)
> >>>>>>>>Technical Lead
> >>>>>>>>RealNetworks, Inc.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>      
> >>>>>>>>
> >>>>>>>>           
> >>>>>>>>
> >>>>>>>>                
> >>>>>>>>
> >>>>>>>>>-----Original Message-----
> >>>>>>>>>From: helix-client-dev-bounces at helixcommunity.org 
> >>>>>>>>>[mailto:helix-client-dev-bounces at helixcommunity.org] On 
> >>>>>>>>>             
> >>>>>>>>>
> >>>>>>>>>                  
> >>>>>>>>>
> >>>>Behalf Of 
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>>>>>John Stirling
> >>>>>>>>>Sent: Thursday, March 08, 2007 12:31 PM
> >>>>>>>>>To: helix-client-dev at lists.helixcommunity.org
> >>>>>>>>>Subject: [Helix-client-dev] Recording Real Audio Content
> >>>>>>>>>
> >>>>>>>>>We're attempting to record real audio content - we've got 
> >>>>>>>>>        
> >>>>>>>>>
> >>>>>>>>>             
> >>>>>>>>>
> >>>>>>>>>                  
> >>>>>>>>>
> >>>>>>a recorded 
> >>>>>>  
> >>>>>>
> >>>>>>       
> >>>>>>
> >>>>>>            
> >>>>>>
> >>>>>>>>>file that looks pretty much like the original file, 
> >>>>>>>>>                  
> >>>>>>>>>
> >>but it won't 
> >>    
> >>
> >>>>>>>>>play. The problem seems to be with the flags field 
> in the data 
> >>>>>>>>>packet headers. How do we know what to set the flags 
> field to ?
> >>>>>>>>>
> >>>>>>>>>If we manually edit the recorded file and set the first 
> >>>>>>>>>        
> >>>>>>>>>
> >>>>>>>>>             
> >>>>>>>>>
> >>>>>>>>>                  
> >>>>>>>>>
> >>>>>>data packet 
> >>>>>>  
> >>>>>>
> >>>>>>       
> >>>>>>
> >>>>>>            
> >>>>>>
> >>>>>>>>>header Flags field = 2, we at least get some audible 
> >>>>>>>>>             
> >>>>>>>>>
> >>>>>>>>>                  
> >>>>>>>>>
> >>>>content, but 
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>>>>>there are glitches.
> >>>>>>>>>
> >>>>>>>>>There is flags information available in
> >>>>>>>>>pPacket->GetASMFlags()
> >>>>>>>>>pPacket->GetASMRuleNumber()
> >>>>>>>>>
> >>>>>>>>>but this doesn't seem to match up with the original file:
> >>>>>>>>>
> >>>>>>>>>1. flags in original file = 0,2
> >>>>>>>>>2. asm flags reported = 2,3
> >>>>>>>>>
> >>>>>>>>>Any ideas ?
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>John
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>_______________________________________________
> >>>>>>>>>Helix-client-dev mailing list
> >>>>>>>>>Helix-client-dev at helixcommunity.org
> >>>>>>>>>http://lists.helixcommunity.org/mailman/listinfo/helix-
> >>>>>>>>>                  
> >>>>>>>>>
> >>client-dev
> >>    
> >>
> >>>>>>>>>        
> >>>>>>>>>
> >>>>>>>>>             
> >>>>>>>>>
> >>>>>>>>>                  
> >>>>>>>>>
> >>>>>>>>      
> >>>>>>>>
> >>>>>>>>           
> >>>>>>>>
> >>>>>>>>                
> >>>>>>>>
> >>>>>>>_______________________________________________
> >>>>>>>Helix-client-dev mailing list
> >>>>>>>Helix-client-dev at helixcommunity.org
> >>>>>>>http://lists.helixcommunity.org/mailman/listinfo/helix-
> client-dev
> >>>>>>>    
> >>>>>>>
> >>>>>>>         
> >>>>>>>
> >>>>>>>              
> >>>>>>>
> >>>>>>  
> >>>>>>
> >>>>>>       
> >>>>>>
> >>>>>>            
> >>>>>>
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>> 
> >>>
> >>>      
> >>>
> >
> >  
> >
> 




More information about the Helix-client-dev mailing list
 

Site Map   |   Terms of Use   |   Privacy Policy   |   Contact Us

Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.