Recherche avancée

Médias (0)

Mot : - Tags -/metadatas

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

Autres articles (45)

  • Les formats acceptés

    28 janvier 2010, par

    Les commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
    ffmpeg -codecs ffmpeg -formats
    Les format videos acceptés en entrée
    Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
    Les formats vidéos de sortie possibles
    Dans un premier temps on (...)

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

  • Demande de création d’un canal

    12 mars 2010, par

    En fonction de la configuration de la plateforme, l’utilisateur peu avoir à sa disposition deux méthodes différentes de demande de création de canal. La première est au moment de son inscription, la seconde, après son inscription en remplissant un formulaire de demande.
    Les deux manières demandent les mêmes choses fonctionnent à peu près de la même manière, le futur utilisateur doit remplir une série de champ de formulaire permettant tout d’abord aux administrateurs d’avoir des informations quant à (...)

Sur d’autres sites (4862)

  • Stream ffmpeg transcoding result to S3

    7 juin 2019, par mabead

    I want to transcode a large file using FFMPEG and store the result directly on AWS S3. This will be done inside of an AWS Lambda that has limited tmp space so I can’t store the transcoding result locally and then upload it to S3 in a second step. I won’t have enough tmp space. I therefore want to store the FFMPEG output directly on S3.

    I therefore created a S3 pre-signed url that allows ’PUT’ :

    var outputPath = s3Client.GetPreSignedURL(new Amazon.S3.Model.GetPreSignedUrlRequest
    {
       BucketName = "my-bucket",
       Expires = DateTime.UtcNow.AddMinutes(5),
       Key = "output.mp3",
       Verb = HttpVerb.PUT,
    });

    I then called ffmpeg with the resulting pre-signed url :

    ffmpeg -i C:\input.wav -y -vn -ar 44100 -ac 2 -ab 192k -f mp3 https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550427237&Signature=%2BE8Wc%2F%2FQYrvGxzc%2FgXnsvauKnac%3D

    FFMPEG returns an exit code of 1 with the following output :

    ffmpeg version N-93120-ga84af760b8 Copyright (c) 2000-2019 the FFmpeg developers
     built with gcc 8.2.1 (GCC) 20190212
     configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
     libavutil      56. 26.100 / 56. 26.100
     libavcodec     58. 47.100 / 58. 47.100
     libavformat    58. 26.101 / 58. 26.101
     libavdevice    58.  6.101 / 58.  6.101
     libavfilter     7. 48.100 /  7. 48.100
     libswscale      5.  4.100 /  5.  4.100
     libswresample   3.  4.100 /  3.  4.100
     libpostproc    55.  4.100 / 55.  4.100
    Guessed Channel Layout for Input Stream #0.0 : stereo
    Input #0, wav, from 'C:\input.wav':
     Duration: 00:04:16.72, bitrate: 3072 kb/s
       Stream #0:0: Audio: pcm_s32le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s32, 3072 kb/s
    Stream mapping:
     Stream #0:0 -> #0:0 (pcm_s32le (native) -> mp3 (libmp3lame))
    Press [q] to stop, [?] for help
    Output #0, mp3, to 'https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550427237&Signature=%2BE8Wc%2F%2FQYrvGxzc%2FgXnsvauKnac%3D':
     Metadata:
       TSSE            : Lavf58.26.101
       Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s32p, 192 kb/s
       Metadata:
         encoder         : Lavc58.47.100 libmp3lame
    size=     577kB time=00:00:24.58 bitrate= 192.2kbits/s speed=49.1x    
    size=    1109kB time=00:00:47.28 bitrate= 192.1kbits/s speed=47.2x    
    [tls @ 000001d73d786b00] Error in the push function.
    av_interleaved_write_frame(): I/O error
    Error writing trailer of https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550427237&Signature=%2BE8Wc%2F%2FQYrvGxzc%2FgXnsvauKnac%3D: I/O error
    size=    1143kB time=00:00:48.77 bitrate= 192.0kbits/s speed=  47x    
    video:0kB audio:1144kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    [tls @ 000001d73d786b00] The specified session has been invalidated for some reason.
    [tls @ 000001d73d786b00] Error in the pull function.
    [https @ 000001d73d784fc0] URL read error:  -5
    Conversion failed!

    As you can see, I have a URL read error. This is a little surprising to me since I want to output to this url and not read it.

    Anybody know how I can store directly my FFMPEG output directly to S3 without having to store it locally first ?

    Edit 1
    I then tried to use the -method PUT parameter and use http instead of https to remove TLS from the equation. Here’s the output that I got when running ffmpeg with the -v trace option.

    ffmpeg version N-93120-ga84af760b8 Copyright (c) 2000-2019 the FFmpeg developers
     built with gcc 8.2.1 (GCC) 20190212
     configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
     libavutil      56. 26.100 / 56. 26.100
     libavcodec     58. 47.100 / 58. 47.100
     libavformat    58. 26.101 / 58. 26.101
     libavdevice    58.  6.101 / 58.  6.101
     libavfilter     7. 48.100 /  7. 48.100
     libswscale      5.  4.100 /  5.  4.100
     libswresample   3.  4.100 /  3.  4.100
     libpostproc    55.  4.100 / 55.  4.100
    Splitting the commandline.
    Reading option '-i' ... matched as input url with argument 'C:\input.wav'.
    Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
    Reading option '-vn' ... matched as option 'vn' (disable video) with argument '1'.
    Reading option '-ar' ... matched as option 'ar' (set audio sampling rate (in Hz)) with argument '44100'.
    Reading option '-ac' ... matched as option 'ac' (set number of audio channels) with argument '2'.
    Reading option '-ab' ... matched as option 'ab' (audio bitrate (please use -b:a)) with argument '192k'.
    Reading option '-f' ... matched as option 'f' (force format) with argument 'mp3'.
    Reading option '-method' ... matched as AVOption 'method' with argument 'PUT'.
    Reading option '-v' ... matched as option 'v' (set logging level) with argument 'trace'.
    Reading option 'https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550695990&Signature=dy3RVqDlX%2BlJ0INlDkl0Lm1Rqb4%3D' ... matched as output url.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option y (overwrite output files) with argument 1.
    Applying option v (set logging level) with argument trace.
    Successfully parsed a group of options.
    Parsing a group of options: input url C:\input.wav.
    Successfully parsed a group of options.
    Opening an input file: C:\input.wav.
    [NULL @ 000001fb37abb180] Opening 'C:\input.wav' for reading
    [file @ 000001fb37abc180] Setting default whitelist 'file,crypto'
    Probing wav score:99 size:2048
    [wav @ 000001fb37abb180] Format wav probed with size=2048 and score=99
    [wav @ 000001fb37abb180] Before avformat_find_stream_info() pos: 54 bytes read:65590 seeks:1 nb_streams:1
    [wav @ 000001fb37abb180] parser not found for codec pcm_s32le, packets or times may be invalid.
       Last message repeated 1 times
    [wav @ 000001fb37abb180] All info found
    [wav @ 000001fb37abb180] stream 0: start_time: -192153584101141.156 duration: 256.716
    [wav @ 000001fb37abb180] format: start_time: -9223372036854.775 duration: 256.716 bitrate=3072 kb/s
    [wav @ 000001fb37abb180] After avformat_find_stream_info() pos: 204854 bytes read:294966 seeks:1 frames:50
    Guessed Channel Layout for Input Stream #0.0 : stereo
    Input #0, wav, from 'C:\input.wav':
     Duration: 00:04:16.72, bitrate: 3072 kb/s
       Stream #0:0, 50, 1/48000: Audio: pcm_s32le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s32, 3072 kb/s
    Successfully opened the file.
    Parsing a group of options: output url https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550695990&Signature=dy3RVqDlX%2BlJ0INlDkl0Lm1Rqb4%3D.
    Applying option vn (disable video) with argument 1.
    Applying option ar (set audio sampling rate (in Hz)) with argument 44100.
    Applying option ac (set number of audio channels) with argument 2.
    Applying option ab (audio bitrate (please use -b:a)) with argument 192k.
    Applying option f (force format) with argument mp3.
    Successfully parsed a group of options.
    Opening an output file: https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550695990&Signature=dy3RVqDlX%2BlJ0INlDkl0Lm1Rqb4%3D.
    [http @ 000001fb37b15140] Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
    [tcp @ 000001fb37b16c80] Original list of addresses:
    [tcp @ 000001fb37b16c80] Address 52.216.8.203 port 80
    [tcp @ 000001fb37b16c80] Interleaved list of addresses:
    [tcp @ 000001fb37b16c80] Address 52.216.8.203 port 80
    [tcp @ 000001fb37b16c80] Starting connection attempt to 52.216.8.203 port 80
    [tcp @ 000001fb37b16c80] Successfully connected to 52.216.8.203 port 80
    [http @ 000001fb37b15140] request: PUT /output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550695990&Signature=dy3RVqDlX%2BlJ0INlDkl0Lm1Rqb4%3D HTTP/1.1
    Transfer-Encoding: chunked
    User-Agent: Lavf/58.26.101
    Accept: */*
    Connection: close
    Host: landr-distribution-reportsdev-mb.s3.amazonaws.com
    Icy-MetaData: 1
    Successfully opened the file.
    Stream mapping:
     Stream #0:0 -> #0:0 (pcm_s32le (native) -> mp3 (libmp3lame))
    Press [q] to stop, [?] for help
    cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    detected 8 logical cores
    [graph_0_in_0_0 @ 000001fb37b21080] Setting 'time_base' to value '1/48000'
    [graph_0_in_0_0 @ 000001fb37b21080] Setting 'sample_rate' to value '48000'
    [graph_0_in_0_0 @ 000001fb37b21080] Setting 'sample_fmt' to value 's32'
    [graph_0_in_0_0 @ 000001fb37b21080] Setting 'channel_layout' to value '0x3'
    [graph_0_in_0_0 @ 000001fb37b21080] tb:1/48000 samplefmt:s32 samplerate:48000 chlayout:0x3
    [format_out_0_0 @ 000001fb37b22cc0] Setting 'sample_fmts' to value 's32p|fltp|s16p'
    [format_out_0_0 @ 000001fb37b22cc0] Setting 'sample_rates' to value '44100'
    [format_out_0_0 @ 000001fb37b22cc0] Setting 'channel_layouts' to value '0x3'
    [format_out_0_0 @ 000001fb37b22cc0] auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_0'
    [AVFilterGraph @ 000001fb37b0d940] query_formats: 4 queried, 6 merged, 3 already done, 0 delayed
    [auto_resampler_0 @ 000001fb37b251c0] picking s32p out of 3 ref:s32
    [auto_resampler_0 @ 000001fb37b251c0] [SWR @ 000001fb37b252c0] Using fltp internally between filters
    [auto_resampler_0 @ 000001fb37b251c0] ch:2 chl:stereo fmt:s32 r:48000Hz -> ch:2 chl:stereo fmt:s32p r:44100Hz
    Output #0, mp3, to 'https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550695990&Signature=dy3RVqDlX%2BlJ0INlDkl0Lm1Rqb4%3D':
     Metadata:
       TSSE            : Lavf58.26.101
       Stream #0:0, 0, 1/44100: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s32p, delay 1105, 192 kb/s
       Metadata:
         encoder         : Lavc58.47.100 libmp3lame
    cur_dts is invalid (this is harmless if it occurs once at the start per stream)
       Last message repeated 6 times
    size=     649kB time=00:00:27.66 bitrate= 192.2kbits/s speed=55.3x    
    size=    1207kB time=00:00:51.48 bitrate= 192.1kbits/s speed=51.5x    
    av_interleaved_write_frame(): Unknown error
    No more output streams to write to, finishing.
    [libmp3lame @ 000001fb37b147c0] Trying to remove 47 more samples than there are in the queue
    Error writing trailer of https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550695990&Signature=dy3RVqDlX%2BlJ0INlDkl0Lm1Rqb4%3D: Error number -10054 occurred
    size=    1251kB time=00:00:53.39 bitrate= 192.0kbits/s speed=51.5x    
    video:0kB audio:1252kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    Input file #0 (C:\input.wav):
     Input stream #0:0 (audio): 5014 packets read (20537344 bytes); 5014 frames decoded (2567168 samples);
     Total: 5014 packets (20537344 bytes) demuxed
    Output file #0 (https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550695990&Signature=dy3RVqDlX%2BlJ0INlDkl0Lm1Rqb4%3D):
     Output stream #0:0 (audio): 2047 frames encoded (2358144 samples); 2045 packets muxed (1282089 bytes);
     Total: 2045 packets (1282089 bytes) muxed
    5014 frames successfully decoded, 0 decoding errors
    [AVIOContext @ 000001fb37b1f440] Statistics: 0 seeks, 2046 writeouts
    [http @ 000001fb37b15140] URL read error:  -10054
    [AVIOContext @ 000001fb37ac4400] Statistics: 20611126 bytes read, 1 seeks
    Conversion failed!

    So it looks like it is able to connect to my S3 pre-signed url but I still have the Error writing trailer error coupled with a URL read error.

  • Unknown V4L2 pixel format equivalent for yuva420p with ffmpeg and v4l2loopback

    7 février 2019, par Kim

    I am trying to use filter_complex from ffmpeg to stich several video input together into one output.

    I use v4l2loopback to create a virtual video device :

    sudo modprobe v4l2loopback video_nr=90

    In this example, i first try with only one camera :

    v4l2-ctl --device=/dev/video0 --info gives the following output :

    Driver Info (not using libv4l2):
           Driver name   : uvcvideo
           Card type     : HD USB Camera
           Bus info      : usb-0000:00:14.0-13.2
           Driver version: 4.10.17
           Capabilities  : 0x84200001
                   Video Capture
                   Streaming
                   Extended Pix Format
                   Device Capabilities
           Device Caps   : 0x04200001
                   Video Capture
                   Streaming
                   Extended Pix Format
    Priority: 2
    Video input : 0 (Camera 1: ok)
    Format Video Capture:
           Width/Height      : 640/480
           Pixel Format      : 'YUYV'
           Field             : None
           Bytes per Line    : 1280
           Size Image        : 614400
           Colorspace        : sRGB
           Transfer Function : Default
           YCbCr Encoding    : Default
           Quantization      : Default
           Flags             :
    Crop Capability Video Capture:
           Bounds      : Left 0, Top 0, Width 640, Height 480
           Default     : Left 0, Top 0, Width 640, Height 480
           Pixel Aspect: 1/1
    Selection: crop_default, Left 0, Top 0, Width 640, Height 480
    Selection: crop_bounds, Left 0, Top 0, Width 640, Height 480
    Streaming Parameters Video Capture:
           Capabilities     : timeperframe
           Frames per second: 30.000 (30/1)
           Read buffers     : 0
                        brightness (int)    : min=0 max=15 step=1 default=8 value=8
                          contrast (int)    : min=0 max=15 step=1 default=8 value=8
                        saturation (int)    : min=0 max=15 step=1 default=7 value=7
                               hue (int)    : min=-10 max=10 step=1 default=0value=0
    white_balance_temperature_auto (bool)   : default=1 value=1
                             gamma (int)    : min=1 max=10 step=1 default=7 value=7
                              gain (int)    : min=0 max=0 step=0 default=0 value=0
              power_line_frequency (menu)   : min=0 max=2 default=2 value=2
         white_balance_temperature (int)    : min=2800 max=6500 step=1 default=2800 value=2800 flags=inactive
                         sharpness (int)    : min=0 max=15 step=1 default=6 value=6
            backlight_compensation (int)    : min=0 max=1 step=1 default=0 value=0
                     exposure_auto (menu)   : min=0 max=3 default=3 value=3
                 exposure_absolute (int)    : min=4 max=5000 step=1 default=625 value=625 flags=inactive
                    focus_absolute (int)    : min=0 max=21 step=1 default=16 value=16 flags=inactive
                        focus_auto (bool)   : default=1 value=1

    Then i use this command to ouput /dev/video0 to /dev/video90 on the left side with a specific resolution :

    ffmpeg -loglevel verbose -y \
     -f v4l2 -thread_queue_size 512 -i /dev/video0 \
     -filter_complex "nullsrc=size=960x240 [base]; \
             [0:v] format=pix_fmts=yuva420p, setpts=PTS-STARTPTS, scale=320x240 [left]; \
             [base][left] overlay=shortest=1" \
     -f v4l2 /dev/video90

    Which results in the following error :

    [v4l2 @ 0x55fa67d02f60] Unknown V4L2 pixel format equivalent for yuva420p
    Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
    Error initializing output stream 0:0 --
    Conversion failed!

    Full logs :

    ffmpeg version 3.4.4-1~16.04.york0 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
     configuration: --prefix=/usr --extra-version='1~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
     WARNING: library configuration mismatch
     avcodec     configuration: --prefix=/usr --extra-version='1~16.04.york0'--toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
     libavutil      55. 78.100 / 55. 78.100
     libavcodec     57.107.100 / 57.107.100
     libavformat    57. 83.100 / 57. 83.100
     libavdevice    57. 10.100 / 57. 10.100
     libavfilter     6.107.100 /  6.107.100
     libavresample   3.  7.  0 /  3.  7.  0
     libswscale      4.  8.100 /  4.  8.100
     libswresample   2.  9.100 /  2.  9.100
     libpostproc    54.  7.100 / 54.  7.100
    [video4linux2,v4l2 @ 0x55fa67cfca00] fd:5 capabilities:84200001
    [video4linux2,v4l2 @ 0x55fa67cfca00] Querying the device for the current frame size
    [video4linux2,v4l2 @ 0x55fa67cfca00] Setting frame size to 640x480
    Input #0, video4linux2,v4l2, from '/dev/video0':
     Duration: N/A, start: 273229.829138, bitrate: 147456 kb/s
       Stream #0:0: Video: rawvideo, 1 reference frame (YUY2 / 0x32595559), yuyv422, 640x480, 147456 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
    [Parsed_nullsrc_0 @ 0x55fa67d00680] size:960x240 rate:25/1 duration:-1.000000 sar:1/1
    [Parsed_scale_3 @ 0x55fa67d02240] w:320 h:240 flags:'bilinear' interl:0
    Stream mapping:
     Stream #0:0 (rawvideo) -> format
     overlay -> Stream #0:0 (rawvideo)
    Press [q] to stop, [?] for help
    [Parsed_nullsrc_0 @ 0x55fa67cfc760] size:960x240 rate:25/1 duration:-1.000000 sar:1/1
    [Parsed_scale_3 @ 0x55fa67d055c0] w:320 h:240 flags:'bilinear' interl:0
    [graph 0 input from stream 0:0 @ 0x55fa67d06a40] w:640 h:480 pixfmt:yuyv422 tb:1/1000000 fr:30/1 sar:0/1 sws_param:flags=2
    [auto_scaler_0 @ 0x55fa67d05d80] w:iw h:ih flags:'bilinear' interl:0
    [Parsed_format_1 @ 0x55fa67d04360] auto-inserting filter 'auto_scaler_0' between the filter 'graph 0 input from stream 0:0' and the filter 'Parsed_format_1'
    [auto_scaler_0 @ 0x55fa67d05d80] w:640 h:480 fmt:yuyv422 sar:0/1 -> w:640 h:480 fmt:yuva420p sar:0/1 flags:0x2
    [Parsed_format_1 @ 0x55fa67d04360] TB:0.000001 FRAME_RATE:30.000000 SAMPLE_RATE:nan
    [Parsed_scale_3 @ 0x55fa67d055c0] w:640 h:480 fmt:yuva420p sar:0/1 -> w:320 h:240 fmt:yuva420p sar:0/1 flags:0x2
    [Parsed_overlay_4 @ 0x55fa67d05e80] main w:960 h:240 fmt:yuva420p overlay w:320 h:240 fmt:yuva420p
    [Parsed_overlay_4 @ 0x55fa67d05e80] [framesync @ 0x55fa67d05fa8] Selected 1/1000000 time base
    [Parsed_overlay_4 @ 0x55fa67d05e80] [framesync @ 0x55fa67d05fa8] Sync level 2
    [v4l2 @ 0x55fa67d02f60] Unknown V4L2 pixel format equivalent for yuva420p
    Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
    Error initializing output stream 0:0 --
    Conversion failed!

    What I tried and didn’t work :

    • use -f h264 for the output, which ends in a av_interleaved_write_frame(): Invalid argument error
  • Piping stdout on windows to docker container running linux

    13 avril 2015, par kolpax

    I need to pipe the output of a program that only runs on Windows, to another program that only runs on Linux. (The programs are very similar to FFMPEG in functionality so for testing I’m piping FFMPEG stdout on Windows to FFMPEG stdin on Linux.)

    I am using Docker to run a Linux container on Windows. Docker supports piping data from the host to the Docker container like this :

    ffmpeg -i <input /> -c:a copy -v:a copy -f mpegts - | docker run ffmpeg-container -f mpegts -i - -c:a copy -c:v copy <output>
    </output>

    But Docker on Windows runs in a virtual machine and doesn’t have a native client, which means I can’t pipe directly to the container. So far I haven’t been able to find any examples or discussions about piping data through the virtual machine on Windows.

    I have tried alternative solutions like using netcat for piping but it has a much too slow throughput :

    Windows :

    ffmpeg -i <input /> -c:a copy -v:a copy -f mpegts - | ncat <ip address="address"> <port>
    </port></ip>

    Linux :

    nc -l <ip address="address"> <port> | ffmpeg -f mpegts -i - -c:a copy -c:v copy <output>
    </output></port></ip>

    Transcoding purely in Windows yields about 100 FPS, while the netcat solution runs at 0.1 FPS. I am hoping that piping directly will give a better result.

    Other solutions I’ve tried involve streaming the data from FFMPEG to FFMPEG using UDP - just to have the output come out of stdout, but the data was corrupted during the transfer. I suspect the problem was in the packets arriving out of order.

    Any solutions similar to these will be greatly appreciated. The content is video data so solutions that uses FFMPEG to get the data across are acceptable.