Recherche avancée

Médias (0)

Mot : - Tags -/xmp

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (52)

  • 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 (...)

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

Sur d’autres sites (11350)

  • ffmpeg error : "Missing ')' or too many args in 'if(gt(a,1),650,-1)'"

    23 février 2015, par Remini me

    I am trying to run this ffmpeg command in linux shell, to scale down the video (if portrait, than to maximum height of 650, while adjusting the width. And if landscape, then 650 maximum width, and adjust the height with aspect ratio) :

    ffmpeg -i 1.mp4 -r 30 -vf scale="'if(gt(a,1),650,-1)':'if(gt(a,1),-1,650)'" -vcodec libx264 output_file1.mp4

    But I get the following error :

    [scale @ 0x1d48a40] [Eval @ 0x7fff53a49340] Missing ’)’ or too many
    args in ’if(gt(a,1),650,-1)’ [scale @ 0x1d48a40] [Eval @
    0x7fff53a49340] Missing ’)’ or too many args in ’if(gt(a,1),-1,650)’
    Error when evaluating the expression ’if(gt(a,1),-1,650)’

    **EDIT : I have tried using the new @slhck syntax :

    -vf "scale=if(gt(a\,1)\,650\,-2):if(gt(a\,1)\,-2\,650)"

    The result I got was :

    ffmpeg version 0.8.16-4:0.8.16-0ubuntu0.12.04.1, Copyright (c)
    2000-2014 the Libav developers built on Sep 16 2014 18:33:49 with
    gcc 4.6.3 The ffmpeg program is only provided for script compatibility
    and will be removed in a future release. It has been deprecated in the
    Libav project to allow for incompatible command line syntax
    improvements in its replacement called avconv (see Changelog for
    details). Please use avconv instead.

    Seems stream 0 codec frame rate differs from container frame rate :
    180000.00 (180000/1) -> 90000.00 (180000/2) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ’1.mp4’ : Metadata :
    major_brand : isom
    minor_version : 0
    compatible_brands : isom3gp4
    creation_time : 2015-02-05 14:54:24 Duration : 00:00:45.30, start : 0.000000, bitrate : 17058 kb/s
    Stream #0.0(eng) : Video : h264 (High), yuv420p, 1920x1080, 17021 kb/s, 30.01 fps, 90k tbr, 90k tbn, 180k tbc
    Metadata :
    creation_time : 2015-02-05 14:54:24
    Stream #0.1(eng) : Audio : aac, 48000 Hz, stereo, s16, 124 kb/s
    Metadata :
    creation_time : 2015-02-05 14:54:24 File ’output_file1.mp4’ already exists. Overwrite ? [y/N] y

    [buffer @ 0x747ec0] w:1920 h:1080 pixfmt:yuv420p [scale @ 0x745a40] [Eval @ 0x7fffac94b220] Missing ’)’ or too many args in
    ’if(gt(a,1),650,-2)’ [scale @ 0x745a40] [Eval @ 0x7fffac94b220]
    Missing ’)’ or too many args in ’if(gt(a,1),-2,650)’ Error when
    evaluating the expression ’if(gt(a,1),-2,650)’ Error opening
    filters !

    What should I do ?

  • ffmpeg Error while filtering : Cannot allocate memory

    7 juillet 2017, par Andres MERE

    My workstation seems to have plenty of memory (and everything). When I am trying to run ffmpeg as follows :

    /usr/local/bin/ffmpeg \
       -loglevel debug \
       -i "A066C002_170619NU_CANON.mov" \
       -filter_complex "[0:0] [0:2] amerge, aformat=sample_fmts=s16:channel_layouts=stereo [a]" \
       -map "[a]" \
       -map 0:5 \
       -c:a libfdk_aac \
       -vbr 3 \
       -vcodec libx264 \
       -profile:v baseline \
       -level 3.0 \
       -vf scale=1280:720 \
       -pix_fmt yuv420p \
       -crf 20 \
       -metadata title="Test movie" \
       -movflags +faststart \
       -y \
       "A066C002_170619NU_CANON.mp4"

    It fails with "Error while filtering : Cannot allocate memory".

    ffmpeg version N-86721-gf605b56-am Copyright (c) 2000-2017 the FFmpeg developers
         built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
         configuration: --extra-version=am --enable-gpl --enable-libfdk-aac --enable-libsoxr --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-shared
         libavutil      55. 67.100 / 55. 67.100
         libavcodec     57.100.103 / 57.100.103
         libavformat    57. 75.100 / 57. 75.100
         libavdevice    57.  7.100 / 57.  7.100
         libavfilter     6. 94.100 /  6. 94.100
         libswscale      4.  7.101 /  4.  7.101
         libswresample   2.  8.100 /  2.  8.100
         libpostproc    54.  6.100 / 54.  6.100
       Splitting the commandline.
       Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
       Reading option '-i' ... matched as input url with argument 'A066C002_170619NU_CANON.mov'.
       Reading option '-filter_complex' ... matched as option 'filter_complex' (create a complex filtergraph) with argument '[0:0] [0:2] amerge, aformat=sample_fmts=s16:channel_layouts=stereo [a]'.
       Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[a]'.
       Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:5'.
       Reading option '-c:a' ... matched as option 'c' (codec name) with argument 'libfdk_aac'.
       Reading option '-vbr' ... matched as AVOption 'vbr' with argument '3'.
       Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'libx264'.
       Reading option '-profile:v' ... matched as option 'profile' (set profile) with argument 'baseline'.
       Reading option '-level' ... matched as AVOption 'level' with argument '3.0'.
       Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'scale=1280:720'.
       Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel format) with argument 'yuv420p'.
       Reading option '-crf' ... matched as AVOption 'crf' with argument '20'.
       Reading option '-metadata' ... matched as option 'metadata' (add metadata) with argument 'title=Test movie'.
       Reading option '-movflags' ... matched as AVOption 'movflags' with argument '+faststart'.
       Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
       Reading option 'A066C002_170619NU_CANON.mp4' ... matched as output url.
       Finished splitting the commandline.
       Parsing a group of options: global .
       Applying option loglevel (set logging level) with argument debug.
       Applying option filter_complex (create a complex filtergraph) with argument [0:0] [0:2] amerge, aformat=sample_fmts=s16:channel_layouts=stereo [a].
       Applying option y (overwrite output files) with argument 1.
       Successfully parsed a group of options.
       Parsing a group of options: input url A066C002_170619NU_CANON.mov.
       Successfully parsed a group of options.
       Opening an input file: A066C002_170619NU_CANON.mov.
       [NULL @ 0x1c4f920] Opening 'A066C002_170619NU_CANON.mov' for reading
       [file @ 0x1c4ffc0] Setting default whitelist 'file,crypto'
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Unknown dref type 0x73696c61 size 12
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Processing st: 0, edit list 0 - media time: 0, duration: 129254400
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Unknown dref type 0x73696c61 size 12
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Processing st: 1, edit list 0 - media time: 0, duration: 129254400
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Unknown dref type 0x73696c61 size 12
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Processing st: 2, edit list 0 - media time: 0, duration: 129254400
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Unknown dref type 0x73696c61 size 12
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Processing st: 3, edit list 0 - media time: 0, duration: 129254400
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Unknown dref type 0x73696c61 size 12
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Processing st: 4, edit list 0 - media time: 0, duration: 1
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Unknown dref type 0x73696c61 size 12
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Processing st: 5, edit list 0 - media time: 0, duration: 67320
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] Before avformat_find_stream_info() pos: 59339926200 bytes read:760258 seeks:3 nb_streams:6
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] All info found
       [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1c4f920] After avformat_find_stream_info() pos: 1180516 bytes read:1945622 seeks:4 frames:144
       Guessed Channel Layout for Input Stream #0.0 : mono
       Guessed Channel Layout for Input Stream #0.1 : mono
       Guessed Channel Layout for Input Stream #0.2 : mono
       Guessed Channel Layout for Input Stream #0.3 : mono
       Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'A066C002_170619NU_CANON.mov':
         Metadata:
           creation_time   : 2017-06-19T10:12:13.000000Z
           com.apple.quicktime.creationdate: 2017-06-19T13:12:13+0300
           com.apple.proapps.manufacturer: CANON
           com.apple.quicktime.make: CANON
           com.apple.proapps.mio.cameraName: EOS C300 Mark II
           com.apple.proapps.cameraname: EOS C300 Mark II
           com.apple.quicktime.model: EOS C300 Mark II
           com.apple.quicktime.camera.identifier: 060e2b34-0401-010d-0e15-0056454f0200
           com.divergentmedia.editready.timecodeStart: 05:45:28:08
           com.divergentmedia.editready.sonyXDCamTC: 05:45:28:08
           com.divergentmedia.editReady.version: EditReady 1.4.9, 798
           com.apple.proapps.studio.metadataFieldDominanceOverride: 1
           date            : 2017-06-19T13:12:13+0300
           date-eng        : 2017-06-19T13:12:13+0300
           make            : CANON
           make-eng        : CANON
           model           : EOS C300 Mark II
           model-eng       : EOS C300 Mark II
           timecode        : 05:45:28:08
         Duration: 00:44:52.80, start: 0.000000, bitrate: 176292 kb/s
           Stream #0:0(eng), 47, 1/48000: Audio: pcm_s16le (lpcm / 0x6D63706C), 48000 Hz, mono, s16, 768 kb/s (default)
           Metadata:
             creation_time   : 2017-06-19T10:12:13.000000Z
             handler_name    : Apple Alias Data Handler
           Stream #0:1(eng), 47, 1/48000: Audio: pcm_s16le (lpcm / 0x6D63706C), 48000 Hz, mono, s16, 768 kb/s (default)
           Metadata:
             creation_time   : 2017-06-19T10:12:13.000000Z
             handler_name    : Apple Alias Data Handler
           Stream #0:2(eng), 47, 1/48000: Audio: pcm_s16le (lpcm / 0x6D63706C), 48000 Hz, mono, s16, 768 kb/s (default)
           Metadata:
             creation_time   : 2017-06-19T10:12:13.000000Z
             handler_name    : Apple Alias Data Handler
           Stream #0:3(eng), 1, 1/48000: Audio: pcm_s16le (lpcm / 0x6D63706C), 48000 Hz, mono, s16, 768 kb/s (default)
           Metadata:
             creation_time   : 2017-06-19T10:12:13.000000Z
             handler_name    : Apple Alias Data Handler
           Stream #0:4(eng), 1, 1/25: Data: none (tmcd / 0x64636D74), 0/1, 0 kb/s (default)
           Metadata:
             creation_time   : 2017-06-19T10:12:13.000000Z
             handler_name    : Apple Alias Data Handler
             timecode        : 05:45:28:08
           Stream #0:5(eng), 1, 1/25: Video: prores, 1 reference frame (apch / 0x68637061), yuv422p10le(bt709, progressive), 1920x1080, 0/1, 173217 kb/s, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 25 tbn, 25 tbc (default)
           Metadata:
             creation_time   : 2017-06-21T11:52:58.000000Z
             handler_name    : Apple Alias Data Handler
             encoder         : Apple ProRes 422 (HQ)
       Successfully opened the file.
       detected 16 logical cores
       [Parsed_aformat_1 @ 0x1c71a60] Setting 'sample_fmts' to value 's16'
       [Parsed_aformat_1 @ 0x1c71a60] Setting 'channel_layouts' to value 'stereo'
       Parsing a group of options: output url A066C002_170619NU_CANON.mp4.
       Applying option map (set input stream mapping) with argument [a].
       Applying option map (set input stream mapping) with argument 0:5.
       Applying option c:a (codec name) with argument libfdk_aac.
       Applying option vcodec (force video codec ('copy' to copy stream)) with argument libx264.
       Applying option profile:v (set profile) with argument baseline.
       Applying option vf (set video filters) with argument scale=1280:720.
       Applying option pix_fmt (set pixel format) with argument yuv420p.
       Applying option metadata (add metadata) with argument title=Test movie.
       Successfully parsed a group of options.
       Opening an output file: A066C002_170619NU_CANON.mp4.
       [file @ 0x1d4fe40] Setting default whitelist 'file,crypto'
       Successfully opened the file.
       Stream mapping:
         Stream #0:0 (pcm_s16le) -> amerge:in0 (graph 0)
         Stream #0:2 (pcm_s16le) -> amerge:in1 (graph 0)
         aformat (graph 0) -> Stream #0:0 (libfdk_aac)
         Stream #0:5 -> #0:1 (prores (native) -> h264 (libx264))
       Press [q] to stop, [?] for help
       cur_dts is invalid (this is harmless if it occurs once at the start per stream)
           Last message repeated 1 times
       [Parsed_scale_0 @ 0x2397e60] Setting 'w' to value '1280'
       [Parsed_scale_0 @ 0x2397e60] Setting 'h' to value '720'
       [Parsed_scale_0 @ 0x2397e60] Setting 'flags' to value 'bicubic'
       [Parsed_scale_0 @ 0x2397e60] w:1280 h:720 flags:'bicubic' interl:0
       [graph 1 input from stream 0:5 @ 0x23984c0] Setting 'video_size' to value '1920x1080'
       [graph 1 input from stream 0:5 @ 0x23984c0] Setting 'pix_fmt' to value '74'
       [graph 1 input from stream 0:5 @ 0x23984c0] Setting 'time_base' to value '1/25'
       [graph 1 input from stream 0:5 @ 0x23984c0] Setting 'pixel_aspect' to value '1/1'
       [graph 1 input from stream 0:5 @ 0x23984c0] Setting 'sws_param' to value 'flags=2'
       [graph 1 input from stream 0:5 @ 0x23984c0] Setting 'frame_rate' to value '25/1'
       [graph 1 input from stream 0:5 @ 0x23984c0] w:1920 h:1080 pixfmt:yuv422p10le tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
       [format @ 0x2399240] compat: called with args=[yuv420p]
       [format @ 0x2399240] Setting 'pix_fmts' to value 'yuv420p'
       [AVFilterGraph @ 0x1d517e0] query_formats: 4 queried, 3 merged, 0 already done, 0 delayed
       [Parsed_scale_0 @ 0x2397e60] w:1920 h:1080 fmt:yuv422p10le sar:1/1 -> w:1280 h:720 fmt:yuv420p sar:1/1 flags:0x4
       [libx264 @ 0x1d4f1a0] using mv_range_thread = 24
       [libx264 @ 0x1d4f1a0] using SAR=1/1
       [libx264 @ 0x1d4f1a0] frame MB size (80x45) > level limit (1620)
       [libx264 @ 0x1d4f1a0] MB rate (90000) > level limit (40500)
       [libx264 @ 0x1d4f1a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
       [libx264 @ 0x1d4f1a0] profile Constrained Baseline, level 3.0
       [libx264 @ 0x1d4f1a0] 264 - core 152 r2851 ba24899 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=0 ref=2 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=22 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=20.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
       cur_dts is invalid (this is harmless if it occurs once at the start per stream)
           Last message repeated 94 times
       [Parsed_aformat_1 @ 0x2559500] Setting 'sample_fmts' to value 's16'
       [Parsed_aformat_1 @ 0x2559500] Setting 'channel_layouts' to value 'stereo'
       [graph_0_in_0_0 @ 0x257c7c0] Setting 'time_base' to value '1/48000'
       [graph_0_in_0_0 @ 0x257c7c0] Setting 'sample_rate' to value '48000'
       [graph_0_in_0_0 @ 0x257c7c0] Setting 'sample_fmt' to value 's16'
       [graph_0_in_0_0 @ 0x257c7c0] Setting 'channel_layout' to value '0x4'
       [graph_0_in_0_0 @ 0x257c7c0] tb:1/48000 samplefmt:s16 samplerate:48000 chlayout:0x4
       [graph_0_in_0_2 @ 0x25820a0] Setting 'time_base' to value '1/48000'
       [graph_0_in_0_2 @ 0x25820a0] Setting 'sample_rate' to value '48000'
       [graph_0_in_0_2 @ 0x25820a0] Setting 'sample_fmt' to value 's16'
       [graph_0_in_0_2 @ 0x25820a0] Setting 'channel_layout' to value '0x4'
       [graph_0_in_0_2 @ 0x25820a0] tb:1/48000 samplefmt:s16 samplerate:48000 chlayout:0x4
       [format_out_0_0 @ 0x2580ce0] Setting 'sample_fmts' to value 's16'
       [format_out_0_0 @ 0x2580ce0] Setting 'sample_rates' to value '96000|88200|64000|48000|44100|32000|24000|22050|16000|12000|11025|8000'
       [format_out_0_0 @ 0x2580ce0] Setting 'channel_layouts' to value '0x4|0x3|0x7|0x107|0x37|0x3f|0xff|0x63f'
       [Parsed_amerge_0 @ 0x1c6edc0] No channel layout for input 1
       [AVFilterGraph @ 0x1c8abc0] query_formats: 5 queried, 6 merged, 0 already done, 9 delayed
       [AVFilterGraph @ 0x1c8abc0] query_formats not finished
       [Parsed_amerge_0 @ 0x1c6edc0] Input channel layouts overlap: output layout will be determined by the number of distinct input channels
       [AVFilterGraph @ 0x1c8abc0] query_formats: 1 queried, 9 merged, 6 already done, 0 delayed
       [Parsed_amerge_0 @ 0x1c6edc0] in0:mono + in1:mono -> out:stereo
       [libfdk_aac @ 0x1d4e300] Note, the VBR setting is unsupported and only works with some parameter combinations
       Output #0, mp4, to 'A066C002_170619NU_CANON.mp4':
         Metadata:
           timecode        : 05:45:28:08
           com.apple.quicktime.creationdate: 2017-06-19T13:12:13+0300
           com.apple.proapps.manufacturer: CANON
           com.apple.quicktime.make: CANON
           com.apple.proapps.mio.cameraName: EOS C300 Mark II
           com.apple.proapps.cameraname: EOS C300 Mark II
           com.apple.quicktime.model: EOS C300 Mark II
           com.apple.quicktime.camera.identifier: 060e2b34-0401-010d-0e15-0056454f0200
           com.divergentmedia.editready.timecodeStart: 05:45:28:08
           com.divergentmedia.editready.sonyXDCamTC: 05:45:28:08
           com.divergentmedia.editReady.version: EditReady 1.4.9, 798
           com.apple.proapps.studio.metadataFieldDominanceOverride: 1
           date            : 2017-06-19T13:12:13+0300
           date-eng        : 2017-06-19T13:12:13+0300
           make            : CANON
           make-eng        : CANON
           model           : EOS C300 Mark II
           model-eng       : EOS C300 Mark II
           title           : Test movie
           encoder         : Lavf57.75.100
           Stream #0:0, 0, 1/48000: Audio: aac (libfdk_aac) (mp4a / 0x6134706D), 48000 Hz, stereo, s16, delay 2048 (default)
           Metadata:
             encoder         : Lavc57.100.103 libfdk_aac
           Stream #0:1(eng), 0, 1/12800: Video: h264 (libx264), 1 reference frame (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 0/1, q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
           Metadata:
             creation_time   : 2017-06-21T11:52:58.000000Z
             handler_name    : Apple Alias Data Handler
             encoder         : Lavc57.100.103 libx264
           Side data:
             cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
       cur_dts is invalid (this is harmless if it occurs once at the start per stream)
           Last message repeated 2 times
       Clipping frame in rate conversion by 0.000008
       cur_dts is invalid (this is harmless if it occurs once at the start per stream)
           Last message repeated 201 times
       cur_dts is invalid (this is harmless if it occurs once at the start per stream) 0x    
           Last message repeated 157 times
       cur_dts is invalid (this is harmless if it occurs once at the start per stream) 0x    
       [libx264 @ 0x1d4f1a0] frame=   0 QP=19.02 NAL=3 Slice:I Poc:0   I:3600 P:0    SKIP:0    size=49899 bytes
       Error while filtering: Cannot allocate memory
       [libx264 @ 0x1d4f1a0] frame=   1 QP=19.20 NAL=2 Slice:P Poc:2   I:14   P:2118 SKIP:1468 size=6808 bytes
       [libx264 @ 0x1d4f1a0] frame=   2 QP=18.86 NAL=2 Slice:P Poc:4   I:15   P:2339 SKIP:1246 size=7088 bytes
       [libx264 @ 0x1d4f1a0] frame=   3 QP=19.08 NAL=2 Slice:P Poc:6   I:9    P:2449 SKIP:1142 size=7341 bytes
       [libx264 @ 0x1d4f1a0] frame=   4 QP=18.92 NAL=2 Slice:P Poc:8   I:5    P:2482 SKIP:1113 size=7725 bytes
       [libx264 @ 0x1d4f1a0] frame=   5 QP=18.73 NAL=2 Slice:P Poc:10  I:6    P:2100 SKIP:1494 size=6831 bytes
       [libx264 @ 0x1d4f1a0] frame=   6 QP=18.73 NAL=2 Slice:P Poc:12  I:4    P:2492 SKIP:1104 size=8298 bytes
       [libx264 @ 0x1d4f1a0] frame=   7 QP=18.52 NAL=2 Slice:P Poc:14  I:1    P:2397 SKIP:1202 size=7250 bytes
       [libx264 @ 0x1d4f1a0] frame=   8 QP=18.51 NAL=2 Slice:P Poc:16  I:7    P:1523 SKIP:2070 size=5344 bytes
       [libx264 @ 0x1d4f1a0] frame=   9 QP=18.51 NAL=2 Slice:P Poc:18  I:6    P:2398 SKIP:1196 size=7865 bytes
       [libx264 @ 0x1d4f1a0] frame=  10 QP=18.58 NAL=2 Slice:P Poc:20  I:1    P:1840 SKIP:1759 size=6451 bytes
       [libx264 @ 0x1d4f1a0] frame=  11 QP=18.58 NAL=2 Slice:P Poc:22  I:5    P:1764 SKIP:1831 size=6159 bytes
       [libx264 @ 0x1d4f1a0] frame=  12 QP=18.52 NAL=2 Slice:P Poc:24  I:3    P:2421 SKIP:1176 size=8151 bytes
       [libx264 @ 0x1d4f1a0] frame=  13 QP=18.51 NAL=2 Slice:P Poc:26  I:1    P:1892 SKIP:1707 size=6476 bytes
       [libx264 @ 0x1d4f1a0] frame=  14 QP=18.41 NAL=2 Slice:P Poc:28  I:3    P:1919 SKIP:1678 size=6431 bytes
       [libx264 @ 0x1d4f1a0] frame=  15 QP=18.48 NAL=2 Slice:P Poc:30  I:1    P:1255 SKIP:2344 size=4060 bytes
       [libx264 @ 0x1d4f1a0] frame=  16 QP=18.79 NAL=2 Slice:P Poc:32  I:2    P:1373 SKIP:2225 size=4398 bytes
       [libx264 @ 0x1d4f1a0] frame=  17 QP=18.77 NAL=2 Slice:P Poc:34  I:2    P:1459 SKIP:2139 size=4480 bytes
       [libx264 @ 0x1d4f1a0] frame=  18 QP=19.01 NAL=2 Slice:P Poc:36  I:7    P:1658 SKIP:1935 size=5003 bytes
       [libx264 @ 0x1d4f1a0] scene cut at 48 Icost:227110 Pcost:199261 ratio:0.1226 bias:0.1307 gop:48 (imb:3134 pmb:220)
       [libx264 @ 0x1d4f1a0] frame=  19 QP=18.95 NAL=2 Slice:P Poc:38  I:0    P:2461 SKIP:1139 size=7169 bytes
       [libx264 @ 0x1d4f1a0] frame=  20 QP=19.01 NAL=2 Slice:P Poc:40  I:1    P:2118 SKIP:1481 size=6048 bytes
       [libx264 @ 0x1d4f1a0] frame=  21 QP=19.04 NAL=2 Slice:P Poc:42  I:0    P:2114 SKIP:1486 size=5838 bytes
       [libx264 @ 0x1d4f1a0] frame=  22 QP=18.97 NAL=2 Slice:P Poc:44  I:3    P:2277 SKIP:1320 size=5952 bytes
       [libx264 @ 0x1d4f1a0] frame=  23 QP=19.12 NAL=2 Slice:P Poc:46  I:0    P:1658 SKIP:1942 size=4813 bytes
       [libx264 @ 0x1d4f1a0] frame=  24 QP=19.33 NAL=2 Slice:P Poc:48  I:0    P:1926 SKIP:1674 size=5503 bytes
       [libx264 @ 0x1d4f1a0] frame=  25 QP=19.25 NAL=2 Slice:P Poc:50  I:0    P:2470 SKIP:1130 size=6478 bytes
       [libx264 @ 0x1d4f1a0] frame=  26 QP=19.21 NAL=2 Slice:P Poc:52  I:0    P:2589 SKIP:1011 size=6985 bytes
       [libx264 @ 0x1d4f1a0] frame=  27 QP=19.12 NAL=2 Slice:P Poc:54  I:0    P:2312 SKIP:1288 size=6381 bytes
       [libx264 @ 0x1d4f1a0] frame=  28 QP=19.20 NAL=2 Slice:P Poc:56  I:2    P:2532 SKIP:1066 size=7296 bytes
       [libx264 @ 0x1d4f1a0] frame=  29 QP=19.01 NAL=2 Slice:P Poc:58  I:0    P:2611 SKIP:989  size=8186 bytes
       [libx264 @ 0x1d4f1a0] frame=  30 QP=18.95 NAL=2 Slice:P Poc:60  I:0    P:2582 SKIP:1018 size=7610 bytes
       [libx264 @ 0x1d4f1a0] frame=  31 QP=19.02 NAL=2 Slice:P Poc:62  I:2    P:2620 SKIP:978  size=8077 bytes
       [libx264 @ 0x1d4f1a0] frame=  32 QP=19.09 NAL=2 Slice:P Poc:64  I:1    P:1989 SKIP:1610 size=6214 bytes
       [libx264 @ 0x1d4f1a0] frame=  33 QP=19.09 NAL=2 Slice:P Poc:66  I:0    P:2483 SKIP:1117 size=7027 bytes
       [libx264 @ 0x1d4f1a0] frame=  34 QP=19.17 NAL=2 Slice:P Poc:68  I:0    P:2477 SKIP:1123 size=6833 bytes
       [libx264 @ 0x1d4f1a0] frame=  35 QP=19.07 NAL=2 Slice:P Poc:70  I:1    P:2373 SKIP:1226 size=6915 bytes
       [libx264 @ 0x1d4f1a0] frame=  36 QP=19.28 NAL=2 Slice:P Poc:72  I:3    P:2400 SKIP:1197 size=6975 bytes
       [libx264 @ 0x1d4f1a0] frame=  37 QP=19.21 NAL=2 Slice:P Poc:74  I:1    P:2643 SKIP:956  size=7505 bytes
       [libx264 @ 0x1d4f1a0] frame=  38 QP=19.40 NAL=2 Slice:P Poc:76  I:0    P:2289 SKIP:1311 size=6682 bytes
       [libx264 @ 0x1d4f1a0] frame=  39 QP=19.52 NAL=2 Slice:P Poc:78  I:1    P:2074 SKIP:1525 size=5823 bytes
       [libx264 @ 0x1d4f1a0] frame=  40 QP=19.72 NAL=2 Slice:P Poc:80  I:2    P:2420 SKIP:1178 size=6552 bytes
       [libx264 @ 0x1d4f1a0] frame=  41 QP=19.99 NAL=2 Slice:P Poc:82  I:274  P:2019 SKIP:1307 size=7398 bytes
       [libx264 @ 0x1d4f1a0] frame=  42 QP=19.77 NAL=2 Slice:P Poc:84  I:545  P:1946 SKIP:1109 size=7933 bytes
       [libx264 @ 0x1d4f1a0] frame=  43 QP=19.52 NAL=2 Slice:P Poc:86  I:523  P:1969 SKIP:1108 size=7596 bytes
       [libx264 @ 0x1d4f1a0] frame=  44 QP=19.25 NAL=2 Slice:P Poc:88  I:649  P:1303 SKIP:1648 size=6070 bytes
       [libx264 @ 0x1d4f1a0] frame=  45 QP=18.80 NAL=2 Slice:P Poc:90  I:949  P:1115 SKIP:1536 size=6608 bytes
       [libx264 @ 0x1d4f1a0] frame=  46 QP=18.51 NAL=2 Slice:P Poc:92  I:915  P:1141 SKIP:1544 size=6499 bytes
       [libx264 @ 0x1d4f1a0] frame=  47 QP=18.38 NAL=2 Slice:P Poc:94  I:882  P:1071 SKIP:1647 size=6326 bytes
       [libx264 @ 0x1d4f1a0] frame=  48 QP=15.38 NAL=3 Slice:I Poc:0   I:3600 P:0    SKIP:0    size=15254 bytes
       [libx264 @ 0x1d4f1a0] frame=  49 QP=18.47 NAL=2 Slice:P Poc:2   I:870  P:1178 SKIP:1552 size=9327 bytes
       [libx264 @ 0x1d4f1a0] frame=  50 QP=18.35 NAL=2 Slice:P Poc:4   I:691  P:1606 SKIP:1303 size=9056 bytes
       [libx264 @ 0x1d4f1a0] frame=  51 QP=18.56 NAL=2 Slice:P Poc:6   I:567  P:1697 SKIP:1336 size=9923 bytes
       [libx264 @ 0x1d4f1a0] frame=  52 QP=18.72 NAL=2 Slice:P Poc:8   I:500  P:1725 SKIP:1375 size=10632 bytes
       [libx264 @ 0x1d4f1a0] frame=  53 QP=18.46 NAL=2 Slice:P Poc:10  I:537  P:1789 SKIP:1274 size=9973 bytes
       [libx264 @ 0x1d4f1a0] frame=  54 QP=18.55 NAL=2 Slice:P Poc:12  I:478  P:1916 SKIP:1206 size=10196 bytes
       [libx264 @ 0x1d4f1a0] frame=  55 QP=18.68 NAL=2 Slice:P Poc:14  I:446  P:2027 SKIP:1127 size=10172 bytes
       [libx264 @ 0x1d4f1a0] frame=  56 QP=19.00 NAL=2 Slice:P Poc:16  I:284  P:2138 SKIP:1178 size=9705 bytes
       [libx264 @ 0x1d4f1a0] frame=  57 QP=19.10 NAL=2 Slice:P Poc:18  I:244  P:2116 SKIP:1240 size=9518 bytes
       [libx264 @ 0x1d4f1a0] frame=  58 QP=19.39 NAL=2 Slice:P Poc:20  I:239  P:2231 SKIP:1130 size=8953 bytes
       [libx264 @ 0x1d4f1a0] frame=  59 QP=19.16 NAL=2 Slice:P Poc:22  I:178  P:2379 SKIP:1043 size=9059 bytes
       [libx264 @ 0x1d4f1a0] frame=  60 QP=19.28 NAL=2 Slice:P Poc:24  I:58   P:2329 SKIP:1213 size=8257 bytes
       [libx264 @ 0x1d4f1a0] frame=  61 QP=19.21 NAL=2 Slice:P Poc:26  I:34   P:2231 SKIP:1335 size=6689 bytes
       [libx264 @ 0x1d4f1a0] frame=  62 QP=19.55 NAL=2 Slice:P Poc:28  I:14   P:2219 SKIP:1367 size=6164 bytes
       [libx264 @ 0x1d4f1a0] frame=  63 QP=20.04 NAL=2 Slice:P Poc:30  I:8    P:1836 SKIP:1756 size=4318 bytes
       [mp4 @ 0x1d4c880] Starting second pass: moving the moov atom to the beginning of the file
       [mp4 @ 0x1d4c880] Opening 'A066C002_170619NU_CANON.mp4' for reading
       [file @ 0xa01a460] Setting default whitelist 'file,crypto'
       [AVIOContext @ 0x6b95260] Statistics: 509968 bytes read, 0 seeks
       frame=   64 fps= 48 q=-1.0 Lsize=     500kB time=00:00:02.52 bitrate=1625.5kbits/s speed=1.88x    
       video:497kB audio:1kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.417128%
       Input file #0 (A066C002_170619NU_CANON.mov):
         Input stream #0:0 (audio): 141 packets read (288000 bytes); 141 frames decoded (144000 samples);
         Input stream #0:1 (audio): 47 packets read (96000 bytes);
         Input stream #0:2 (audio): 141 packets read (288000 bytes); 141 frames decoded (144000 samples);
         Input stream #0:3 (audio): 1 packets read (2048 bytes);
         Input stream #0:4 (data): 1 packets read (4 bytes);
         Input stream #0:5 (video): 64 packets read (59520416 bytes); 64 frames decoded;
         Total: 395 packets (60194468 bytes) demuxed
       Output file #0 (A066C002_170619NU_CANON.mp4):
         Output stream #0:0 (audio): 1 frames encoded (1024 samples); 3 packets muxed (740 bytes);
         Output stream #0:1 (video): 64 frames encoded; 64 packets muxed (509175 bytes);
         Total: 67 packets (509915 bytes) muxed
       346 frames successfully decoded, 0 decoding errors
       [AVIOContext @ 0x1c71880] Statistics: 4 seeks, 7 writeouts
       [libx264 @ 0x1d4f1a0] frame I:2     Avg QP:17.20  size: 32576
       [libx264 @ 0x1d4f1a0] frame P:62    Avg QP:18.99  size:  7152
       [libx264 @ 0x1d4f1a0] mb I  I16..4: 49.2%  0.0% 50.8%
       [libx264 @ 0x1d4f1a0] mb P  I16..4:  3.5%  0.0%  1.0%  P16..4: 45.1%  8.4%  3.5%  0.0%  0.0%    skip:38.5%
       [libx264 @ 0x1d4f1a0] coded y,uvDC,uvAC intra: 30.7% 30.5% 4.8% inter: 7.0% 19.1% 0.3%
       [libx264 @ 0x1d4f1a0] i16 v,h,dc,p: 47% 21%  9% 23%
       [libx264 @ 0x1d4f1a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 37% 18% 18%  5%  6%  4%  5%  4%  3%
       [libx264 @ 0x1d4f1a0] i8c dc,h,v,p: 72% 11% 15%  2%
       [libx264 @ 0x1d4f1a0] ref P L0: 63.8% 36.2%
       [libx264 @ 0x1d4f1a0] kb/s:1589.21
       [AVIOContext @ 0x1c583a0] Statistics: 61656934 bytes read, 59 seeks

    I happen to be absolute beginner (at least in ffmpeg). What went wrong ?

    Thanks ! Andres Mere

  • Cutting a live stream into separate mp4 files

    9 juin 2017, par Fearhunter

    I am doing a research for cutting a live stream in piece and save it as mp4 files. I am using this source for the proof of concept :

    https://docs.microsoft.com/en-us/azure/media-services/media-services-dotnet-creating-live-encoder-enabled-channel#download-sample

    And this is the example code I use :

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Security.Cryptography;
    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.WindowsAzure.MediaServices.Client;
    using Newtonsoft.Json.Linq;

    namespace AMSLiveTest
    {
       class Program
       {
           private const string StreamingEndpointName = "streamingendpoint001";
           private const string ChannelName = "channel001";
           private const string AssetlName = "asset001";
           private const string ProgramlName = "program001";

           // Read values from the App.config file.
           private static readonly string _mediaServicesAccountName =
           ConfigurationManager.AppSettings["MediaServicesAccountName"];
           private static readonly string _mediaServicesAccountKey =
           ConfigurationManager.AppSettings["MediaServicesAccountKey"];

           // Field for service context.
           private static CloudMediaContext _context = null;
           private static MediaServicesCredentials _cachedCredentials = null;

           static void Main(string[] args)
           {
               // Create and cache the Media Services credentials in a static class variable.
               _cachedCredentials = new MediaServicesCredentials(
               _mediaServicesAccountName,
               _mediaServicesAccountKey);
               // Used the cached credentials to create CloudMediaContext.
               _context = new CloudMediaContext(_cachedCredentials);

               IChannel channel = CreateAndStartChannel();

               // Set the Live Encoder to point to the channel's input endpoint:
               string ingestUrl = channel.Input.Endpoints.FirstOrDefault().Url.ToString();

               // Use the previewEndpoint to preview and verify
               // that the input from the encoder is actually reaching the Channel.
               string previewEndpoint = channel.Preview.Endpoints.FirstOrDefault().Url.ToString();

               IProgram program = CreateAndStartProgram(channel);
               ILocator locator = CreateLocatorForAsset(program.Asset, program.ArchiveWindowLength);
               IStreamingEndpoint streamingEndpoint = CreateAndStartStreamingEndpoint();
               GetLocatorsInAllStreamingEndpoints(program.Asset);

               // Once you are done streaming, clean up your resources.
               Cleanup(streamingEndpoint, channel);
           }

           public static IChannel CreateAndStartChannel()
           {
               //If you want to change the Smooth fragments to HLS segment ratio, you would set the ChannelCreationOptions’s Output property.

               IChannel channel = _context.Channels.Create(
               new ChannelCreationOptions
               {
               Name = ChannelName,
               Input = CreateChannelInput(),
               Preview = CreateChannelPreview()
               });

               //Starting and stopping Channels can take some time to execute. To determine the state of operations after calling Start or Stop, query the IChannel.State .

               channel.Start();

               return channel;
           }

           private static ChannelInput CreateChannelInput()
           {
               return new ChannelInput
               {
                   StreamingProtocol = StreamingProtocol.RTMP,
                   AccessControl = new ChannelAccessControl
                   {
                       IPAllowList = new List<iprange>
                               {
                               new IPRange
                           {
                               Name = "TestChannelInput001",
                               // Setting 0.0.0.0 for Address and 0 for SubnetPrefixLength
                               // will allow access to IP addresses.
                               Address = IPAddress.Parse("0.0.0.0"),
                               SubnetPrefixLength = 0
                           }
                       }
                   }
               };
           }

           private static ChannelPreview CreateChannelPreview()
           {
               return new ChannelPreview
               {
                   AccessControl = new ChannelAccessControl
                   {
                       IPAllowList = new List<iprange>
                       {
                           new IPRange
                           {
                               Name = "TestChannelPreview001",
                               // Setting 0.0.0.0 for Address and 0 for SubnetPrefixLength
                               // will allow access to IP addresses.
                               Address = IPAddress.Parse("0.0.0.0"),
                               SubnetPrefixLength = 0
                           }
                       }
                   }
               };
           }

           public static void UpdateCrossSiteAccessPoliciesForChannel(IChannel channel)
           {
               var clientPolicy =
                   @"&lt;?xml version=""1.0"" encoding=""utf-8""?>
               
                   
                       <policy>
                           
                               <domain uri=""></domain>
                           
                           
                              <resource path=""></resource>"" include-subpaths=""true""/>
                           
                       </policy>
                   
               ";

               var xdomainPolicy =
                   @"&lt;?xml version=""1.0"" ?>
               
                   
               ";

               channel.CrossSiteAccessPolicies.ClientAccessPolicy = clientPolicy;
               channel.CrossSiteAccessPolicies.CrossDomainPolicy = xdomainPolicy;

               channel.Update();
           }

           public static IProgram CreateAndStartProgram(IChannel channel)
           {
               IAsset asset = _context.Assets.Create(AssetlName, AssetCreationOptions.None);

               // Create a Program on the Channel. You can have multiple Programs that overlap or are sequential;
               // however each Program must have a unique name within your Media Services account.
               IProgram program = channel.Programs.Create(ProgramlName, TimeSpan.FromHours(3), asset.Id);
               program.Start();

               return program;
           }

           public static ILocator CreateLocatorForAsset(IAsset asset, TimeSpan ArchiveWindowLength)
           {
               // You cannot create a streaming locator using an AccessPolicy that includes write or delete permissions.            

               var locator = _context.Locators.CreateLocator
                   (
                       LocatorType.OnDemandOrigin,
                       asset,
                       _context.AccessPolicies.Create
                       (
                           "Live Stream Policy",
                           ArchiveWindowLength,
                           AccessPermissions.Read
                       )
                   );

               return locator;
           }

           public static IStreamingEndpoint CreateAndStartStreamingEndpoint()
           {
               var options = new StreamingEndpointCreationOptions
               {
                   Name = StreamingEndpointName,
                   ScaleUnits = 1,
                   AccessControl = GetAccessControl(),
                   CacheControl = GetCacheControl()
               };

               IStreamingEndpoint streamingEndpoint = _context.StreamingEndpoints.Create(options);
               streamingEndpoint.Start();

               return streamingEndpoint;
           }

           private static StreamingEndpointAccessControl GetAccessControl()
           {
               return new StreamingEndpointAccessControl
               {
                   IPAllowList = new List<iprange>
                   {
                       new IPRange
                       {
                           Name = "Allow all",
                           Address = IPAddress.Parse("0.0.0.0"),
                           SubnetPrefixLength = 0
                       }
                   },

                   AkamaiSignatureHeaderAuthenticationKeyList = new List<akamaisignatureheaderauthenticationkey>
                   {
                       new AkamaiSignatureHeaderAuthenticationKey
                       {
                           Identifier = "My key",
                           Expiration = DateTime.UtcNow + TimeSpan.FromDays(365),
                           Base64Key = Convert.ToBase64String(GenerateRandomBytes(16))
                       }
                   }
               };
           }

           private static byte[] GenerateRandomBytes(int length)
           {
               var bytes = new byte[length];
               using (var rng = new RNGCryptoServiceProvider())
               {
                   rng.GetBytes(bytes);
               }

               return bytes;
           }

           private static StreamingEndpointCacheControl GetCacheControl()
           {
               return new StreamingEndpointCacheControl
               {
                   MaxAge = TimeSpan.FromSeconds(1000)
               };
           }

           public static void UpdateCrossSiteAccessPoliciesForStreamingEndpoint(IStreamingEndpoint streamingEndpoint)
           {
               var clientPolicy =
                   @"&lt;?xml version=""1.0"" encoding=""utf-8""?>
               
                   
                       <policy>
                           
                               <domain uri=""></domain>
                           
                           
                              <resource path=""></resource>"" include-subpaths=""true""/>
                           
                       </policy>
                   
               ";

               var xdomainPolicy =
                   @"&lt;?xml version=""1.0"" ?>
               
                   
               ";

               streamingEndpoint.CrossSiteAccessPolicies.ClientAccessPolicy = clientPolicy;
               streamingEndpoint.CrossSiteAccessPolicies.CrossDomainPolicy = xdomainPolicy;

               streamingEndpoint.Update();
           }

           public static void GetLocatorsInAllStreamingEndpoints(IAsset asset)
           {
               var locators = asset.Locators.Where(l => l.Type == LocatorType.OnDemandOrigin);
               var ismFile = asset.AssetFiles.AsEnumerable().FirstOrDefault(a => a.Name.EndsWith(".ism"));
               var template = new UriTemplate("{contentAccessComponent}/{ismFileName}/manifest");
               var urls = locators.SelectMany(l =>
                           _context
                               .StreamingEndpoints
                               .AsEnumerable()
                               .Where(se => se.State == StreamingEndpointState.Running)
                               .Select(
                                   se =>
                                       template.BindByPosition(new Uri("http://" + se.HostName),
                                       l.ContentAccessComponent,
                                           ismFile.Name)))
                           .ToArray();

           }

           public static void Cleanup(IStreamingEndpoint streamingEndpoint,
                                       IChannel channel)
           {
               if (streamingEndpoint != null)
               {
                   streamingEndpoint.Stop();
                   streamingEndpoint.Delete();
               }

               IAsset asset;
               if (channel != null)
               {

                   foreach (var program in channel.Programs)
                   {
                       asset = _context.Assets.Where(se => se.Id == program.AssetId)
                                               .FirstOrDefault();

                       program.Stop();
                       program.Delete();

                       if (asset != null)
                       {
                           foreach (var l in asset.Locators)
                               l.Delete();

                           asset.Delete();
                       }
                   }

                   channel.Stop();
                   channel.Delete();
               }
           }
       }
    }
    </akamaisignatureheaderauthenticationkey></iprange></iprange></iprange>

    Now I want to make a method to cut a live stream for example every 15 minutes and save it as mp4 but don’t know where to start.

    Can someone point me in the right direction ?

    Kind regards

    UPDATE :

    I want to save the mp4 files on my hard disk.