[FFmpeg-user] Trying to write to disk the output of a USB capture card and can't combine video and audio
Geoff Sweet
mailinator at whootis.com
Thu Dec 17 01:47:54 EET 2020
I've been doing a fair bit of digging into this as this is my first
project to convert some old magnetic tape media to digital. ffmpeg seems
like exactly what I want be using. I'm kinda newbie to this so I'm
hoping for some guidance.
I'm using ffmpeg on Arch linux and trying to convert some old video to
digital. The setup is pretty straightforward and if I connect to the
capture device with something like VLC I get the video and audio just
fine. So now I want to capture that with ffmpeg and write it to a file
so I can edit it and clean it up with something like OpenShot. I'm only
so-so familiar with ffmpeg and I've been digging through the man pages
and here is where I am at.
This command captures perfect audio, but obviously no video:
ffmpeg -f alsa -ac 2 -i front:CARD=Capture,DEV=0 out.mpeg
This command captures perfect video, but likewise no audio:
ffmpeg -f video4linux2 -i /dev/video0 out.mpeg
So combining them together should give me:
ffmpeg -y -f alsa -ac 2 -i front:CARD=Capture,DEV=0 -f video4linux2 -i
/dev/video0 out.mpeg
But that command kinda falls on its face. I get the audio, but no video:
ffmpeg -y -f alsa -ac 2 -i front:CARD=Capture,DEV=0 -f video4linux2 -i
/dev/video0 out.mpeg
ffmpeg version n4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 10.2.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static
--disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm
--enable-lto --enable-fontconfig --enable-gmp --enable-gnutls
--enable-gpl --enable-ladspa --enable-libaom --enable-libass
--enable-libbluray --enable-libdav1d --enable-libdrm
--enable-libfreetype --enable-libfribidi --enable-libgsm
--enable-libiec61883 --enable-libjack --enable-libmfx
--enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb
--enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus
--enable-libpulse --enable-librav1e --enable-libsoxr --enable-libspeex
--enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2
--enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx
--enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb
--enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc
--enable-shared --enable-version3
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, alsa, from 'front:CARD=Capture,DEV=0':
Duration: N/A, start: 1608093176.894565, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
[video4linux2,v4l2 @ 0x56248fe0ab80] Dequeued v4l2 buffer contains
corrupted data (0 bytes).
Input #1, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 0.000000, bitrate: 995328 kb/s
Stream #1:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 1920x1080,
995328 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
Stream mapping:
Stream #1:0 -> #0:0 (rawvideo (native) -> mpeg1video (native))
Stream #0:0 -> #0:1 (pcm_s16le (native) -> mp2 (native))
Press [q] to stop, [?] for help
[video4linux2,v4l2 @ 0x56248fe0ab80] Dequeued v4l2 buffer contains
corrupted data (0 bytes).
Last message repeated 30 times
[alsa @ 0x56248fdb3840] Thread message queue blocking; consider raising
the thread_queue_size option (current value: 8)
[mpeg @ 0x56248fe0dfc0] VBV buffer size not set, using default size of
230KB
If you want the mpeg file to be compliant to some specification
Like DVD, VCD or others, make sure you set the correct buffer size
Output #0, mpeg, to 'out.mpeg':
Metadata:
encoder : Lavf58.45.100
Stream #0:0: Video: mpeg1video, yuv420p(progressive), 1920x1080, q=2-31,
200 kb/s, 30 fps, 90k tbn, 30 tbc
Metadata:
encoder : Lavc58.91.100 mpeg1video
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
Stream #0:1: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s
Metadata:
encoder : Lavc58.91.100 mp2
frame= 2 fps=0.0 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=2.0 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=1.3 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=1.0 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.8 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.7 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.6 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.5 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.4 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.4 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.4 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.3 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.3 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.3 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.3 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.2 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/sframe= 2 fps=0.1 q=3.2 size= 0kB time=01:48:49.26 bitrate=
0.0kbits/s[video4linux2,v4l2 @ 0x56248fe0ab80] Thread message queue
blocking; consider raising the thread_queue_size option (current value:
8)
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=0 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=2020 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=4061 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=6102 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=8143 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=10184 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=12225 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=14266 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=16307 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=18348 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=20389 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=22430 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=24471 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=26512 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=28553 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=30594 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=32635 size=36451
[mpeg @ 0x56248fe0dfc0] buffer underflow st=0 bufi=34676 size=36451
frame= 2 fps=0.1 q=2.0 Lsize= 1470kB time=01:48:49.30 bitrate=
1.8kbits/s speed= 221x
video:63kB audio:1388kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: 1.314351%
Exiting normally, received signal 2.
I then opted to change some values based on a couple things. I adjusted
the thread_queue and I also altered the output format:
$ ffmpeg -y -thread_queue_size 4096 -f video4linux2 -framerate 60
-input_format mjpeg -video_size 1920x1080 -i /dev/video0
-thread_queue_size 4096 -f alsa -ac 2 -i front:CARD=Capture,DEV=0
out_raw.mp4
ffmpeg version n4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 10.2.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static
--disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm
--enable-lto --enable-fontconfig --enable-gmp --enable-gnutls
--enable-gpl --enable-ladspa --enable-libaom --enable-libass
--enable-libbluray --enable-libdav1d --enable-libdrm
--enable-libfreetype --enable-libfribidi --enable-libgsm
--enable-libiec61883 --enable-libjack --enable-libmfx
--enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb
--enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus
--enable-libpulse --enable-librav1e --enable-libsoxr --enable-libspeex
--enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2
--enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx
--enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb
--enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc
--enable-shared --enable-version3
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
[video4linux2,v4l2 @ 0x56509c622980] Dequeued v4l2 buffer contains
corrupted data (0 bytes).
Last message repeated 31 times
[mjpeg @ 0x56509c623f80] EOI missing, emulating
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg (Baseline), yuvj422p(pc,
bt470bg/unknown/unknown), 1920x1080, 60 fps, 60 tbr, 1000k tbn, 1000k
tbc
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, alsa, from 'front:CARD=Capture,DEV=0':
Duration: N/A, start: 1608162060.630640, bitrate: 1536 kb/s
Stream #1:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x56509c68d540] using cpu capabilities: MMX2 SSE2Fast SSSE3
SSE4.2 AVX
[libx264 @ 0x56509c68d540] profile High 4:2:2, level 4.2, 4:2:2, 8-bit
[libx264 @ 0x56509c68d540] 264 - core 160 r3011 cde9a93 - H.264/MPEG-4
AVC codec - Copyleft 2003-2020 - 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=12 lookahead_threads=2 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, mp4, to 'out_raw.mp4':
Metadata:
encoder : Lavf58.45.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuvj422p(pc,
progressive), 1920x1080, q=-1--1, 60 fps, 15360 tbn, 60 tbc
Metadata:
encoder : Lavc58.91.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo,
fltp, 128 kb/s
Metadata:
encoder : Lavc58.91.100 aac
frame= 31 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
speed=
frame= 51 fps= 50 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
speed=
frame= 57 fps= 38 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps= 28 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps= 23 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps= 19 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps= 16 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps= 14 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps= 13 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps= 11 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps= 10 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps=9.4 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps=8.7 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps=8.1 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps=7.5 q=31.0 size= 0kB time=20:56:52.53 bitrate=
0.0kbits/
frame= 57 fps=6.4 q=-1.0 Lsize= 557kB time=20:56:53.46 bitrate=
0.1kbits/s speed=8.52e+03x
video:428kB audio:123kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: 1.098067%
[libx264 @ 0x56509c68d540] frame I:1 Avg QP:22.99 size: 6002
[libx264 @ 0x56509c68d540] frame P:16 Avg QP:22.21 size: 6749
[libx264 @ 0x56509c68d540] frame B:40 Avg QP:23.66 size: 8097
[libx264 @ 0x56509c68d540] consecutive B-frames: 3.5% 0.0% 26.3% 70.2%
[libx264 @ 0x56509c68d540] mb I I16..4: 37.0% 63.0% 0.0%
[libx264 @ 0x56509c68d540] mb P I16..4: 23.4% 26.5% 0.0% P16..4:
5.1% 0.4% 0.2% 0.0% 0.0% skip:44.5%
[libx264 @ 0x56509c68d540] mb B I16..4: 12.5% 19.4% 0.0% B16..8:
21.3% 1.7% 0.1% direct: 1.5% skip:43.4% L0:60.6% L1:39.0% BI: 0.4%
[libx264 @ 0x56509c68d540] 8x8 transform intra:58.1% inter:70.0%
[libx264 @ 0x56509c68d540] coded y,uvDC,uvAC intra: 11.6% 0.0% 0.0%
inter: 2.4% 0.1% 0.0%
[libx264 @ 0x56509c68d540] i16 v,h,dc,p: 72% 24% 3% 1%
[libx264 @ 0x56509c68d540] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 19% 54%
1% 0% 0% 0% 0% 0%
[libx264 @ 0x56509c68d540] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 65% 33% 2%
0% 0% 0% 0% 0% 0%
[libx264 @ 0x56509c68d540] i8c dc,h,v,p: 99% 0% 1% 0%
[libx264 @ 0x56509c68d540] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x56509c68d540] ref P L0: 37.9% 1.6% 41.6% 18.9%
[libx264 @ 0x56509c68d540] ref B L0: 49.0% 35.7% 15.3%
[libx264 @ 0x56509c68d540] ref B L1: 84.9% 15.1%
[libx264 @ 0x56509c68d540] kb/s:3687.33
[aac @ 0x56509c68e3c0] Qavg: 12434.811
I'm sorta getting to the point where I'm throwing stuff against the wall
to see what sticks. I was hoping that someone could give me some advice.
The source of the media is from a component output video signal, into a
component-to-hdmi converter. From that converter I got into a 1080p
60pfs hdmi-hdmi pass through that connects to the computer via USB and
shows up as /dev/video0 and the audio source listed above. It works
great because I can connect to it through VLC and get good audio and
video.
Thanks everyone!
As always, any help is definitely appreciated.
More information about the ffmpeg-user
mailing list