Recherche avancée

Médias (91)

Autres articles (47)

  • Personnaliser les catégories

    21 juin 2013, par

    Formulaire de création d’une catégorie
    Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
    Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire.
    Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
    Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (9168)

  • How to create effect same video with FFmpeg

    29 juin 2023, par Sang Vo

    How to make a video from an image with a drag effect like this one in FFmpeg :

    


    https://www.youtube.com/watch?v=zC6qbpe3FyE&ab_channel=CloudMood


    


    I tried to zoom in zoom out effects but not the same with video

    


     ffmpeg -loop 1 -i photo.jpg -vf "zoompan=z='min(zoom+0.001,1.2)':x='if(gte(zoom,1.2),x+2,x-1)':y='if(gte(zoom,1.2),y+2,y-1)':d=10*25,framerate=25,scale=1920:1080" -c:v libx264 -t 10 -pix_fmt yuv420p -s 1920x1080 output.mp4


    


  • Python-FFMPEG Corruption Problems

    11 juillet 2023, par Gabriel Ruben Guzman

    I'm repurposing some python code to generate gifs/mp4s showcasing nba player movements dot form. (With the 'frames' used in the gifs being generated by matplotlib).

    


    The repo comes with two different functions for generating the gifs, watch_play and animate_play. Both of which use python command line functionalities to run ffmpeg and generate the mp4s.
