Newest 'ffmpeg' Questions - Stack Overflow

http://stackoverflow.com/questions/tagged/ffmpeg

Les articles publiés sur le site

  • Stream to youtube from xvfb using ffmpeg and x11grab

    13 décembre 2017, par Ivan Sergeev

    I want to make stream from virtual display to youtube via ffmpeg. I'm using this code:

    #! /bin/bash
    
    BITRATE="2500k"                                    
    FPS="30"                                       
    
    YOUTUBE_URL="rtmp://a.rtmp.youtube.com/live2"  
    YOUTUBE_KEY="..."                                     
    
    SOURCE="./test.mp4"
    
    export DISPLAY=44
    sudo xvfb-run -a -n 44 -l -s "-screen 0, 1280x720x24" google-chrome -start-maximized https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif --no-sandbox >/dev/null &
    
    ffmpeg -threads 0 -y -v verbose -re \
     -f x11grab -video_size 1280x720 -i :44 \
     -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -r $FPS -g $(($FPS * 2)) -b:v $BITRATE -bufsize 512k \
     -acodec libmp3lame -ar 44100 -threads 0 -crf 25 -b:a 712000 -bufsize 512k \
     -f flv "$YOUTUBE_URL/$YOUTUBE_KEY"
    

    And I don't receive any errors, but youtube cannot start stream(

    In my log:

    Stream mapping:
    Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    frame=    4 fps=0.0 q=17.0 size=      72kB time=00:00:00.50 bitrate=1186.9kbits/s
    frame=    6 fps=5.9 q=17.0 size=     106kB time=00:00:00.93 bitrate= 931.2kbits
    frame=    8 fps=5.3 q=17.0 size=     141kB time=00:00:01.36 bitrate= 846.4kbits/s
    frame=   11 fps=5.4 q=16.0 size=     188kB time=00:00:02.00 bitrate= 771.9kbits/s
    frame=   13 fps=5.2 q=15.0 size=     217kB time=00:00:02.43 bitrate= 730.5kbits/s
    frame=   15 fps=5.0 q=14.0 size=     241kB time=00:00:02.86 bitrate= 687.2kbits/s
    frame=   18 fps=5.1 q=14.0 size=     270kB time=00:00:03.53 bitrate= 625.2kbits/s
    frame=   20 fps=4.9 q=15.0 size=     294kB time=00:00:03.96 bitrate= 608.3kbits/s
    

    etc.

    However, if I do stream from file, but not x11grab stream is starting normal.

    What I'm doing wrong? Any ideas, guys, please)

  • Encoding 4K 60Hz lossless from a capture card

    13 décembre 2017, par Alex Pizzi

    Windows 10 64-bit Ryzen 7 GTX 1080 32GB RAM

    Hi all,

    I'm trying to encode 4K 30/60Hz video in a lossless format from a 4K capture card and everything I've tried gives me a similar error as in the linked image, [real-time buffer too full or near too full frame dropped]

    [Not mine] https://cloud.githubusercontent.com/assets/4932401/22171307/ef5c9864-df58-11e6-8821-4b74ce3f32d0.png

    This is the command I've tried most recently:

    ffmpeg.exe -f dshow -video_size 3840x2160 -framerate 30 -pixel_format bgr24 -rtbufsize INT_MAX -i video="MZ0380 PCI, Analog 01 Capture" -vf fps=30 out%d.BMP

    With the images dumped to a 10G RAM disk or 850 EVO. I'm doing this to skip the encoding step.

    I get the same error when encoding with h265 lossless and NVENC h265 lossless.

    I need the video to be lossless as it will be used to test hardware h265 encoders.

    Video source is a 4K Blu-ray.

    Any help would be greatly appreciated. Thank you.

    -Alex P

  • How to record a webcam to a file outside of X11 ?

    13 décembre 2017, par Dav Clark

    I'm working with teachers to automatically record their classes, so we can review them and improve the quality of teaching. We have computers running Ubuntu 17.10 with multiple webcams in a couple of classrooms - but I could run other software if it makes this task easier.

    I can successfully record a stream from the webcam to an h264 encoded file using gstreamer. The following should work for most people with gstreamer installed, but I've got fancier pipelines using vaapi that can simultaneously encode multiple 4k streams on a NUC with room to spare! My point is that Gstreamer works great when I'm typing at a terminal in the GUI. The example:

    .\gst-launch-1.0.exe -e autovideosrc ! videoconvert ! \
      openh264enc max-bitrate=256000 ! h264parse ! \
      mp4mux ! filesink location=somefile.mp4
    

    I imagine I could also do this with ffmpeg, or OpenCV, or maybe even VLC (I can record a webcam via the GUI, so I guess I could use that to generate a command line?).

    But when I tried any of the above, for example, via SSH, I get errors from GStreamer and OpenCV, and blank videos from ffmpeg (I haven't tried VLC because I don't currently have access to these machines). I need to automate - but I could potentially leave a user logged in. I just need to have some way to capture webcam to disk with some amount of reasonable compression.

    I naively thought I could throw something like the above into a cron job and I'd be good to go (intending to send a SIGINT to end recording). But anything that can be automatically scheduled somehow would be great.

    EDIT: Below is an approach I'm trying using ffmpeg. You can see from the output that I can't figure out how to specify pixel_format in a way that ffmpeg pays attention to! First, the command (using mkv because that seems to be a "low-stress" format, but have also tried mov and mp4):

    ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 \
      -f v4l2 -framerate 30 -video_size hd720 -pixel_format yuv420p -i /dev/video1 output.mkv
    

    Like I said, I'm trying to get hardware acceleration, and you can see below that VAAPI is working (but I think just for decoding). You can easily remove the options from the first line, and I get similar results either way. I didn't include the header with compile options and library versions, as it's standard Ubuntu 17.10.

    libva info: VA-API version 0.40.0
    libva info: va_getDriverName() returns 0
    libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
    libva info: Found init function __vaDriverInit_0_40
    libva info: va_openDriver() returns 0
    Input #0, video4linux2,v4l2, from '/dev/video1':
      Duration: N/A, start: 42437.238243, bitrate: 442368 kb/s
        Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 1280x720, 442368 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
    File 'output.mkv' already exists. Overwrite ? [y/N] y
    Stream mapping:
      Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    No pixel format specified, yuv422p for H.264 encoding chosen.
    Use -pix_fmt yuv420p for compatibility with outdated media players.
    [libx264 @ 0x55d1a26a71a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
    [libx264 @ 0x55d1a26a71a0] profile High 4:2:2, level 3.1, 4:2:2 8-bit
    [libx264 @ 0x55d1a26a71a0] 264 - core 148 r2795 aaa9aa8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, matroska, to 'output.mkv':
      Metadata:
        encoder         : Lavf57.71.100
        Stream #0:0: Video: h264 (libx264) (H264 / 0x34363248), yuv422p, 1280x720, q=-1--1, 30 fps, 1k tbn, 30 tbc
        Metadata:
          encoder         : Lavc57.89.100 libx264
        Side data:
          cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Past duration 0.717049 too large
    Past duration 0.879128 too large
    frame=  567 fps= 16 q=27.0 size=    2156kB time=00:00:34.16 bitrate= 516.9kbits/s speed=0.938x
    

    I exit with ctrl-C. Which results in what appears to be an orderly exit:

    [libx264 @ 0x55d1a26a71a0] frame I:11    Avg QP:15.75  size: 18573
    [libx264 @ 0x55d1a26a71a0] frame P:2176  Avg QP:19.91  size:  4435
    [libx264 @ 0x55d1a26a71a0] frame B:173   Avg QP:20.00  size:  3232
    [libx264 @ 0x55d1a26a71a0] consecutive B-frames: 90.1%  0.1%  0.6%  9.2%
    [libx264 @ 0x55d1a26a71a0] mb I  I16..4: 34.0% 56.1%  9.8%
    [libx264 @ 0x55d1a26a71a0] mb P  I16..4:  0.1%  1.2%  0.0%  P16..4: 32.7%  3.1%  6.1%  0.0%  0.0%    skip:56.8%
    [libx264 @ 0x55d1a26a71a0] mb B  I16..4:  0.0%  0.3%  0.0%  B16..8: 31.9%  0.7%  0.1%  direct: 1.4%  skip:65.6%  L0:41.8% L1:57.9% BI: 0.3%
    [libx264 @ 0x55d1a26a71a0] 8x8 transform intra:81.2% inter:92.4%
    [libx264 @ 0x55d1a26a71a0] coded y,uvDC,uvAC intra: 25.4% 20.1% 2.1% inter: 10.2% 7.4% 0.0%
    [libx264 @ 0x55d1a26a71a0] i16 v,h,dc,p: 78% 10%  7%  5%
    [libx264 @ 0x55d1a26a71a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  7%  6% 72%  2%  3%  3%  2%  2%  3%
    [libx264 @ 0x55d1a26a71a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 34% 21% 25%  4%  5%  3%  4%  1%  3%
    [libx264 @ 0x55d1a26a71a0] i8c dc,h,v,p: 69% 14% 15%  2%
    [libx264 @ 0x55d1a26a71a0] Weighted P-Frames: Y:1.7% UV:0.1%
    [libx264 @ 0x55d1a26a71a0] ref P L0: 49.3%  2.7% 29.6% 18.1%  0.3%
    [libx264 @ 0x55d1a26a71a0] ref B L0: 69.3% 24.1%  6.6%
    [libx264 @ 0x55d1a26a71a0] ref B L1: 86.6% 13.4%
    [libx264 @ 0x55d1a26a71a0] kb/s:529.95
    Exiting normally, received signal 2.
    
  • FFMPEG how to record aac codec audio same time with video ?

    13 décembre 2017, par Gomi Odabaşıoğlu

    I am trying to use FFMPEG console tools effectively. Now I can record video and audio same time but my issue audio is delaying. I use following code:

    C:\Users\gomid_000\Desktop\ffmpeg.exe -y -f dshow -i audio="Stereo Mix (Realtek High Definition Audio)" -f gdigrab -show_region 1 -framerate 60 -i desktop -map 0 -map 1 -c:v libx264 -preset ultrafast -pix_fmt yuv420p C:\Users\gomid_000\Desktop\out.mp4 -threads:1 4
    

    I want to use h264 - Intel quick sync codec for video and for the audio AAC codec My machine accepts it.

    I tried to use Intel QSV with following code, is that correct ? (scroll "-c:v h264_qsv" part of the code)

    C:\Users\gomid_000\Desktop\ffmpeg.exe -y -f dshow -i audio="Stereo Mix (Realtek High Definition Audio)" -f gdigrab -show_region 1 -framerate 60 -i desktop -map 0 -map 1 -c:v h264_qsv -pix_fmt yuv420p C:\Users\gomid_000\Desktop\out.mp4
    

    Still do not know How to use AAC to record audio and keeep video and audio matching times automaticly. It is not installed maybe (?) (I do not know how to tell this in English will try:"Person speaks but audio comes very near but delays a little bit when I try bandicam they just match each other without any delay this is not hardware related.")

  • Error while generating video thumbnail in laravel

    13 décembre 2017, par jack

    I am using ffmpeg and Pawlox/video-thumbnail package to generate thumbnail. I have already installed both ffmpeg and pawlox/video-thumbnail.

    Here is my code.

    VideoThumbnail::createThumbnail(url('/storage/app/accident_report_videos/ynvO5D9GzUJsLPj8vPlyiOEND0ag9MeFGr4NFu5k.mp4'), asset('thumbnAils'), '111.jpg', 2, 600, 600);
    

    Error:

    error:getimagesize(http://54.255.240.102/storage/app/accident_report_videos/thumbs/ynvO5D9GzUJsLPj8vPlyiOEND0ag9MeFGr4NFu5k.jpg): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
    

    Video path and thumbnail path are both right. But it is using thumbnail method in videothumbnail.php to create thumbnail. This function is generating thumbnail. So after that it calls resizeCropImage() function in which they uses getimagesize() funtion. And getiamgesize() function does not get image from because it is never generated.