我在 Arch linux 上使用 ffmpeg 并尝试将一些旧视频转换为数字视频。设置非常简单,如果我使用 VLC 连接到捕获设备,我可以很好地获得视频和音频。所以现在我想用 ffmpeg 捕获它并将其写入一个文件,以便我可以编辑它并清理它。我对 ffmpeg 非常熟悉,而且我一直在研究手册页,这就是我所在的位置。
此命令捕获完美的音频,但没有视频:
ffmpeg -f alsa -ac 2 -i front:CARD=Capture,DEV=0 out.mpeg
此命令捕获完美的视频;ffmpeg -f video4linux2 -i /dev/video0 out.mpeg
捕获视频信号很好,但没有音频。所以将它们结合在一起应该给我:ffmpeg -y -f alsa -ac 2 -i front:CARD=Capture,DEV=0 -f video4linux2 -i /dev/video0 out.mpeg
但这个命令有点落在它的脸上。我得到了音频,但没有视频: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.
理想情况下,我想要的只是一个相当原始的 2ch 立体声“转储”来自采集卡的内容。一如既往,我非常感谢任何建议
最佳答案
您可以使用无损压缩 H.264,具有编辑器友好的帧内模式 (-g 1
),作为编辑的中间文件:
ffmpeg -y -f alsa -channels 2 -i front:CARD=Capture,DEV=0 -f video4linux2 -i /dev/video0 -c:v libx264 -crf 0 -g 1 -c:a copy output.mkv
优点是它是无损的,但仍然是压缩的,所以它不是 super 大。速度足够快,可以实时编码。解码相对容易。文件大小将明显大于典型的有损 H.264,但它仅用于编辑,您可以从编辑器输出典型格式以供一般使用。
这适用于 Openshot,但可能不适用于 Premiere 和其他昂贵的编辑器。
关于ffmpeg - 如何从捕获设备捕获带有音频的简单视频输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65317386/