How to stream live-video display from a webcam using FFMPEG command on tcl version 8.0 and windows 7?

16,027

Solution 1

Assuming your ffmpeg is a recent build, use

ffmpeg -f dshow -rtbufsize 64M -i "video=Integrated Webcam" -s 1280x720 -f sdl2 -

A window will pop up with the video output.

For not-so-recent builds, you may have to use sdl and not sdl2.

Get recent builds from http://ffmpeg.zeranoe.com/builds/

Solution 2

To View a live stream from your camera try:

ffplay -f dshow -video_size 1280x720 -i video="device name"

where device name is found from listing out the available devices using this command:

ffmpeg -list_devices true -f dshow -i dummy

Also, to list the resolutions for a specific camera you can run this command:

ffmpeg -f dshow -list_options true -i video="device name"
Share:
16,027
M. D. P
Author by

M. D. P

Updated on June 04, 2022

Comments

  • M. D. P
    M. D. P almost 2 years

    I am working on project were i need to have the live video streaming. I am able to save the video using the command:

    proc a {}  { 
    exec ffmpeg -f dshow -rtbufsize 64M -i "video=Integrated Webcam" -s 1280x720 -f sdl2 -
    }
    a
    
    this is the current error:
    

    ffmpeg started on 2017-11-17 at 15:24:45
    Report written to "ffmpeg-20171117-152445.log"
    Command line:
    ffmpeg -f dshow -report -rtbufsize 64M -i "video=Integrated Webcam" -s 1280x720 -f sdl2 -
    ffmpeg version N-87353-g183fd30 Copyright (c) 2000-2017 the FFmpeg developers
      built with gcc 7.2.0 (GCC)
      configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib
      libavutil      55. 76.100 / 55. 76.100
      libavcodec     57.106.101 / 57.106.101
      libavformat    57. 82.101 / 57. 82.101
      libavdevice    57.  8.101 / 57.  8.101
      libavfilter     6.105.100 /  6.105.100
      libswscale      4.  7.103 /  4.  7.103
      libswresample   2.  8.100 /  2.  8.100
      libpostproc    54.  6.100 / 54.  6.100
    Splitting the commandline.
    Reading option '-f' ... matched as option 'f' (force format) with argument 'dshow'.
    Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
    Reading option '-rtbufsize' ... matched as AVOption 'rtbufsize' with argument '64M'.
    Reading option '-i' ... matched as input url with argument 'video=Integrated Webcam'.
    Reading option '-s' ... matched as option 's' (set frame size (WxH or abbreviation)) with argument '1280x720'.
    Reading option '-f' ... matched as option 'f' (force format) with argument 'sdl2'.
    Reading option '-' ... matched as output url.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option report (generate a report) with argument 1.
    Successfully parsed a group of options.
    Parsing a group of options: input url video=Integrated Webcam.
    Applying option f (force format) with argument dshow.
    Successfully parsed a group of options.
    Opening an input file: video=Integrated Webcam.
    [dshow @ 0000000000e06a40] Selecting pin Capture on video
    dshow passing through packet of type video size   614400 timestamp 5773900280000 orig timestamp 5773900274254 graph timestamp 5773900280000 diff 5746 Integrated Webcam
    [dshow @ 0000000000e06a40] All info found
    Input #0, dshow, from 'video=Integrated Webcam':
      Duration: N/A, start: 577390.028000, bitrate: N/A
        Stream #0:0, 1, 1/10000000: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 30 fps, 30 tbr, 10000k tbn, 10000k tbc
    Successfully opened the file.
    Parsing a group of options: output url -.
    Applying option s (set frame size (WxH or abbreviation)) with argument 1280x720.
    Applying option f (force format) with argument sdl2.
    Successfully parsed a group of options.
    Opening an output file: -.
    Successfully opened the file.
    Stream mapping:
      Stream #0:0 -> #0:0 (rawvideo (native) -> rawvideo (native))
    Press [q] to stop, [?] for help
    cur_dts is invalid (this is harmless if it occurs once at the start per stream)
    [rawvideo @ 0000000000d90be0] PACKET SIZE: 614400, STRIDE: 1280
    detected 4 logical cores
    dshow passing through packet of type video size   614400 timestamp 5773900600000 orig timestamp 5773900607587 graph timestamp 5773900600000 diff -7587 Integrated Webcam
    [graph 0 input from stream 0:0 @ 0000000000d96200] Setting 'video_size' to value '640x480'
    [graph 0 input from stream 0:0 @ 0000000000d96200] Setting 'pix_fmt' to value '1'
    [graph 0 input from stream 0:0 @ 0000000000d96200] Setting 'time_base' to value '1/10000000'
    [graph 0 input from stream 0:0 @ 0000000000d96200] Setting 'pixel_aspect' to value '0/1'
    [graph 0 input from stream 0:0 @ 0000000000d96200] Setting 'sws_param' to value 'flags=2'
    [graph 0 input from stream 0:0 @ 0000000000d96200] Setting 'frame_rate' to value '10000000/333333'
    [graph 0 input from stream 0:0 @ 0000000000d96200] w:640 h:480 pixfmt:yuyv422 tb:1/10000000 fr:10000000/333333 sar:0/1 sws_param:flags=2
    [scaler_out_0_0 @ 0000000000d967e0] Setting 'w' to value '1280'
    [scaler_out_0_0 @ 0000000000d967e0] Setting 'h' to value '720'
    [scaler_out_0_0 @ 0000000000d967e0] Setting 'flags' to value 'bicubic'
    [scaler_out_0_0 @ 0000000000d967e0] w:1280 h:720 flags:'bicubic' interl:0
    [AVFilterGraph @ 0000000000d94d40] query_formats: 4 queried, 3 merged, 0 already done, 0 delayed
    [scaler_out_0_0 @ 0000000000d967e0] w:640 h:480 fmt:yuyv422 sar:0/1 -> w:1280 h:720 fmt:yuyv422 sar:0/1 flags:0x4
    dshow passing through packet of type video size   614400 timestamp 5773900970000 orig timestamp 5773900940920 graph timestamp 5773900970000 diff 29080 Integrated Webcam
    dshow passing through packet of type video size   614400 timestamp 5773901240000 orig timestamp 5773901274253 graph timestamp 5773901240000 diff -34253 Integrated Webcam
    dshow passing through packet of type video size   614400 timestamp 5773901720000 orig timestamp 5773901607586 graph timestamp 5773901720000 diff 112414 Integrated Webcam
    dshow passing through packet of type video size   614400 timestamp 5773902040000 orig timestamp 5773901940919 graph timestamp 5773902040000 diff 99081 Integrated Webcam
    dshow passing through packet of type video size   614400 timestamp 5773902360000 orig timestamp 5773902274252 graph timestamp 5773902360000 diff 85748 Integrated Webcam
    dshow passing through packet of type video size   614400 timestamp 5773902680000 orig timestamp 5773902607585 graph timestamp 5773902680000 diff 72415 Integrated Webcam
    dshow passing through packet of type video size   614400 timestamp 5773903000000 orig timestamp 5773902940918 graph timestamp 5773903000000 diff 59082 Integrated Webcam
    dshow passing through packet of type video size   614400 timestamp 5773903320000 orig timestamp 5773903274251 graph timestamp 5773903320000 diff 45749 Integrated Webcam
    dshow passing through packet of type video size   614400 timestamp 5773903640000 orig timestamp 5773903607584 graph timestamp 5773903640000 diff 32416 Integrated Webcam
    [sdl,sdl2 @ 0000000000d911c0] w:1280 h:720 fmt:yuyv422 -> w:1280 h:720
    Output #0, sdl,sdl2, to 'pipe:':
      Metadata:
        encoder         : Lavf57.82.101
        Stream #0:0, 0, 333333/10000000: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 1280x720, q=2-31, 442368 kb/s, 30 fps, 30 tbn, 30 tbc
        Metadata:
          encoder         : Lavc57.106.101 rawvideo
    dshow passing through packet of type video size   614400 timestamp 5773903970000 orig timestamp 5773903940917 graph timestamp 5773903970000 diff 29083 Integrated Webcam
    dshow passing through packet of type video size   614400 timestamp 5773904280000 orig timestamp 5773904274250 graph timestamp 5773904280000 diff 5750 Integrated Webcam
    av_interleaved_write_frame(): Operation not permitted
    No more output streams to write to, finishing.
    dshow passing through packet of type video size   614400 timestamp 5773904660000 orig timestamp 5773904607583 graph timestamp 5773904660000 diff 52417 Integrated Webcam
    frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.03 bitrate=N/A speed=0.0797x    
    video:1800kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    Input file #0 (video=Integrated Webcam):
      Input stream #0:0 (video): 1 packets read (614400 bytes); 1 frames decoded; 
      Total: 1 packets (614400 bytes) demuxed
    Output file #0 (pipe:):
      Output stream #0:0 (video): 1 frames encoded; 1 packets muxed (1843200 bytes); 
      Total: 1 packets (1843200 bytes) muxed
    1 frames successfully decoded, 0 decoding errors
    dshow passing through packet of type video size        0 timestamp 5773907070000 orig timestamp 2644601806342528 graph timestamp 5773907070000 diff -2638827899272528 Integrated Webcam
    Conversion failed!
    % source c:/other/a/d.tcl
    couldn't execute "ffmpeg -f dshow -t 00:00:10 -i {video=Integrated Webcam} -b 5000k -s 1280x720 c:\test\sample-a.avi": no such file or directory
    % source c:/other/a/d.tcl
    invalid command name "ffmpeg"
    % source c:/other/a/d.tcl
    ffmpeg version N-87353-g183fd30 Copyright (c) 2000-2017 the FFmpeg developers
      built with gcc 7.2.0 (GCC)
      configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib
      libavutil      55. 76.100 / 55. 76.100
      libavcodec     57.106.101 / 57.106.101
      libavformat    57. 82.101 / 57. 82.101
      libavdevice    57.  8.101 / 57.  8.101
      libavfilter     6.105.100 /  6.105.100
      libswscale      4.  7.103 /  4.  7.103
      libswresample   2.  8.100 /  2.  8.100
      libpostproc    54.  6.100 / 54.  6.100
    Input #0, dshow, from 'video=Integrated Webcam':
      Duration: N/A, start: 523220.045000, bitrate: N/A
        Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 30 fps, 30 tbr, 10000k tbn, 10000k tbc
    Stream mapping:
      Stream #0:0 -> #0:0 (rawvideo (native) -> rawvideo (native))
    Press [q] to stop, [?] for help
    Output #0, sdl,sdl2, to 'pipe:':
      Metadata:
        encoder         : Lavf57.82.101
        Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 1280x720, q=2-31, 442368 kb/s, 30 fps, 30 tbn, 30 tbc
        Metadata:
          encoder         : Lavc57.106.101 rawvideo
    av_interleaved_write_frame(): Operation not permitted
    frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.03 bitrate=N/A speed=0.0471x
    video:1800kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    Conversion failed!
    %
    

    But, the problem is i don't want to save the video, I just want to have live video streaming.

    link: https://trac.ffmpeg.org/wiki/StreamingGuide, provide the command for live video streaming, but it want work, the webcem gets started, but live video streaming is not displayed on screen.

    so, can any one help me out to get right "FFMPEG" command or even any TCL script, to get the live video streaming displayed on on my windows 7.

    ffplay started on 2017-11-17 at 12:44:40
    Report written to "ffplay-20171117-124440.log"
    Command line:
    ffplay -report C:/test/sample.avi
    ffplay version N-87353-g183fd30 Copyright (c) 2003-2017 the FFmpeg developers
      built with gcc 7.2.0 (GCC)
      configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib
      libavutil      55. 76.100 / 55. 76.100
      libavcodec     57.106.101 / 57.106.101
      libavformat    57. 82.101 / 57. 82.101
      libavdevice    57.  8.101 / 57.  8.101
      libavfilter     6.105.100 /  6.105.100
      libswscale      4.  7.103 /  4.  7.103
      libswresample   2.  8.100 /  2.  8.100
      libpostproc    54.  6.100 / 54.  6.100
        nan    :  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0   
    [NULL @ 0000000002aea040] Opening 'C:/test/sample.avi' for reading
    [file @ 0000000002ae9c80] Setting default whitelist 'file,crypto'
    [avi @ 0000000002aea040] Format avi probed with size=2048 and score=100
    [avi @ 0000000002af30c0] use odml:1
    [avi @ 0000000002aea040] Before avformat_find_stream_info() pos: 5678 bytes read:107912 seeks:4 nb_streams:1
    [avi @ 0000000002aea040] All info found
    [avi @ 0000000002aea040] After avformat_find_stream_info() pos: 33035 bytes read:107912 seeks:4 frames:1
    Input #0, avi, from 'C:/test/sample.avi':
      Metadata:
        encoder         : Lavf57.82.101
      Duration: 00:00:10.00, start: 0.000000, bitrate: 5072 kb/s
        Stream #0:0, 1, 1/30: Video: mpeg4 (Simple Profile) (FMP4 / 0x34504D46), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 5078 kb/s, 30 fps, 30 tbr, 30 tbn, 30 tbc
    detected 4 logical cores
        nan M-V:    nan fd=   0 aq=    0KB vq=  595KB sq=    0B f=0/0   
    Video frame changed from size:0x0 format:none serial:-1 to size:1280x720 format:yuv420p serial:1
    [ffplay_buffer @ 0000000003a17ee0] Setting 'video_size' to value '1280x720'
    [ffplay_buffer @ 0000000003a17ee0] Setting 'pix_fmt' to value '0'
    [ffplay_buffer @ 0000000003a17ee0] Setting 'time_base' to value '1/30'
    [ffplay_buffer @ 0000000003a17ee0] Setting 'pixel_aspect' to value '1/1'
    [ffplay_buffer @ 0000000003a17ee0] Setting 'frame_rate' to value '30/1'
    [ffplay_buffer @ 0000000003a17ee0] w:1280 h:720 pixfmt:yuv420p tb:1/30 fr:30/1 sar:1/1 sws_param:
    [AVFilterGraph @ 0000000002b14fc0] query_formats: 2 queried, 1 merged, 0 already done, 0 delayed
  • M. D. P
    M. D. P over 6 years
    I tried with both sdl and sdl2, the webcam get started, even the pop-up came, but the pop-up closed within a second. any solution to keep that pop-up open ??
  • Gyan
    Gyan over 6 years
    Oops, I didn't remove your time limit. Try now.
  • M. D. P
    M. D. P over 6 years
    frame= 1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.03 bitrate=N/A speed=0.122x video:1800kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown [dshow @ 00000000024722e0] real-time buffer [Integrated Webcam] [video input] too full or near too full (101% of size: 3041280 [rtbufsize parameter])! frame dropped! Conversion failed!
  • Gyan
    Gyan over 6 years
    Increased input buffer.
  • M. D. P
    M. D. P over 6 years
    "input buffer" means
  • M. D. P
    M. D. P over 6 years
    Is the command: ffmpeg -f dshow -rtbufsize 64M -i "video=Integrated Webcam" -s 1280x720 -f sdl2 -
  • Gyan
    Gyan over 6 years
    With my input, yes. I don't have your webcam :)
  • M. D. P
    M. D. P over 6 years
    its my laptop webcam
  • M. D. P
    M. D. P over 6 years
    Any solution for over this closing of pop-up ??
  • Gyan
    Gyan over 6 years
    Share full log. Add it to Q.
  • M. D. P
    M. D. P over 6 years
    proc a {} { exec ffmpeg -f dshow -rtbufsize 64M -i "video=Integrated Webcam" -s 1280x720 -f sdl2 - } a
  • Gyan
    Gyan over 6 years
    Run it directly from cmd and check.
  • M. D. P
    M. D. P over 6 years
    I did, still same, it open a window and close automatically within a second.
  • M. D. P
    M. D. P over 6 years
    No. I got error :- "somefile.mp4: No such file or directoryvq= 0KB sq= 0B f=0/0" for :- "C:\Users>ffplay somefile.mp4"
  • Gyan
    Gyan over 6 years
    You are supposed to replace somefile with an actual video file name!
  • M. D. P
    M. D. P over 6 years
    enable to play video. I got pop-up : ffplay.exe has stopped working, with 2 options "debag" and "close program".
  • Gyan
    Gyan over 6 years
    Run ffplay -report file.mp4 from within cmd and share the report in the Q.
  • M. D. P
    M. D. P over 6 years
    same error: ffplay.exe has stopped working, with 2 options "debag" and "close program" :( ...................... my command in CMD was : C:\Users>ffplay -report C:/test/sample.avi
  • Gyan
    Gyan over 6 years
    Add the report to the Q.
  • M. D. P
    M. D. P over 6 years
    proc a {} { exec ffmpeg -f dshow -rtbufsize 64M -i "video=Integrated Webcam" -s 1280x720 -report -f sdl2 - } a ............................ this is how u mean ????
  • Gyan
    Gyan over 6 years
    The report is a text file generated by ffmpeg in working directory. Add it to the Q.
  • M. D. P
    M. D. P over 6 years
    for me no such text file is generated. If i run any ffmpeg command e.g. ffmpeg command to capture video, from CMD, then it generate only video file with the path selected in cmd. e.g c:/user>ffmpeg -f dshow -i video0 c:/test/sample.mp4 ..... this will save only sample.mp4 at c:/user.
  • Gyan
    Gyan over 6 years
    You have to add -report.
  • M. D. P
    M. D. P over 6 years
    add the report to the Q.
  • M. D. P
    M. D. P over 6 years
    added both ffmpeg and ffplay report to Q.
  • Gyan
    Gyan over 6 years
    Does ffplay -f gdigrab -i desktop -vf scale=iw/4:-1 work?
  • M. D. P
    M. D. P over 6 years
    proc a {} { exec ffmpeg -f dshow -i "video=Logitech HD Webcam C525" -s 1280x720 -report -f sdl2 - } a .......................... : this code is working , here i change the camera to "Logitech HD Webcam C525"
  • M. D. P
    M. D. P over 6 years
    thanks @ Mulvya, but now i need to chech why it is not working with laptop camera
  • M. D. P
    M. D. P over 6 years
    ffplay -f gdigrab -i desktop -vf scale=iw/4:-1 ...... its not working, same error ffplay.exe has stopped working
  • M. D. P
    M. D. P over 6 years
    i am getting " ffmpeg.exe has stopped working " error. Using the answer. Any solution for this ???