I've been able to use the watch_play succesfully, bot every time I try using animate_play, which according to the documention is meant to be significantly faster than watch play, I run into the error showcased here.(I printed the cmd string being passed into the pipe, in the hopes it would make debugging easier) Error FFMPEG

    


    I've tried generating gifs/mp4s of various size and added a decent bit of code to lessen the volume of data being processed. (I'm essentially repurposing the code just to generate clips, so I've been able to remove a lot of the pbp/tracking data logs to speed up the run time) But no matter what I've done, gotten some variation of the screenshotted error.

    


    pipe: : corrupt input packet in stream 0&#xA;[rawvideo @ 0x55ccc0e2bb80] Invalid buffer size, packet size 691200 < expected frame_size 921600&#xA;Error while decoding stream #0:0 : Invalid argument

    &#xA;

    The code for animate_play

    &#xA;

    def animate_play(self, game_time=None, length=None, highlight_player=None,&#xA;                 commentary=True, show_spacing=None):&#xA;    """&#xA;    Method for animating plays in game.&#xA;    Outputs video file of play in {cwd}/temp.&#xA;    Individual frames are streamed directly to ffmpeg without writing them&#xA;    to the disk, which is a great speed improvement over watch_play&#xA;&#xA;    Args:&#xA;        game_time (int): time in game to start video&#xA;            (seconds into the game).&#xA;            Currently game_time can also be an tuple of length two&#xA;            with (starting_frame, ending_frame)if you want to&#xA;            watch a play using frames instead of game time.&#xA;        length (int): length of play to watch (seconds)&#xA;        highlight_player (str): If not None, video will highlight&#xA;            the circle of the inputed player for easy tracking.&#xA;        commentary (bool): Whether to include play-by-play commentary in&#xA;            the animation&#xA;        show_spacing (str) in [&#x27;home&#x27;, &#x27;away&#x27;]: show convex hull&#xA;            spacing of home or away team.&#xA;            If None, does not show spacing.&#xA;&#xA;    Returns: an instance of self, and outputs video file of play&#xA;    """&#xA;    if type(game_time) == tuple:&#xA;        starting_frame = game_time[0]&#xA;        ending_frame = game_time[1]&#xA;    else:&#xA;        game_time= self.start &#x2B;(self.quarter*720)&#xA;        end_time= self.end &#x2B;(self.quarter*720)&#xA;        length = end_time-game_time&#xA;        # Get starting and ending frame from requested &#xA;        # game_time and length&#xA;        print(&#x27;hit&#x27;)&#xA;        print(len(self.moments))&#xA;        print(game_time)&#xA;        print(end_time)&#xA;        print(length)&#xA;        print(game_time&#x2B;length)&#xA;        &#xA;        print(self.moments.game_time.min())&#xA;        print(self.moments.game_time.max())&#xA;&#xA;        sys.exit()&#xA;        starting_frame = self.moments[self.moments.game_time.round() ==&#xA;                                      game_time].index.values[0]&#xA;        ending_frame = self.moments[self.moments.game_time.round() ==&#xA;                                    game_time &#x2B; length].index.values[0]&#xA;&#xA;    # Make video of each frame&#xA;    filename = "./temp/{game_time}.mp4".format(game_time=game_time)&#xA;    if commentary:&#xA;        size = (960, 960)&#xA;    else:&#xA;        size = (480, 480)&#xA;    cmdstring = (&#x27;ffmpeg&#x27;,&#xA;                 &#x27;-y&#x27;, &#x27;-r&#x27;, &#x27;20&#x27;,  # fps&#xA;                 &#x27;-s&#x27;, &#x27;%dx%d&#x27; % size,  # size of image string&#xA;                 &#x27;-pix_fmt&#x27;, &#x27;argb&#x27;,  # Stream argb data from matplotlib&#xA;                 &#x27;-f&#x27;, &#x27;rawvideo&#x27;,&#x27;-i&#x27;, &#x27;-&#x27;,&#xA;                 &#x27;-vcodec&#x27;, &#x27;libx264&#x27;, filename)&#xA;    #print(pipe)&#xA;    #print(cmdstring)&#xA;    &#xA;    &#xA;&#xA;    # Stream plots to pipe&#xA;    pipe = Popen(cmdstring, stdin=PIPE)&#xA;    print(cmdstring)&#xA;    for frame in range(starting_frame, ending_frame):&#xA;        print(frame)&#xA;        self.plot_frame(frame, highlight_player=highlight_player,&#xA;                        commentary=commentary, show_spacing=show_spacing,&#xA;                        pipe=pipe)&#xA;    print(cmdstring)&#xA;    pipe.stdin.close()&#xA;    pipe.wait()&#xA;    return self&#xA;

    &#xA;

    The code for watch play

    &#xA;

    def watch_play(self, game_time=None, length=None, highlight_player=None,&#xA;               commentary=True, show_spacing=None):&#xA;&#xA;    """&#xA;    DEPRECIATED.  See animate_play() for similar (fastere) method&#xA;&#xA;    Method for viewing plays in game.&#xA;    Outputs video file of play in {cwd}/temp&#xA;&#xA;    Args:&#xA;        game_time (int): time in game to start video&#xA;            (seconds into the game).&#xA;            Currently game_time can also be an tuple of length&#xA;            two with (starting_frame, ending_frame) if you want&#xA;            to watch a play using frames instead of game time.&#xA;        length (int): length of play to watch (seconds)&#xA;        highlight_player (str): If not None, video will highlight&#xA;            the circle of the inputed player for easy tracking.&#xA;        commentary (bool): Whether to include play-by-play&#xA;            commentary underneath video&#xA;        show_spacing (str in [&#x27;home&#x27;, &#x27;away&#x27;]): show convex hull&#xA;            of home or away team.&#xA;            if None, does not display any convex hull&#xA;&#xA;    Returns: an instance of self, and outputs video file of play&#xA;    """&#xA;    print(&#x27;hit this point &#x27;)&#xA;    warnings.warn(("watch_play is extremely slow. "&#xA;                   "Use animate_play for similar functionality, "&#xA;                   "but greater efficiency"))&#xA;&#xA;    if type(game_time) == tuple:&#xA;        starting_frame = game_time[0]&#xA;        ending_frame = game_time[1]&#xA;    else:&#xA;        # Get starting and ending frame from requested game_time and length&#xA;        game_time= self.start &#x2B;(self.quarter*720)&#xA;        end_time= self.end &#x2B;(self.quarter*720)&#xA;        length = end_time-game_time&#xA;&#xA;&#xA;        starting_frame = self.moments[self.moments.game_time.round() ==&#xA;                                      game_time].index.values[0]&#xA;        ending_frame = self.moments[self.moments.game_time.round() ==&#xA;                                    game_time &#x2B; length].index.values[0]&#xA;    #print(self.moments.head(2))&#xA;    #print(starting_frame)&#xA;    #print(ending_frame)&#xA;    print(len(self.moments))&#xA;    # Make video of each frame&#xA;    title = str(starting_frame)&#x2B;&#x27;-&#x27;&#x2B;str(ending_frame)&#xA;    for frame in range(starting_frame, ending_frame):&#xA;        print(frame)&#xA;        self.plot_frame(frame, highlight_player=highlight_player,&#xA;                        commentary=commentary, show_spacing=show_spacing)&#xA;    command = (&#x27;ffmpeg -framerate 20 -start_number {starting_frame} &#x27;&#xA;               &#x27;-i %d.png -c:v libx264 -r 30 -pix_fmt yuv420p -vf &#x27;&#xA;               &#x27;"scale=trunc(iw/2)*2:trunc(ih/2)*2" {title}&#x27;&#xA;               &#x27;.mp4&#x27;).format(starting_frame=starting_frame,title=title)&#xA;    os.chdir(&#x27;temp&#x27;)&#xA;    os.system(command)&#xA;    os.chdir(&#x27;..&#x27;)&#xA;&#xA;    # Delete images&#xA;    for file in os.listdir(&#x27;./temp&#x27;):&#xA;        if os.path.splitext(file)[1] == &#x27;.png&#x27;:&#xA;            os.remove(&#x27;./temp/{file}&#x27;.format(file=file))&#xA;&#xA;    return self&#x27;&#xA;

    &#xA;

  • Streaming Anki Vector's camera

    25 novembre 2023, par Brendan Goode

    I am trying to stream my robot to Remo.tv with my Vector robot. The website recognizes I am going live but does not stream what the robots camera is seeing. I have confirmed the camera works by a local application that runs the SDK. The very end of the code is what is giving issues, it appears somebody ripped code from Cozmo and attempted to paste it into a Vector file. The problem is it seems like the camera is taking pictures and we reach the point where it attempts to send photo but fails ?

    &#xA;

    # This is a dummy file to allow the automatic loading of modules without error on none.&#xA;import anki_vector&#xA;import atexit&#xA;import time&#xA;import _thread as thread&#xA;import logging&#xA;import networking&#xA;&#xA;log = logging.getLogger(&#x27;RemoTV.vector&#x27;)&#xA;vector = None&#xA;reserve_control = None&#xA;robotKey = None&#xA;volume = 100 #this is stupid, but who cares&#xA;annotated = False&#xA;&#xA;def connect():&#xA;    global vector&#xA;    global reserve_control&#xA;&#xA;    log.debug("Connecting to Vector")&#xA;    vector = anki_vector.AsyncRobot()&#xA;    vector.connect()&#xA;    #reserve_control = anki_vector.behavior.ReserveBehaviorControl()&#xA;    &#xA;    atexit.register(exit)&#xA;&#xA;    return(vector)&#xA;&#xA;def exit():&#xA;    log.debug("Vector exiting")&#xA;    vector.disconnect()&#xA;    &#xA;def setup(robot_config):&#xA;    global forward_speed&#xA;    global turn_speed&#xA;    global volume&#xA;    global vector&#xA;    global charge_high&#xA;    global charge_low&#xA;    global stay_on_dock&#xA;&#xA;    global robotKey&#xA;    global server&#xA;    global no_mic&#xA;    global no_camera&#xA;    global ffmpeg_location&#xA;    global v4l2_ctl_location&#xA;    global x_res&#xA;    global y_res&#xA;    &#xA;    robotKey = robot_config.get(&#x27;robot&#x27;, &#x27;robot_key&#x27;)&#xA;&#xA;    if robot_config.has_option(&#x27;misc&#x27;, &#x27;video_server&#x27;):&#xA;        server = robot_config.get(&#x27;misc&#x27;, &#x27;video_server&#x27;)&#xA;    else:&#xA;        server = robot_config.get(&#x27;misc&#x27;, &#x27;server&#x27;)&#xA; &#xA;    no_mic = robot_config.getboolean(&#x27;camera&#x27;, &#x27;no_mic&#x27;)&#xA;    no_camera = robot_config.getboolean(&#x27;camera&#x27;, &#x27;no_camera&#x27;)&#xA;&#xA;    ffmpeg_location = robot_config.get(&#x27;ffmpeg&#x27;, &#x27;ffmpeg_location&#x27;)&#xA;    v4l2_ctl_location = robot_config.get(&#x27;ffmpeg&#x27;, &#x27;v4l2-ctl_location&#x27;)&#xA;&#xA;    x_res = robot_config.getint(&#x27;camera&#x27;, &#x27;x_res&#x27;)&#xA;    y_res = robot_config.getint(&#x27;camera&#x27;, &#x27;y_res&#x27;)&#xA;&#xA;&#xA;    if vector == None:&#xA;        vector = connect()&#xA;&#xA;    #x  mod_utils.repeat_task(30, check_battery, coz)&#xA;&#xA;    if robot_config.has_section(&#x27;cozmo&#x27;):&#xA;        forward_speed = robot_config.getint(&#x27;cozmo&#x27;, &#x27;forward_speed&#x27;)&#xA;        turn_speed = robot_config.getint(&#x27;cozmo&#x27;, &#x27;turn_speed&#x27;)&#xA;        volume = robot_config.getint(&#x27;cozmo&#x27;, &#x27;volume&#x27;)&#xA;        charge_high = robot_config.getfloat(&#x27;cozmo&#x27;, &#x27;charge_high&#x27;)&#xA;        charge_low = robot_config.getfloat(&#x27;cozmo&#x27;, &#x27;charge_low&#x27;)&#xA;        stay_on_dock = robot_config.getboolean(&#x27;cozmo&#x27;, &#x27;stay_on_dock&#x27;)&#xA;&#xA;#    if robot_config.getboolean(&#x27;tts&#x27;, &#x27;ext_chat&#x27;): #ext_chat enabled, add motor commands&#xA;#        extended_command.add_command(&#x27;.anim&#x27;, play_anim)&#xA;#        extended_command.add_command(&#x27;.forward_speed&#x27;, set_forward_speed)&#xA;#        extended_command.add_command(&#x27;.turn_speed&#x27;, set_turn_speed)&#xA;#        extended_command.add_command(&#x27;.vol&#x27;, set_volume)&#xA;#        extended_command.add_command(&#x27;.charge&#x27;, set_charging)&#xA;#        extended_command.add_command(&#x27;.stay&#x27;, set_stay_on_dock)&#xA;&#xA;    vector.audio.set_master_volume(volume) # set volume&#xA;&#xA;    return&#xA;    &#xA;def move(args):&#xA;    global charging&#xA;    global low_battery&#xA;    command = args[&#x27;button&#x27;][&#x27;command&#x27;]&#xA;&#xA;    try:&#xA;        if vector.status.is_on_charger and not charging:&#xA;            if low_battery:&#xA;                print("Started Charging")&#xA;                charging = 1&#xA;            else:&#xA;                if not stay_on_dock:&#xA;                    vector.drive_off_charger_contacts().wait_for_completed()&#xA;&#xA;        if command == &#x27;f&#x27;:&#xA;            vector.behavior.say_text("Moving {}".format(command))&#xA;&#xA;            #causes delays #coz.drive_straight(distance_mm(10), speed_mmps(50), False, True).wait_for_completed()&#xA;            vector.motors.set_wheel_motors(forward_speed, forward_speed, forward_speed*4, forward_speed*4 )&#xA;            time.sleep(0.7)&#xA;            vector.motors.set_wheel_motors(0, 0)&#xA;        elif command == &#x27;b&#x27;:&#xA;            #causes delays #coz.drive_straight(distance_mm(-10), speed_mmps(50), False, True).wait_for_completed()&#xA;            vector.motors.set_wheel_motors(-forward_speed, -forward_speed, -forward_speed*4, -forward_speed*4 )&#xA;            time.sleep(0.7)&#xA;            vector.motors.set_wheel_motors(0, 0)&#xA;        elif command == &#x27;l&#x27;:&#xA;            #causes delays #coz.turn_in_place(degrees(15), False).wait_for_completed()&#xA;            vector.motors.set_wheel_motors(-turn_speed, turn_speed, -turn_speed*4, turn_speed*4 )&#xA;            time.sleep(0.5)&#xA;            vector.motors.set_wheel_motors(0, 0)&#xA;        elif command == &#x27;r&#x27;:&#xA;            #causes delays #coz.turn_in_place(degrees(-15), False).wait_for_completed()&#xA;            vector.motors.set_wheel_motors(turn_speed, -turn_speed, turn_speed*4, -turn_speed*4 )&#xA;            time.sleep(0.5)&#xA;            vector.motors.set_wheel_motors(0, 0)&#xA;&#xA;        #move lift&#xA;        elif command == &#x27;w&#x27;:&#xA;            vector.behavior.say_text("w")&#xA;            vector.set_lift_height(height=1).wait_for_completed()&#xA;        elif command == &#x27;s&#x27;:&#xA;            vector.behavior.say_text("s")&#xA;            vector.set_lift_height(height=0).wait_for_completed()&#xA;&#xA;        #look up down&#xA;        #-25 (down) to 44.5 degrees (up)&#xA;        elif command == &#x27;q&#x27;:&#xA;            #head_angle_action = coz.set_head_angle(degrees(0))&#xA;            #clamped_head_angle = head_angle_action.angle.degrees&#xA;            #head_angle_action.wait_for_completed()&#xA;            vector.behaviour.set_head_angle(45)&#xA;            time.sleep(0.35)&#xA;            vector.behaviour.set_head_angle(0)&#xA;        elif command == &#x27;a&#x27;:&#xA;            #head_angle_action = coz.set_head_angle(degrees(44.5))&#xA;            #clamped_head_angle = head_angle_action.angle.degrees&#xA;            #head_angle_action.wait_for_completed()&#xA;            vector.behaviour.set_head_angle(-22.0)&#xA;            time.sleep(0.35)&#xA;            vector.behaviour.set_head_angle(0)&#xA;   &#xA;        #things to say with TTS disabled&#xA;        elif command == &#x27;sayhi&#x27;:&#xA;            tts.say( "hi! I&#x27;m cozmo!" )&#xA;        elif command == &#x27;saywatch&#x27;:&#xA;            tts.say( "watch this" )&#xA;        elif command == &#x27;saylove&#x27;:&#xA;            tts.say( "i love you" )&#xA;        elif command == &#x27;saybye&#x27;:&#xA;            tts.say( "bye" )&#xA;        elif command == &#x27;sayhappy&#x27;:&#xA;            tts.say( "I&#x27;m happy" )&#xA;        elif command == &#x27;saysad&#x27;:&#xA;            tts.say( "I&#x27;m sad" )&#xA;        elif command == &#x27;sayhowru&#x27;:&#xA;            tts.say( "how are you?" )&#xA;    except:&#xA;        return(False)&#xA;    return&#xA;&#xA;def start():&#xA;    log.debug("Starting Vector Video Process")&#xA;    try:&#xA;        thread.start_new_thread(video, ())&#xA;    except KeyboardInterrupt as e:&#xA;        pass        &#xA;    return&#xA;    &#xA;def video():&#xA;    global vector&#xA;    # Turn on image receiving by the camera&#xA;    vector.camera.init_camera_feed()&#xA;&#xA;    vector.behavior.say_text("hey everyone, lets robot!")&#xA;&#xA;    while True:&#xA;        time.sleep(0.25)&#xA;&#xA;        from subprocess import Popen, PIPE&#xA;        from sys import platform&#xA;&#xA;        log.debug("ffmpeg location : {}".format(ffmpeg_location))&#xA;&#xA;#        import os&#xA;#        if not os.path.isfile(ffmpeg_location):&#xA;#        print("Error: cannot find " &#x2B; str(ffmpeg_location) &#x2B; " check ffmpeg is installed. Terminating controller")&#xA;#        thread.interrupt_main()&#xA;#        thread.exit()&#xA;&#xA;        while not networking.authenticated:&#xA;            time.sleep(1)&#xA;&#xA;        p = Popen([ffmpeg_location, &#x27;-y&#x27;, &#x27;-f&#x27;, &#x27;image2pipe&#x27;, &#x27;-vcodec&#x27;, &#x27;png&#x27;, &#x27;-r&#x27;, &#x27;25&#x27;, &#x27;-i&#x27;, &#x27;-&#x27;, &#x27;-vcodec&#x27;, &#x27;mpeg1video&#x27;, &#x27;-r&#x27;, &#x27;25&#x27;, "-f", "mpegts", "-headers", "\"Authorization: Bearer {}\"".format(robotKey), "http://{}:1567/transmit?name={}-video".format(server, networking.channel_id)], stdin=PIPE)&#xA;        #p = Popen([ffmpeg_location, &#x27;-nostats&#x27;, &#x27;-y&#x27;, &#x27;-f&#x27;, &#x27;image2pipe&#x27;, &#x27;-vcodec&#x27;, &#x27;png&#x27;, &#x27;-r&#x27;, &#x27;25&#x27;, &#x27;-i&#x27;, &#x27;-&#x27;, &#x27;-vcodec&#x27;, &#x27;mpeg1video&#x27;, &#x27;-r&#x27;, &#x27;25&#x27;,&#x27;-b:v&#x27;, &#x27;400k&#x27;, "-f","mpegts", "-headers", "\"Authorization: Bearer {}\"".format(robotKey), "http://{}/transmit?name=rbot-390ddbe0-f1cc-4710-b3f1-9f477f4875f9-video".format(server)], stdin=PIPE)&#xA;        #p = Popen([ffmpeg_location, &#x27;-y&#x27;, &#x27;-f&#x27;, &#x27;image2pipe&#x27;, &#x27;-vcodec&#x27;, &#x27;png&#x27;, &#x27;-r&#x27;, &#x27;25&#x27;, &#x27;-i&#x27;, &#x27;-&#x27;, &#x27;-vcodec&#x27;, &#x27;mpeg1video&#x27;, &#x27;-r&#x27;, &#x27;25&#x27;, "-f", "mpegts", "-headers", "\"Authorization: Bearer {}\"".format(robotKey), "http://{}/transmit?name=rbot-390ddbe0-f1cc-4710-b3f1-9f477f4875f9-video".format(server, networking.channel_id)], stdin=PIPE)&#xA;        print(vector)&#xA;        image = vector.camera.latest_image&#xA;        image.raw_image.save("test.png", &#x27;PNG&#x27;)&#xA;        try:&#xA;            while True:&#xA;                if vector:&#xA;                    image = vector.camera.latest_image&#xA;                    if image:&#xA;                        if annotated:&#xA;                            image = image.annotate_image()&#xA;                        else:&#xA;                            image = image.raw_image&#xA;                        print("attempting to write image")&#xA;                        image.save(p.stdin, &#x27;PNG&#x27;)&#xA;&#xA;                else:&#xA;                    time.sleep(.1)&#xA;            log.debug("Lost Vector object, terminating video stream")&#xA;            p.stdin.close()&#xA;            p.wait()&#xA;        except Exception as e:&#xA;            log.debug("Vector Video Exception! {}".format(e))&#xA;            p.stdin.close()&#xA;            p.wait()&#xA;            pass               &#xA;    &#xA;

    &#xA;

    Here is the error we get

    &#xA;

    [vost#0:0/mpeg1video @ 000001c7153c1cc0] Error submitting a packet to the muxer: Error number -10053 occurred&#xA;[out#0/mpegts @ 000001c713448480] Error muxing a packet&#xA;[out#0/mpegts @ 000001c713448480] Error writing trailer: Error number -10053 occurred&#xA;[http @ 000001c7134cab00] URL read error: Error number -10053 occurred&#xA;[out#0/mpegts @ 000001c713448480] Error closing file: Error number -10053 occurred&#xA;[out#0/mpegts @ 000001c713448480] video:56kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown&#xA;frame=   25 fps=0.0 q=2.0 Lsize=      53kB time=00:00:01.32 bitrate= 325.9kbits/s speed=7.05x&#xA;Conversion failed!&#xA;&#xA;attempting to write image&#xA;

    &#xA;

    You can see our attempts to fix by commented out code in the #p section at the bottom.

    &#xA;