답변:
Guvcview 는 Linux UVC 드라이버가 지원하는 장치에서 비디오를 캡처하고 볼 수있는 간단한 GTK 인터페이스를 제공하는 것을 목표로하지만 v4l2 호환 장치에서도 작동해야합니다.
이 프로젝트는 비디오 렌더링을위한 luvcview를 기반으로하지만 모든 컨트롤은 GTK2 인터페이스를 사용하여 빌드됩니다.
Guvcview (버전 0.9.9부터)에는 컨트롤 전용 창이 있습니다 (콘솔에서) : guvcview --control_only
이것은 ekiga, cheese, mplayer, skype와 같은 다른 앱에서 이미지 컨트롤을 허용합니다 ...
Guvcview 오디오 지원은 버전 0.9.3까지 오디오 캡처에 블로킹 API가 사용되었습니다. portaudio API.
portaudio가 지원하는 모든 인터페이스 (ALSA, OSD, JACK, ...)는 guvcview에서 사용할 수 있어야합니다. 포트 오디오가 원하는 인터페이스가 활성화 된 상태에서 컴파일되었는지 확인하십시오.
Linux UVC 드라이버는 확장 컨트롤 (이것은 공급 업체별 컨트롤이며 UVC 사양에서 지원됨)을 구현하며 드라이버에 동적으로로드되어야하기 때문에 동적 컨트롤이라고합니다.
현재까지는 logitech만이 UVC 웹캠 확장 컨트롤에 대한 사양을 제공했지만 guvcview에서 지원합니다.
새 드라이버 개정판에서는 이러한 제어를 드라이버에 추가하려면 관리자 권한이 필요하므로 기본적으로 두 가지 솔루션이 있습니다.
sudo
버전 1.2.0 부터 guvcview를 루트로 시작 (을 사용하여 ) --add_ctrls
시작
libwebcam 설치이 소프트웨어에는 로지텍 카메라에 필요한 컨트롤을 추가해야하는 udev 스크립트가 있습니다.
sudo add-apt-repository ppa:pj-assis/ppa
sudo apt-get update
sudo apt-get install guvcview
이 질문의 일부는이 질문에 대한 답변에서 비롯됩니다 : VHS 테이프에서 레코드 .
소프트웨어가 올바른 장치에서 올바른 데이터를 수집하고 있는지 확인해야합니다. 터미널에 쿼리를 놓아 컴퓨터에 몇 대의 장치가 연결되어 있는지 확인하고 이미지를 수집하는 데 사용할 수있는 터미널에서이 명령을 사용하십시오.
ls -l /dev/video*
결과는 다음과 같아야합니다.
geppettvs@DYLAN:~$ ls -l /dev/video*
crw-rw----+ 1 root video 81, 0 2012-04-17 19:53 /dev/video0
crw-rw----+ 1 root video 81, 1 2012-04-17 19:53 /dev/video1
crw-rw----+ 1 root video 81, 2 2012-04-18 17:54 /dev/video2
geppettvs@DYLAN:~$
내 경우에는 3 개의 비디오 장치가 있는데 그중 하나는 라이브 TV 쇼 / VTR / VCR / RF-DVD / 비디오 변환기 및 기타 RF 신호를 보거나 녹화하는 데 사용하는 USB TV 튜너입니다.
다른 장치는 컴퓨터의 USB 슬롯에 연결된 USB 웹캠입니다.
웹캠에 마이크가있는 경우 Andreas Schalk 의 tvcap 스크립트를 사용하여 오디오와 비디오를 모두 녹음 할 수 있습니다 .
#!/bin/bash
#
# tvcap-script by Andreas Schalk, easycap.blogspot.com (Dec. 2011)
# This script is based an a template TV-script from Jose Catre-Vandis (Jan 2006).
# The ascii artwork is based on a template i found here: http://www.retrojunkie.com/asciiart/electron/tv.txt
# Contact: easycapdc60-blogspot@yahoo.de
#-----------------------------------------------------------------------------
#
# FUNCTION: This script provides Zenity menues for viewing an capturing video with a tv-card on Linux.
#
# Supported programs: MPlayer, MEncoder, VLC, Tvtime, Cheese und Sox
#
#-----------------------------------------------------------------------------
#
# Basic options:
#
# Change the following parameters for viewing/ capturing according to your needs
#
#-----------------------------------------------------------------------------
VERBOSE=1 # if '0', this script does not show messages window and does not ask for norm and input number anymore
NORM="PAL" # preselect tv norm 'PAL' or 'NTSC'
INPUT_NR=0 # preselect input number of your easycap where video source is plugged in
input_width=720 # preselect width an height of video source (mplayer, vlc, mencoder)
input_height=576 # other possible combinations: 640/480; 320/240
ASPECT=169 # '169' (16:9) or '43' (4:3); this value affects video playback with mplayer or vlc only!
FREQ="48000" # on soundproblems reduce audio frequency (44100 oder 32000 oder 8000)
TV_INPUT="no" # if 'yes' the analogue antenna input of the tv-card will be used (mplayer only)
CHAN="chanlist=europe-west:channel=60" # channel setting (nur mplayer/ mencoder) the analogue antenna input of the tv-card is used
NORM="PAL" # preselect TV-norm 'PAL' oder 'NTSC'
INPUT_NR=1 # preselct the Input on the TV-card, where the videosource is plugged in ('0' normally is the antenna, '1' the first CVBS ...
#-----------------------------------------------------------------------------
MESSAGE=()
R_MESSAGE=()
EXITCODE=0
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# test videodevices
##-----------------------------------------------------------------------------
declare -a VIDEO_DEV
VIDEO_DEV=( TRUE none
FALSE none
FALSE none
FALSE none
)
i1=0;
i2=0;
while `test -e "/dev/video${i1}"`; do
VIDEO_DEV[$i2+1]="/dev/video${i1}";
i1=$[$i1+1];
i2=$[$i2+2];
done
if [ "xnone" = "x${VIDEO_DEV[1]}" ]; then
zenity --error --timeout=5 --text "Cannot find /dev/video0!\n Script ends in 5 seconds" --title "No videodevice!";
exit 1;
fi
if [ "x${VIDEO_DEV[$i2+1]}" = "xnone" ]; then
VIDEO_DEV[$i2]="" && VIDEO_DEV[$i2+1]="" && VIDEO_DEV[$i2+2]="" && VIDEO_DEV[$i2+3]="" && VIDEO_DEV[$i2+4]="" && VIDEO_DEV[$i2+5]="";
fi
DEV_VIDEO=$(zenity --list --text "Select videodevice" --radiolist --column "Choice" --column "Device" ${VIDEO_DEV[@]}) || exit 0
if [ ${VERBOSE} = 1 ]; then
#-----------------------------------------------------------------------------
# select TV norm
#-----------------------------------------------------------------------------
title="Select tv norm"
NORM=`zenity --title="$title" --list --radiolist --column="Choice" \
--column="Norm" --column="Description" \
TRUE "PAL" "PAL Norm" \
FALSE "NTSC" "NTSC Norm" \
` || exit 0
fi
#-----------------------------------------------------------------------------
# select Input number
#-----------------------------------------------------------------------------
title="Select Input NR"
INPUT_NR=`zenity --title="$title" --list --radiolist --column="Choice" \
--column="Input NR" --column="Description" \
TRUE "0" "Input 1 (TV)" \
FALSE "1" "Input 2" \
FALSE "2" "Input 3" \
FALSE "3" "Input 4" \
FALSE "4" "Input 5" \
FALSE "5" "Input 6"
` || exit 0
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Check if snd_usb_audio module is loaded
#-----------------------------------------------------------------------------
SND_USB=`lsmod | grep snd_usb_audio | wc -l`
if [ "${SND_USB}" -ge "1" ]; then
# MESSAGE=("${MESSAGE[@]}" "\nNOTE: snd_usb_audio module was loaded and may conflict with your USB capture device")
zenity --info --text "NOTE: The snd_usb_audio module was loaded\nand may conflict with your USB capture device.\n \nIf sound problems appear,\nplug out your USB capturedevice and run\n rmmod snd_usb_audio \nas root in the terminal!" --title "Snd_usb_audio module loaded!"
fi
#-----------------------------------------------------------------------------
# test and select soundcard
#-----------------------------------------------------------------------------
if `test ! -e /dev/dsp` && [ -z "`ls -1 /proc/asound`" ]; then
if_audio="no";
echo "No soundcard detected";
MESSAGE=("${MESSAGE[@]}" "Note: No soundcard can be found!\nSound is not supported.\n");
else
if_audio="yes"
declare -a SOUND_DEV
SOUND_DEV=( FALSE /dev/dsp OSS
FALSE card1 ALSA
TRUE card2 ALSA
FALSE card3 ALSA
)
test ! -e /dev/dsp && echo "No dsp" && SOUND_DEV[0]="" && SOUND_DEV[1]="" && SOUND_DEV[2]=""
ALSA_CARD=$(cat /proc/asound/cards | cut -d":" -f1 -s)
declare -a ALSA_CARDS
ALSA_CARDS=(${ALSA_CARD})
i5=1
for P in ${ALSA_CARDS[@]}; do
ALSA_NAME=$(echo ${ALSA_CARDS[$i5]} | tr -d [=[=] );
SOUND_DEV[$i5+3]=$ALSA_NAME
if [ "x${ALSA_NAME}" = "x" ]; then
SOUND_DEV[$i5+2]="" && SOUND_DEV[$i5+3]="" && SOUND_DEV[$i5+4]=""
fi
i5=$[$i5+3];
done
fi
DEV_AUDIO=$(zenity --list --text "Select soundcard" --radiolist --column "Choice" --column "Device" --column "Type" ${SOUND_DEV[@]}) || exit 0
if [ $DEV_AUDIO = "/dev/dsp" ]; then
AUDIO_TYPE="oss"
else
AUDIO_TYPE="alsa"
fi
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# test, if devicenodes are read- and writable for unprivileged users
#-----------------------------------------------------------------------------
if [ -r ${DEV_VIDEO} ] && [ -w ${DEV_VIDEO} ]; then
MESSAGE=("${MESSAGE[@]}" "\nSUCCESS! ${DEV_VIDEO} is read- and writable!\n")
elif [ -e ${DEV_VIDEO} ]; then
zenity --info --text "Cannot access ${DEV_VIDEO}!\nRun 'sudo chmod a+rw ${DEV_VIDEO}'\nin the terminal!" --title "Message"
EXITCODE=1
fi
if [ -r ${DEV_AUDIO} ] && [ -w ${DEV_AUDIO} ]; then
MESSAGE=("${MESSAGE[@]}" "\nSUCCESS! ${DEV_AUDIO} is read- and writable!")
elif [ -e ${DEV_AUDIO} ]; then
zenity --info --text "\nCannot access ${DEV_AUDIO}!\nRun 'sudo chmod a+rw ${DEV_AUDIO}'\nin the terminal!" --title "Message"
MESSAGE=("${MESSAGE[@]}" "\n\nCannot access ${DEV_AUDIO}!\nRun 'sudo chmod a+rw ${DEV_AUDIO}'\nin the terminal!!")
if_audio="no"
fi
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# find executable programs
#-----------------------------------------------------------------------------
PROG_LIST=( TRUE vlc #
FALSE mplayer #
FALSE cheese #
FALSE tvtime #
FALSE mencoder #
FALSE sox #
)
PROGS=(vlc mplayer cheese tvtime mencoder sox)
i4=0
for P in ${PROGS[@]}; do
PROG=`which $P`
if [ "x" = "x${PROG}" ] || [ ! -x ${PROG} ]; then
echo "Cannot find or execute $P. Is t installed?"
MESSAGE=("${MESSAGE[@]}" "\nCannot find or execute $P. Is it installed?")
PROG_LIST[$i4]=""
PROG_LIST[$i4+1]=""
if [ "${PROG_LIST[11]}" = "" ]; then
echo "Sox is needed for sound with tvtime!"
MESSAGE=("${MESSAGE[@]}" "\nSox is needed for sound with tvtime!")
fi
fi
i4=$i4+2
done
PROG_LIST[10]="" # Sox does not show up on list
PROG_LIST[11]="" #
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# messages are displayed and script ends
#-----------------------------------------------------------------------------
if [ ${EXITCODE} = 1 ]; then
MESSAGE=("${MESSAGE[@]}" "\nScript ends")
fi
echo ${MESSAGE[*]}
#########################
if [ ${VERBOSE} = 1 ]; then
zenity --height="50" --info --text "${MESSAGE[*]}" --title "Messages"
fi
if [ ${EXITCODE} = 1 ]; then
exit 1
fi
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# create logfile
#-----------------------------------------------------------------------------
LOGFILE="./test`echo "${DEV_VIDEO}" | sed -e "s,/dev/,," - `.log"
# echo "Log file is: ${LOGFILE}"
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# zenity list - program choice
#-----------------------------------------------------------------------------
view_cap=$(zenity --list --width=250 --height=400 --text " ___________\n | .----------. o|\n | | Easy | o|\n | | CAP_ | o|\n |_\`-----------´ _|\n ´\` ´\`\\nTv-norm: $NORM Input-Nr:$INPUT_NR\nVideodevice: $DEV_VIDEO $input_width x $input_height \nAudiodevice: $AUDIO_TYPE $DEV_AUDIO $FREQ Hz\nIs audio on? $if_audio\nLogfile: $LOGFILE " --radiolist --column "Choice" --column "program" ${PROG_LIST[@]}) || exit 0
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# mplayer command
#-----------------------------------------------------------------------------
if [ "alsa" = "${AUDIO_TYPE}" ]; then
M_AUDIO="buffersize=16:alsa:amode=1:forcechan=2:audiorate=${FREQ}:adevice=plughw.${DEV_AUDIO}"
elif [ "oss" = "${AUDIO_TYPE}" ]; then
M_AUDIO="adevice=${DEV_AUDIO}"
fi
if [ "$NORM" = "PAL" ]; then
fps_count=25
else
fps_count=30
fi
if [ "$ASPECT" = 169 ]; then
M_ASPECT="-aspect 1.78"
# elif [ "$ASPECT" = 43 ]; then
# M_ASPECT="-aspect 1"
else
M_ASPECT=""
fi
if [ "yes" = "${TV_INPUT}" ]; then
M_VIDEO="${CHAN}"
elif [ "no" = "${TV_INPUT}" ]; then
M_VIDEO="norm=${NORM}:width=${input_width}:height=${input_height}:outfmt=uyvy:device=${DEV_VIDEO}:input=${INPUT_NR}:fps=${fps_count}"
fi
#echo $M_VIDEO
#echo $M_AUDIO
#echo $view_cap
if [ "mplayer" = "${view_cap}" ]; then
if [ "$if_audio" = "yes" ]; then
1>${LOGFILE} 2>&1 \
mplayer tv:// -tv driver=v4l2:${M_VIDEO}:${M_AUDIO}:forceaudio:immediatemode=0 -hardframedrop ${M_ASPECT} -ao sdl, ${AUDIO_TYPE} -msglevel all=9
elif [ "$if_audio" = "no" ]; then
1>${LOGFILE} 2>&1 \
mplayer tv:// -tv driver=v4l2:${M_VIDEO} -hardframedrop ${M_ASPECT} -msglevel all=9 -nosound
fi
fi
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# vlc command
#-----------------------------------------------------------------------------
if [ "vlc" = "${view_cap}" ]; then
if [ "alsa" = "${AUDIO_TYPE}" ]; then
V_AUDIO="//plughw:${DEV_AUDIO}"
elif [ "oss" = "${AUDIO_TYPE}" ]; then
V_AUDIO="//${DEV_AUDIO}"
fi
if [ "$NORM" = "PAL" ]; then
V_NORM="pal"
elif [ "$NORM" = "NTSC" ]; then
V_NORM="ntsc"
fi
if [ "$ASPECT" = 169 ]; then
V_ASPECT="--aspect-ratio=16:9"
elif [ "$ASPECT" = 43 ]; then
V_ASPECT="--aspect-ratio=4:3"
else
V_ASPECT=""
fi
1>${LOGFILE} 2>&1 \
vlc -vvv v4l2://${DEV_VIDEO}:input=${INPUT_NR}:width=$input_width:height=$input_height:norm=${V_NORM} ${V_ASPECT} :input-slave=${AUDIO_TYPE}:${V_AUDIO} --demux rawvideo
fi
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# tvtime command
#-----------------------------------------------------------------------------
if [ "tvtime" = "${view_cap}" ]; then
if [ "alsa" = "${AUDIO_TYPE}" ]; then
T_AUDIO="-t alsa plughw:${DEV_AUDIO} -s2 -c 2 -r ${FREQ} -s2 -t alsa default"
elif [ "oss" = "${AUDIO_TYPE}" ]; then
T_AUDIO="-t raw -s2 ${DEV_AUDIO} -c 2 -r ${FREQ} -s2 -t ossdsp /dev/dsp"
fi
echo $T_AUDIO
1>${LOGFILE} 2>&1 \
>./tvtime.err
(tvtime -d ${DEV_VIDEO} -i 0 -n "${NORM}" 1>/dev/null 2>>./tvtime.err) &
rc=1
while [ 0 -ne ${rc} ];
do
tvtime-command run_command "(sox -c 2 -r ${FREQ} ${T_AUDIO} 1>/dev/null 2>>./tvtime.err)" 1>/dev/null 2>>./tvtime.err
rc=$?
if [ 0 -eq ${rc} ]; then break; fi
sleep 0.5
done
fi
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# cheese command
#-----------------------------------------------------------------------------
if [ "cheese" = "${view_cap}" ]; then
1>${LOGFILE} 2>&1 \
cheese
fi
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# mencoder command - recording section
#-----------------------------------------------------------------------------
if [ "mencoder" = "${view_cap}" ]; then
#Auswahl des Seitenverhältnisses der Aufnahme?
title="Chose aspect of your target file!"
aspect_type=`zenity --width="400" --height="220" --title="$title" --list --radiolist --column="Click Here" \
--column="choice" --column="source >> target" \
TRUE "1" "4:3 > 4:3"\
FALSE "2" "4:3 > scale=16:9" \
FALSE "3" "4:3 > crop borders=16:9" \
` || exit 0
if [ "$aspect_type" = "1" ]; then
crop_scale="scale=640:480"
elif [ "$aspect_type" = "2" ]; then
crop_scale="scale=720:406"
elif [ "$aspect_type" = "3" ]; then
crop_scale="crop=720:406:0:72"
fi
#################################################################################
#Quality?
title="What quality do you want to record at ?"
qual_type=`zenity --width="380" --height="380" --title="$title" --list --radiolist --column="Click Here" \
--column="Record Time" --column="Description" \
FALSE "500" "Passable Quality"\
FALSE "900" "OK Quality"\
FALSE "1100" "VHS Quality"\
TRUE "1300" "SVHS Quality"\
FALSE "1500" "VCD Quality"\
FALSE "1800" "SVCD Quality" \
FALSE "2000" "Very Good Quality"\
FALSE "2500" "High Quality" \
FALSE "3000" "Excellent Quality"\
` || exit 0
##################################################################################
#How Long?
title="How long do you want to record for ?"
time_type=`zenity --width="380" --height="500" --title="$title" --list --radiolist --column="Click Here" \
--column="Record Time" --column="Description" \
FALSE "00:00:00" "unlimited"\
TRUE "00:00:30" "30 seconds for testing"\
FALSE "00:10:00" "0.2 hours"\
FALSE "00:30:00" "0.5 hours"\
FALSE "00:45:00" "0.75 hours"\
FALSE "01:00:00" "1 hour"\
FALSE "01:15:00" "1.25 hours"\
FALSE "01:30:00" "1.5 hours" \
FALSE "01:45:00" "1.75 hours"\
FALSE "02:00:00" "2 hours" \
FALSE "02:15:00" "2.25 hours"\
FALSE "02:30:00" "2.5 hours" \
FALSE "02:45:00" "2.75 hours"\
FALSE "03:00:00" "3 hours" \
FALSE "03:15:00" "3.25 hours" \
FALSE "03:30:00" "3.5 hours" \
` || exit 0
#M_TIME="-endpos $time_type"
#################################################################################
#user must enter a filename
filedate=$(date +%F_%H:%M-%S)
title="Please enter a filename for your recording, no spaces"
file_name=`zenity --width="480" --height="150" --title="$title" --file-selection --save --confirm-overwrite --filename="tvcap_$filedate"` || exit 0
###########################################################################################
# summary
R_MESSAGE=("${R_MESSAGE[@]}" "\nRecording options:")
R_MESSAGE=("${R_MESSAGE[@]}" "\nRecording audio: $if_audio")
R_MESSAGE=("${R_MESSAGE[@]}" "\nRecording from Input $INPUT_NR - Norm: $NORM $fps_count fps")
R_MESSAGE=("${R_MESSAGE[@]}" "\nCrop and scale options: $crop_scale")
R_MESSAGE=("${R_MESSAGE[@]}" "\nEncoding quality: $qual_type kb/s")
R_MESSAGE=("${R_MESSAGE[@]}" "\nRecording time:$time_type hours")
R_MESSAGE=("${R_MESSAGE[@]}" "\nFile name: $file_name.avi ")
echo ${R_MESSAGE[*]}
if [ ${VERBOSE} = 1 ]; then
zenity --info --text "${R_MESSAGE[*]}" --title "Recording options"
fi
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# mencoder line
#-----------------------------------------------------------------------------
if [ "$if_audio" = "yes" ]; then
zenity --info --title="Start recording with audio" --text="Press OK to start."
mencoder tv:// -tv driver=v4l2:norm=$NORM:width=$input_width:height=$input_height:outfmt=uyvy:device=${DEV_VIDEO}:input=${INPUT_NR}:fps=$fps_count:${M_AUDIO}:forceaudio:immediatemode=0 -msglevel all=9 -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:mbd=2:turbo:vbitrate=$qual_type:keyint=15 -vf pp=lb,$crop_scale -oac mp3lame -endpos $time_type -o $file_name.avi | tee ${LOGFILE} | zenity --progress --pulsate --auto-close --auto-kill --text="Processing Video - length: $time_type H:M:S"
zenity --info --title="Job complete" --text="The recording is now complete."
elif [ "$if_audio" = "no" ]; then
zenity --info --title="Start recording without audio" --text="Press ok to start recording"
1>${LOGFILE} 2>&1 \
mencoder tv:// -tv driver=v4l2:norm=$NORM:width=$input_width:height=$input_height:outfmt=uyvy:device=${DEV_VIDEO}:input=${INPUT_NR}:fps=$fps_count -msglevel all=9 -nosound -ovc lavc -ffourcc DX50 -lavcopts vcodec=mpeg4:mbd=2:turbo:vbitrate=$qual_type:keyint=15 -vf pp=lb,$crop_scale -endpos $time_type -o $file_name.avi | tee ${LOGFILE} | zenity --progress --pulsate --auto-close --auto-kill --text="Processing Video - length: $time_type H:M:S"
zenity --info --title="Job complete" --text="The recording is now complete."
fi
fi
exit 1
tvcap-script.sh라는 파일에이 코드를 모두 복사 / 붙여 넣기 만하면 실행 권한을 부여하고 터미널에서 실행할 수 있습니다. 과정은 매우 쉽고 다음과 같이 설명하겠습니다.
1.- Enter를 누르면 캡처 소스를 묻는 메시지가 표시되고 장치의 위치에 따라 (이전에 테스트 한) 여러 비디오 소스를 사용할 수 있습니다. / dev / video2를 사용하고 있습니다. 예, 내 USB TV 튜너를 나타냅니다. 이 스크린 샷에는 창 데코레이터가 없지만 옵션과 "확인"버튼을 바로 볼 수 있습니다.
2.- 이제 우리는 표준을 정의해야합니다. 멕시코에서는 NTSC를 사용합니다. 제곱 종횡비를 가진 다른 표준을 사용하여 비디오를 캡처하지 않으면 PAL을 사용하지 않아야합니다. 또한 거주지와 국가의 기준에 따라 다릅니다.
3 .- 내 TV 튜너가 여러 입력을 가지고있다, 당신은, 입력의 다른 양을 가지고 그것을 확인하고 캡처를위한 가장 적합한 하나를 결정하기 위해 필요한만큼의 테스트를 실행할 수 있습니다. TV를 가리키는 것을 사용하려고합니다. (입력 1 (TV))
4.- 다음으로 사운드 캡처 중에 문제가 발생하면 경고를 받고 솔루션을 제공받을 수 있습니다 (오디오 및 비디오 모두 한 번에 캡처되지만 snd_usb_audio 모듈이 이미로드 된 경우 충돌이 발생할 수 있음) 오디오 캡처 및 비디오 캡처 자체)
5 .- 내 TV 튜너, 당신을 위해 가장 적합한 하나를 확인합니다 (AUX 라인에 케이블을 연결을 통해 사운드 믹서에 의해 제어) 내 마더 보드에 내장 된 사운드 장치와의 통합을 포함하는 여러 개의 오디오 입력에 대한 지원을 제공합니다 기본 설정은 일반적으로 "최적"으로 표시됩니다.
6.- 모든 것이 잘되면 다음과 같은 메시지가있는 작은 창이 나타납니다.
"성공! / dev / video2를 읽고 쓸 수 있습니다!"
계속하려면 "확인"을 클릭하십시오.
7.- 그 후, 당신은 당신의 시스템에서 사용 가능한 기록 옵션 목록에서 선택할 수 있습니다. 다음 스크린 샷에서 볼 수있는 것을 설치했습니다. 누구나 유효하며 품질에는 큰 변화가 반영되지 않지만 개인적으로 mencoder를 선호합니다 . 이 중 하나라도 설치되어 있지 않으면 테스트를 실행하기 위해 설치해야합니다.
8 .- 당신이 (이전 단계에서) 인코딩 소프트웨어 환경 설정을 선택한 후에는 종횡비를 입력해야합니다. 이것에 대한 경험이 없다면 그대로 두십시오. 일반적으로 TV 튜너 신호에 더 잘 맞도록 기본 설정되어 있습니다.
9. 리 화면 비율에 관한 당신의 선택을 기반으로, 당신은 또한 비트 레이트에 따라, 비디오 품질에 대한 몇 가지 옵션이있을 것이다, 다음 창에 대한 설명은 매우 구체적이다. 비디오 파일 크기가 높을수록 높은 비트 전송률 (최고 품질)이 될 수 있습니다.
10.- 그 후, 우리는 우리의 비디오 캡처가 될 것입니다 시간을 선택하는 단지 필요가있다. 몇 가지 사전 설정이 있습니다.이 예에서는 "테스트를 위해 30 초"를 선택했지만 녹화 중지시기를 결정하기 위해 "무제한"을 선택할 수도 있습니다.
다음으로, 기본적으로 파일 이름을 묻는 메시지가 표시 되며이 화면에서 변경할 수 있습니다.
12.- 당신은 그냥 "확인"을 클릭, 다음 화면에서 "녹화 옵션"을 확인하라는 메시지가 표시됩니다.
13.- 그냥 한 번 더 시작을 클릭합니다.
14 살 녹화하는 경우, 단말은 어떤 활동이 같은 작은 창을 표시 할 수있다 :
프로세스가 끝나면 확인 창이 나타납니다.
그리고 그게 다야...
언제든지 Esc 키를 눌러 녹음 또는 프로세스 자체를 취소 할 수 있습니다. 전혀 변경되지 않습니다.
녹화가 끝나면 11 단계에서 선택한 장소에 "testvideo0.log"또는 이와 유사한 이름의 로그 파일과 함께 비디오가 제공됩니다.
이는 RF 신호 TV 튜너에서 인코딩하는 가장 쉬운 방법으로 오디오와 비디오를 모두 같은 파일로 수집합니다.
python 프로세스를 사용하여 달성 한 또 다른 프로세스가 있습니다.이 프로세스에는 채널 변경, 사전 기록 테스트 실행 및 기록과 같은 몇 가지 유용한 사항을 처리 할 수 있지만 때로는 실패합니다. 원하는 경우 연락 방법을 알려주세요. 양피지 나 성경을 쓰고 싶지 않습니다 ... LOL!
이 절차가 귀하의 경우에 효과가없는 경우이 답변을 삭제하기 전에 지원을 제공하기 위해 결과를 포함시켜 알려주십시오. 고마워 그리고...
행운을 빕니다!
가장 간단한 명령입니다.
ffmpeg -i /dev/video0 output.mp4
우분투 18.04에 vokoscreen을 조언합니다. 'sudo apt install vokoscreen'으로 설치할 수 있습니다. https://github.com/vkohaupt/vokoscreen 도 참조하십시오 .