0

我刚刚开始探索 ffmpeg(最终与 openCV 一起使用),并且正在运行以下命令:

root@beaglebone:/# ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 /out.avi

此时相机指示灯亮起,似乎正在拍摄。但是,当我以 结束它时CTRL+C,找不到该文件。

有什么想法吗?

完整输出:

root@beaglebone:/# ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 /out.avi
ffmpeg version v0.7.4, Copyright (c) 2000-2011 the Libav developers
  built on Oct  9 2012 10:50:57 with gcc 4.5.4 20120305 (prerelease)
  configuration: --enable-shared --enable-pthreads --enable-gpl --enable-postproc --enable-avfilter --cross-prefix=arm-angstrom-linux-gnueabi- --prefix=/usr --enable-ffserver --enable-ffplay --enable-x11grab --enable-libtheora --enable-libvorbis --arch=arm --target-os=linux --enable-cross-compile --extra-cflags=' -fexpensive-optimizations -fomit-frame-pointer -O4 -ffast-math -march=armv7-a -fno-tree-vectorize -mthumb-interwork -mfloat-abi=softfp -mfpu=neon -mtune=cortex-a8 --sysroot=/home/koen/setup-scripts/build/tmp-angstrom_v2012_05-eglibc/sysroots/beaglebone' --extra-ldflags='-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed' --sysroot=/home/koen/setup-scripts/build/tmp-angstrom_v2012_05-eglibc/sysroots/beaglebone --enable-hardcoded-tables --cpu=cortex-a8
  libavutil    51.  7. 0 / 51.  7. 0
  libavcodec   53.  6. 0 / 53.  6. 0
  libavformat  53.  3. 0 / 53.  3. 0
  libavdevice  53.  0. 0 / 53.  0. 0
  libavfilter   2.  4. 0 /  2.  4. 0
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  52.  0. 0 / 52.  0. 0
^C
root@beaglebone:/# ls
bin   dev  home  lost+found  mnt  proc  sbin  tmp  var
boot  etc  lib   media       opt  run   sys   usr
root@beaglebone:/#
4

2 回答 2

0

使用CTRL+C您会强制您的应用程序立即退出。这样做你的文件还没有被 FFmpeg 完成。使用您当前的设置 FFmpeg 只会在输入流停止时完成您的文件,因为没有设置输出选项。因此,一种解决方案是在输出文件中添加时间选项-t 60,其中 60 以秒为单位。

ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 -t 60 /out.avi

另一种解决方案是停止输入流,例如断开/卸载相机。然后流停止并自动写入您的文件。(不完全正确,因为 FFmpeg 实际上是在每一帧之后写入每一帧,而不是完成文件。不要为此烦恼......)

于 2013-03-14T16:07:31.167 回答
0

触发以下命令

whereis ffmpeg
于 2019-03-20T07:19:53.683 回答