1. A method for video program recognition on a server system, comprising: recording, by the server system, video sequences of each of a plurality of channels, wherein the video sequences of each of the plurality of channels are formed by interleaved segments of camera takes filmed with a plurality of original camera setups, and a camera take is a series of frames filmed with one camera setup; performing, by the server system, a camera registration operation on the video sequences of each of the plurality of channels to select a plurality of video frames representing the recorded video sequences of each of the plurality of channels based on key video frames from a plurality of registered cameras associated with the recorded video sequences; extracting features of at least some of the selected plurality of video frames of each of the plurality of channels; storing the extracted features of each of the plurality of channels; obtaining a set of features of an image captured by a first user device of a video frame from one of the plurality of channels and played on a second user device different from the first user device; comparing the obtained set of features of the image with the stored features of each of the plurality of channels using an image classifier to determine whether there is a match between the obtained set of features of the image and features of a video frame from a specific channel; and when there is a match between the obtained set of features of the image and features of a video frame from a specific channel, determining a channel number of the specific channel as a recognized channel number; wherein performing the camera registration operation further includes: detecting camera takes in the recorded video sequences of each of the plurality of channels such that the recorded video sequences are separated into a number of sequences with each corresponding to a registered camera that is aligned to one of the plurality of the original camera setups; forming a registered camera pool of camera takes for the detected camera takes for each of the plurality of channels; calculating frame difference between consecutive frames using one of a plurality of algorithms; detecting a new video shot when the frame difference is above a preset threshold value; selecting a key frame to represent visual content of each detected video shot; matching the key frame with a last shot of each registered camera based on a matching criterion, wherein when a registered camera is initially detected, a first shot is used as the last shot of the registered camera; and when the matching criterion is satisfied, adding the key frame to an end of the matching camera take.