views:

22

answers:

2

I've compiled an MTS video into MP4 format using FFMPEG. The video is 2 minutes long.

I want to be able to play the video back but start at 0:15 seconds and end at 0:45 seconds. Effectively I want the playback software to only show 30 seconds of playback available. The software must be a Flash-based application for integration into HTML.

Does anyone know any software that'll do this? Thanks in advance.

A: 
<?xml version="1.0" encoding="utf-8"?>

http://blog.flexexamples.com/2007/08/05/building-a-basic-controller-for-the-videodisplay-control/ -->

<mx:Style>
    @font-face {
        src:url("assets/arial.ttf");
        font-family: Arial;
    }

    .timeStyle {
        color: #FFFFFF;
        font-family: Arial;
        font-size: 12;
    }

    .playPauseStyle {
        /* play button skins */
        skin: Embed('assets/control_play.png');
        downSkin: Embed('assets/control_play_blue.png');

        /* pause button skins */
        selectedUpSkin: Embed('assets/control_pause.png');
        selectedOverSkin: Embed('assets/control_pause.png');
        selectedDownSkin: Embed('assets/control_pause_blue.png');
    }

    .stopStyle {
        skin: Embed('assets/control_stop.png');
        downSkin: Embed('assets/control_stop_blue.png');
    }

    .controllerStyle {
        bottom: 5;
        left: 5;
        right: 5;
        paddingBottom: 5;
        paddingLeft: 5;
        paddingRight: 5;
        paddingTop: 5;
        alpha: 0;
        background-color: #000000;
        background-alpha: 0.5;
    }
</mx:Style>

<mx:Script>
    <![CDATA[
        import mx.events.VideoEvent;

        private function showControls():void {
            fadeIn.play([controls]);
        }

        private function hideControls():void {
            fadeOut.play([controls]);
        }

        private function videoDisplay_playheadUpdate(evt:VideoEvent):void {
            var pTime:Date = new Date(videoDisplay.playheadTime * 1000 || 100);
            var tTime:Date = new Date(videoDisplay.totalTime * 1000);
            time.text = dateFormatter.format(pTime) + " / " + dateFormatter.format(tTime);
        }

        private function playPauseButton_click(evt:MouseEvent):void {
            if (videoDisplay.playing) {
                videoDisplay.pause();
            } else {
                videoDisplay.playheadTime=**YOUR TIME HERE**
                videoDisplay.play();
            }
        }

        private function stopButton_click(evt:MouseEvent):void {
            videoDisplay.stop();
        }
    ]]>
</mx:Script>

<mx:Fade id="fadeIn" alphaFrom="0.0" alphaTo="1.0" />
<mx:Fade id="fadeOut" alphaFrom="1.0" alphaTo="0.0" />

<mx:DateFormatter id="dateFormatter" formatString="NN:SS" />

<mx:Label text="Mouse over the VideoDisplay control below to show control buttons." />
<mx:Canvas rollOver="showControls()" rollOut="hideControls()">
    <mx:VideoDisplay id="videoDisplay" source="http://www.helpexamples.com/flash/video/caption_video.flv" autoPlay="false" playheadUpdate="videoDisplay_playheadUpdate(event)" />
    <mx:HBox id="controls" styleName="controllerStyle" alpha="0.0">
        <mx:Button id="playPauseButton" styleName="playPauseStyle" toggle="true" selected="{videoDisplay.playing}" click="playPauseButton_click(event)" />
        <mx:Button id="stopButton" styleName="stopStyle" click="stopButton_click(event)" />
        <mx:Spacer width="100%" />
        <mx:Label id="time" styleName="timeStyle" />
    </mx:HBox>
</mx:Canvas>

or see more here http://blog.flexexamples.com/2007/08/05/building-a-basic-controller-for-the-videodisplay-control/comment-page-1/#comment-329

Eugene
Thanks, just thought, how would you stop the player downloading and buffering the entire video if all you want to do is view 30 seconds of it? YouTube seem to do this - if you're half-way through a video and you switch to another SD/HD mode, it continues half-way instead of going back to the beginning. Or is that because they use a video streaming server?
Reado
oh, its because they are stream via RTMP protocol from server as FMS or Red5, and there you can control buffering of **live** video channel.
Eugene
A: 

I found some server-side software that'll do the trick:

http://h264.code-shop.com/

Available in different flavours depending what web server you're running. Allows the video to be streamed. Also lets you decice where to start and end.

Reado