Abstract:
A method of verifying the transmission of audio content in a media stream may comprise receiving from a server a portion of a media stream having a first audio file format, processing the media stream portion to obtain data values, and determining if any of the data values fall outside of a pre-determined range of data values. A system for verifying the transmission of audio content may comprise a computer connected to a server over a network, and the computer may be adapted to receive from the server a portion of a media stream having a first audio file format, process the media stream portion to obtain a set of data values, determine the highest absolute data value of the set and compare the highest absolute data value to a data value corresponding to audio silence.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority to U.S. Provisional Application No. 61/029,541 filed Feb. 18, 2008, the disclosure of which is incorporated herein by reference. 
    
    
     COPYRIGHT NOTICE 
     This application contains material that is subject to copyright protection. Such material may be reproduced by any person exactly as it appears in the Patent and Trademark Office patent files or records. The copyright owner otherwise reserves all rights to such material. 
     FIELD 
     This application generally relates to information technology in the field of Internet broadcasting, and more particularly to media stream monitoring. 
     BACKGROUND 
     In the field of Internet broadcasting, it is often difficult for broadcasters to readily determine if a network connection is established, or, if connected, whether media content is actually being streamed. Typically, a user, such as a broadcaster, may attempt to connect to a streaming server&#39;s port and listen for a media stream to determine streaming media existence and quality. There exists a need for a more efficient system and method for media stream monitoring and analysis. 
     SUMMARY 
     A method of verifying the transmission of audio content in a media stream may comprise receiving from a server a portion of a media stream having a first audio file format, processing the media stream portion to obtain data values, and determining if any of the data values fall outside of a pre-determined range of data values. A system for verifying the transmission of audio content may comprise a computer connected to a server over a network, and the computer may be adapted to receive from the server a portion of a media stream having a first audio file format, process the media stream portion to obtain a set of data values, determine the highest absolute data value of the set and compare the highest absolute data value to a data value corresponding to audio silence. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  depicts an embodiment of a system that may be used for media stream monitoring. 
         FIG. 2  is a flow chart of one embodiment of a method for media stream monitoring. 
         FIG. 3  is a flow chart of one embodiment of a method for processing an audio sample for silence. 
         FIG. 4  is a flow chart of one embodiment of a method for processing an audio sample for spectral noise signatures in an embodiment of the present invention. 
         FIGS. 5A and 5B  depict one embodiment of a screen shot of a user interface. 
         FIG. 6  is one embodiment of a screen shot of an interface providing access to a plurality of media streams. 
         FIGS. 7A and 7B  depict one embodiment of a screen shot of a user interface. 
         FIG. 8  is one embodiment of a screen shot of a user interface. 
     
    
    
     DETAILED DESCRIPTION 
     A system and method for monitoring and analyzing one or more media streams is described. As shown in  FIG. 1 , a monitoring server  10  may be provided to monitor and analyze one or more streaming servers for media streams. In the embodiment of  FIG. 1 , streaming servers  12 ,  14 , and  16  may each provide one or more media streams. In one embodiment, the media streams may be Internet-based music streams, such as those provided by Internet radio stations. Those skilled in the art will recognize that the media streams may comprise audio, video, data or text, or various combinations thereof. A user may use a user computer  18  or other device (such as a laptop, cell phone, PDA or portable electronic device) to access the media streams transmitted by streaming servers  12 ,  14 , and  16 . Those skilled in the art will also recognize that the system and method may be used with networks other than the Internet, and that the server arrangement of  FIG. 1  is exemplary. Those skilled in the art will further recognize that Web servers or other suitable streaming media computers may be used, as well, and that a PC may just as easily be used in place of a monitoring server  10 . 
     Referring to the embodiment of  FIG. 1  and  FIG. 6 , an interface  100  may be displayed on user computer  18  to provide the user with access a plurality of media streams, through links to the URL of the media stream. In the embodiment of  FIG. 6 , the user interface  100  may include a web page that provides links to various media streams. For example and not by way of limitation, streaming server  12  may provide an Internet-based music stream, named Al&#39;s Music Mart, that comprises a variety of music from the 80s to today. The user interface  100  may provide a link  102  to the Al&#39;s Music Mart stream. A user may click on the Al&#39;s Music Mart link  102  in order to connect the user&#39;s computer  18  to streaming server  12 . Similarly, an Alternative link  104  may be provided to allow the user to connect the user&#39;s computer  18  to streaming server  14  in order to receive and listen to an alt-rock music stream. Other links may be provided for access other media streams, such as an Americana NewGrass link  106  that may connect computer  18  to streaming server  16 . 
     A broadcaster of media streams, such as a radio station broadcasting via the Internet, may also access the media streams that it broadcasts in the same way that the users may. For example, the broadcaster of the Al&#39;s Music Mart stream may access streaming server  12  as would a user. As is known, the broadcaster may thereby verify that streaming server  12  is actually streaming content, and that the streamed content has the expected quality. As noted above, however, that method of monitoring and analyzing media streams is inefficient, particularly if the broadcaster provides multiple media streams from multiple streaming servers. In contrast, the system and method described herein may allow a broadcaster to self-monitor and analyze its own media streams much more efficiently. 
     Referring to  FIGS. 1-2 , one embodiment of a method of media stream monitoring may include determining the media stream type based on the URL of the media stream as indicated at  20 . That may be accomplished, for example, by determining from the streaming server the MIME type of the media stream. Alternatively, the media stream type may be determined by issuing a request to the streaming server asking for “content type” HTTP headers. A stream type may include but is not limited to Microsoft&#39;s Media Services (MMS) and Real Time Streaming Protocol (RTSP). A monitoring server  10  may initiate a connection with one of streaming servers  12 ,  14  or  16  ports using a Transmission Control Protocol (TCP) connection as indicated at  22 . Those skilled in the art will recognize that other protocols, such as User Datagram Protocol (UDP), may also be used. If a connection is not made with a streaming server (decision box  24 ), a connection may be initiated again as indicated at  34 . If a connection is still not made (decision box  36 ), an error message may be logged that the connection cannot be made as indicated at  38 . If a connection is made (decision box  24  or  36 ), the monitoring server  10  may attempt to receive or download one or more samples or portions of a media stream (such as music audio content) as indicated at  26 . For example, the monitoring server may receive a two-second portion of the media stream. If no data can be received (decision box  28 ), an error message may be logged that it was not possible to download any data as indicated at  40 . If a sample of the media stream is received (decision box  28 ), the samples may be converted to a preferred file format, including but not limited to WAV file format as indicated at  30 . Those skilled in the art will recognize that the file format may be uncompressed, lossless, lossy or otherwise suitable for processing. The WAV samples may be processed as indicated at  32 . 
     Referring now to  FIG. 3 , the media sample (in this example, an audio sample) may be processed to determine if it is silent or near silent. The sample may be opened and a numeric data value may be obtained for the samples after skipping over any headers as indicated at  52 . The data values may represent volume level, for example, or indicate the presence (or lack thereof) of video or other content. For media streams that include audio, the left and right audio channels may be checked for silence or near silence, as defined to be a numeric data value above a set threshold or outside a selected range, as indicated at  54 . If the samples are found to be at or near silence (decision box  56 ), an error message may be logged as indicated at  58 . If the sample is found to not be silent or near silent (decision box  56 ), checking for silence may be stopped as indicated at  60 . In one embodiment, the media stream may be processed to obtain Pulse Code Modulation (PCM) data values. Such values may, for audio samples, may indicate volume. For example, the range for silence may be designated as a PCM data value range of −50 to 50, where complete silence is a value of 0. If PCM data values of the processed media stream sample fall outside that range, that may serve as an indication that the media stream actually contains media content. Those skilled in the art will recognize that other ranges may be selected above the data value for complete silence or a value for complete silence may be selected. 
     In one example, if an Internet radio station makes a streaming connection with a server, but the media stream packets contain no audio or other intended content, monitoring server obtains a sample of the media stream and processes it to obtain PCM data values that indicate audio volume. If the PCM values are at or near silence (i.e., at or near a PCM data value of 0), or otherwise fall within a designated range for silence (e.g., between −50 and 50), the monitoring server may be able to detect if the media stream sample (and inferentially the rest of the media stream) contains audio content. If no audio content is detected (e.g., the PCM data values are within the designated range for silence), then the monitoring server may send an alert or notification, such as an email, to the Internet radio station operator. 
     Referring to  FIG. 4 , a sample may be analyzed for spectral noise signatures. In one embodiment, the sample may be broken down into multiple bands as indicated at  64 . The content of each band may be analyzed for spectral noise signatures as indicated at  66 . For example, PCM values could be used to detect certain tones. Those skilled in the art will recognize that PCM or other data values may pertain to the frequency and/or amplitude of audio or other content. 
     In another embodiment, a video sample may be processed to check if Artist and Title data at least partially matches. In addition, a video or audio sample, or a combination thereof, may be processed to determine if copyright warning information or a particular watermark is attached. In some embodiments, a video sample may be broken down into component video to analyze whether a live video signature, a blank screen, or all noise is present. Those skilled in the art will recognize that PCM values may be used for that purpose. A component video may be captured and saved for later human review of the component video if, for example, a blank screen or all noise was determined to be present. 
     Referring now to  FIGS. 5A and 5B , in some embodiments, a user interface  108  may be provided to manage a plurality of media streams being monitored using the system and method described herein. Those skilled in the art will recognize that a server may provide more than one media stream, and that various media streams may pertain to various radio markets. Radio markets may be categorized by demographics, location, interests, and the like. In one embodiment, the user interface may be web-based and may be used to assign streaming to users and keep track of errors, such as errors in connecting to the stream or silence-related errors. When Static Streams button  90  is selected, a listing of all static streams (i.e., streams from a static IP address) being monitored may appear in user interface  108 . A Shortname column  70  may provide an abbreviated name for each media stream. A URL column  72  may provide the URL for each media stream. A repeatsilencewaming column  74  may provide either a 1 (true) or a 0 (false), where a 1 means that an email or other type of notification will be sent to a user every time the system detects silence, and a 0 means an email or other type of notification will be sent to a user only the first time the system detects silence. A Markets column  78  may provide one or more user names and email addresses for users in a market that are assigned to the stream, for the system to use for sending notifications. Such users may be, for example, the radio station from which the stream originates, and/or the radio stations in markets served by the stream. An options column  80  may provide a Show button  81  for showing the users and email addresses and what markets each stream is in. An Edit button  83  may be provided for editing that user information, and a Destroy button  85  may be provided for removing the stream information. Of course, other functions may be provided in an options column  80 . A similar display may be provided when a user selects the Dynamic Streams button  94 . 
     When the Server button  92  is selected, a screen such as that shown in  FIG. 8  may appear with a listing of one or more streaming servers. A streaming server may be identified by its IP address in IP column  120 , while a new streaming server may be added by clicking the New Server button  128 . Information about a particular streaming server may be displayed by clicking the Show button  122 , edited with the Edit button  124 , or deleted from the system with the Destroy button  126 . 
     Referring now to  FIG. 5A ,  FIG. 5B ,  FIG. 7A ,  FIG. 7B , and  FIG. 8 , when the Markets button  96  is selected, the screen shown in  FIGS. 7A and 7B  may appear listing all users utilizing the system. The name of a user may appear in the Name column  118 , one or more email addresses assigned to the user may appear in the Email To column  98 , while the email address where notifications from the system originate may be provided in the Email From column  110 . A Silence column  111  may have a 1 to set the system to check for silence, and have a 0 to set the system to not check for silence. A Connectivity column  112  may provide a 1 to set the system to check for connectivity and a 0 if the system is not set to check for connectivity. A Connectcount column  114  may provide the number of connectivity errors that need to occur before a notification is sent to a user. A Server column  116  may provide one or more streaming servers assigned to a user. A Show button  130  may display details of a user, an Edit button  132  may allow a user&#39;s information to be edited, while a Destroy button  134  may allow a user to be deleted from the system. When the Login button  82  is selected, a user may login to interface  108  to access and edit the information contained therein. When the Logout button  84  is selected, a user may log out of interface  108 . When the Signup button  84  is selected, a new user may sign up to have access to the user interface. As noted above, when the Dynamic Streams button  94  is selected, a screen (not shown) may appear listing all dynamic streams being monitored, i.e. streams whose URLs are subject to change. Dynamic URLs may be used to prevent listeners from directly linking to a URL and force them to use a particular media player in order to listen (or view, or otherwise access, as the case may be) to the stream. 
     Although the foregoing specific details describe certain embodiments of this invention, persons having ordinary skill in the art will recognize that various changes may be made in the details of this invention without departing from the spirit and scope of the invention as defined in the appended claims. Therefore, it should be understood that this invention is not to be limited to the specific details shown and described herein.