1. A method for inserting secondary content into a media stream having primary content, the method comprising: at a processor, dividing the media stream comprising a plurality of frames into a plurality of shots; assigning visual concept labels to shots of the plurality of shots to produce a sequence of visual concept labels; grouping consecutive shots from the plurality of shots into a plurality of scenes, each scene comprising a cluster of interrelated shots in accordance with the sequence of visual concept labels; generating a first list of insertion points between the frames for introducing the secondary content, wherein the insertion points of the first list are boundaries between consecutive scenes in the plurality of scenes; generating an average insertion point saliency of the media stream at the insertion points of the first list; generating a second list of insertion points between the frames, wherein the insertion points are arranged in the second list to maximize a function of the average insertion point saliency and a distance in frames between each insertion point in the second list with other insertion points in the second list, and wherein the function is: ∑ I j ∈ Ins ⁢ dist ⁡ ( I i , I j ) · X ⁡ ( I i ) , ∀ I i ∈ Ins , wherein dist(I i ,I j ) is a metric for a distance between a first insertion point I i and a second insertion point I j , wherein Ins is the first list of insertion points, and wherein X(I i ) is the average insertion point saliency; wherein generating the average insertion point saliency of the media stream at the insertion points in the first list comprises selecting a first insertion point from the first list having a highest value of the function as the first insertion point of the second list; and inserting one or more other media streams into the media stream in accordance with an insertion point order in the second list.