2013-03-13 4 views
0

Я только начинаю изучать FFmpeg (в конечном счете, для использования с OpenCV), и я бегом этой команды:Где мой поток ffmpeg будет сохранен?

[email protected]:/# ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 /out.avi 

В этот момент индикатор камеры включается и это, кажется, захват. Однако, когда я заканчиваю его CTRL+C, файл нигде не встречается.

Любые мысли?

Полный выход:

[email protected]:/# 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 
[email protected]:/# ls 
bin dev home lost+found mnt proc sbin tmp var 
boot etc lib media  opt run sys usr 
[email protected]:/# 
+0

Слишком длинная косая черта ('/') указывает на [корневой каталог] (http://en.wikipedia.org/wiki/Root_directory). Вы проверили корневую директорию для своего файла? Будет полезен полный вывод консоли ffmpeg. – LordNeckbeard

+0

Я проверил (сначала он просто заходил в мой домашний каталог, но я немного поиграл). Я добавил свой полный результат. – Chris

+2

Возможно, попробуйте указать время для захвата. '-t 1' должен делать одну секунду. Я думаю, что проблема может заключаться в том, что ранний Ctrl-C может быть запутанным. Ограничение времени захвата может дать FFmpeg возможность изящно выйти. Другая идея заключалась бы в том, чтобы печатать CRC отдельных кадров в stdout, а не сбрасывать кадры в файл. Сделайте это, заменив '/out.avi' на '-f framecrc -'. –

ответ

0

Использование CTRL+C вы вынуждаете ваше приложение бросить немедленно. Выполнение этого файла еще не закончено FFmpeg. Используя текущие настройки, FFmpeg завершит ваш файл только в том случае, если входной поток остановится, поскольку параметры вывода не установлены. Таким образом, одно решение добавляет параметр времени, например -t 60, в выходной файл, где 60 секунд.

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

Другое решение останавливает входной поток, например, отсоединение/размонтирование камеры. Затем поток останавливается, и ваш файл записывается автоматически. (не совсем верно, потому что FFmpeg на самом деле записывает каждый кадр после каждого кадра, но не заканчивает файл. Не беспокоитесь об этом ...)

Смежные вопросы