जवाबों:
Guvcview का उद्देश्य लिनक्स UVC ड्राइवर द्वारा समर्थित उपकरणों से वीडियो को कैप्चर करने और देखने के लिए एक सरल GTK इंटरफ़ेस प्रदान करना है, हालांकि यह किसी भी v4l2 संगत डिवाइस के साथ काम करना चाहिए।
परियोजना वीडियो प्रतिपादन के लिए luvcview पर आधारित है, लेकिन सभी नियंत्रण GTK2 इंटरफ़ेस का उपयोग करके निर्मित होते हैं।
Guvcview (संस्करण 0.9.9 के बाद से) एक नियंत्रण केवल विंडो है, (कंसोल से:) guvcview --control_only
, यह अन्य ऐप्स पर छवि नियंत्रण की अनुमति देता है, जैसे कि ईकिगा, चीज, म्लेपर, स्काइप ...
Guvcview ऑडियो का समर्थन पोर्टऑडियो लाइब्रेरी पर आधारित है, संस्करण 0.9.3 तक अवरुद्ध API का उपयोग ऑडियो कैप्चर के लिए किया गया था, क्योंकि संस्करण 0.9.4 के बाद कॉलबैक विधि का उपयोग किया जाता है, यह बेहतर प्रदर्शन प्रदान करता है, यह भी पसंदीदा विधि है। portaudio एपीआई।
पोर्टाडियो द्वारा समर्थित सभी इंटरफेस (ALSA, OSD, JACK, ...) को guvcview में उपलब्ध होना चाहिए। बस यह सुनिश्चित करें कि वांछित इंटरफेस सक्षम किए गए पोर्टऑडियो को संकलित किया गया था।
लिनक्स यूवीसी चालक के पास विस्तार नियंत्रण के लिए एक कार्यान्वयन है (ये विक्रेता विशिष्ट नियंत्रण हैं और यूवीसी युक्ति में समर्थित हैं।), उन्हें गतिशील नियंत्रण कहा जाता है क्योंकि उन्हें गतिशील रूप से चालक में लोड किया जाना चाहिए।
आज तक केवल लॉजिटेक ने अपने यूवीसी वेबकेम विस्तार नियंत्रण के लिए चश्मा की आपूर्ति की है, ये ग्व्यूक्विव द्वारा समर्थित हैं।
ड्राइवर को इन नियंत्रणों को जोड़ने के लिए नए ड्राइवर संशोधनों में व्यवस्थापक अधिकारों की आवश्यकता होती है, इसलिए मूल रूप से दो समाधान हैं:
sudo
प्रति सत्र कम से कम एक बार मूल (उपयोग ) के रूप में guvcview शुरू करें , संस्करण 1.2.0 के बाद से आप इस विकल्प के साथ कर सकते हैं --add_ctrls
पूरी तरह से guvcview लॉन्च करने की आवश्यकता से बचने के लिए
libwebcam स्थापित करें इस सॉफ्टवेयर में एक udv स्क्रिप्ट है जो आपके लॉजिटेक कैमरे में आवश्यक नियंत्रण जोड़ देनी चाहिए।
sudo add-apt-repository ppa:pj-assis/ppa
sudo apt-get update
sudo apt-get install guvcview
इस प्रश्न के उत्तर इस प्रश्न के उत्तर से मिलते हैं : वीएचएस टेप से रिकॉर्ड ।
हमें यह सुनिश्चित करने की आवश्यकता है कि सॉफ्टवेयर सही डिवाइस से उचित डेटा इकट्ठा कर रहा है। चलिए टर्मिनल में एक क्वेरी छोड़ते हैं जो हमें यह देखने देती है कि आपके कंप्यूटर में कितने डिवाइस जुड़े हुए हैं, जिनका उपयोग छवियों को इकट्ठा करने के लिए किया जा सकता है, टर्मिनल में इस कमांड का उपयोग करें:
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 वीडियो डिवाइस हैं, जिनमें से एक यूएसबी टीवी ट्यूनर है जिसका उपयोग मैं लाइव टीवी शो / वीटीआर / वीसीआर / आरएफ-डीवीडी / वीडियो कनवर्टर और अन्य आरएफ सिग्नल देखने / रिकॉर्ड करने के लिए करता हूं।
अन्य डिवाइस कंप्यूटर पर USB स्लॉट्स से जुड़ी USB वेब कैमरा हैं।
यदि आपका वेब कैमरा एक माइक्रोफोन की विशेषता है, तो ऑडियो और वीडियो दोनों को एंड्रियास स्कालक द्वारा टीवी-स्क्रिप्ट का उपयोग करके रिकॉर्ड किया जा सकता है , जो आपकी सुविधा के लिए मैं यहां कोड डाल रहा हूं:
#!/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 दबाने के बाद, आपको कैप्चर स्रोत के लिए कहा जाएगा, और डिवाइस के स्थान (पहले परीक्षण किए गए) पर निर्भर करते हैं, आप मेरे मामले में -as कर सकते हैं- कई वीडियो स्रोत, मैं इसके लिए / dev / video2 का उपयोग कर रहा हूं उदाहरण, जो मेरे USB टीवी ट्यूनर को संदर्भित करता है। ध्यान दें कि इस स्क्रीनशॉट को विंडो डेकोरेटर नहीं मिला है, लेकिन विकल्प और "ओके" बटन को वहीं देखा जा सकता है।
2.- अब हमें आदर्श को परिभाषित करने की आवश्यकता है, मेक्सिको में हम NTSC का उपयोग करते हैं, और जब तक आप वर्ग पहलू अनुपात के साथ एक अलग मानक का उपयोग करके अपने वीडियो को कैप्चर नहीं करना चाहते हैं, आपको PAL का उपयोग नहीं करना चाहिए, जो वास्तव में आपके वीडियो की गुणवत्ता को थोड़ा नुकसान पहुंचा सकता है। यह इस बात पर भी निर्भर करता है कि आप कहां रहते हैं और आपके देश का आदर्श क्या है।
3.- मेरे टीवी ट्यूनर में कई इनपुट हैं, आपके पास अलग-अलग मात्रा में इनपुट हो सकते हैं, इसे देख सकते हैं और कई परीक्षण चला सकते हैं क्योंकि आपको यह निर्धारित करने की आवश्यकता है कि आपके कैप्चर के लिए कौन सा सबसे अच्छा है। मैं एक का उपयोग करने जा रहा हूं जो टीवी को संदर्भित करता है। (इनपुट 1 (टीवी))
4.- इसके बाद, आपको (या नहीं) चेतावनी दी जा सकती है और समाधान के लिए पेश किया जा सकता है अगर साउंड कैप्चर के दौरान कुछ गलत हो जाता है (ऑडियो और वीडियो दोनों एक ही बार में कैप्चर होने जा रहे हैं लेकिन अगर आपका snd_usb_audio मॉड्यूल पहले ही लोड हो चुका है तो यह दुर्घटनाग्रस्त हो सकता है ऑडियो कैप्चर और इस प्रकार वीडियो खुद को कैप्चर करता है)
5.- मेरा टीवी ट्यूनर कई ऑडियो इनपुट के लिए समर्थन प्रदान करता है, जिसमें मेरी मदरबोर्ड में एम्बेडेड साउंड डिवाइस के साथ एकीकरण शामिल है (केबल को ऑक्स-लाइन से कनेक्ट करके और ध्वनि मिक्सर द्वारा नियंत्रित किया जाता है), आप जांचते हैं कि कौन सा सबसे अच्छा है आप और याद रखें कि डिफॉल्ट को आमतौर पर "आपके लिए सबसे अच्छा" के रूप में चिह्नित किया जाता है।
6.- यदि सब कुछ ठीक चल रहा है, तो आपको एक संदेश के साथ एक छोटी सी खिड़की दिखाई देगी जो कुछ इस तरह से पढ़ती है:
"SUCCESS! / Dev / video2 पढ़ा जाता है- और लिखने योग्य!"
जारी रखने के लिए "ओके" पर क्लिक करें।
7.- उसके बाद, आप अपने सिस्टम पर उपलब्ध रिकॉर्डिंग विकल्पों की सूची में से चुन सकते हैं। मैंने वही स्थापित किया है जो आप अगले स्क्रीनशॉट में देख सकते हैं। कोई भी मान्य है और गुणवत्ता बड़े परिवर्तनों को प्रतिबिंबित नहीं करती है, लेकिन मैं व्यक्तिगत रूप से मेन्कोडर पसंद करता हूं । यदि आपके पास इनमें से कोई भी स्थापित नहीं है, तो आपको अपने परीक्षण चलाने के लिए इसे स्थापित करना चाहिए।
8.- जब आपने अपनी एन्कोडिंग सॉफ़्टवेयर वरीयता (पिछले चरण में) चुनी है, तो आपको पहलू अनुपात के लिए कहा जाएगा। यदि आपके पास इस पर अनुभव नहीं है तो इसे वैसे ही छोड़ दें। यह सामान्य रूप से चूक करता है जो आपके टीवी ट्यूनर सिग्नल को बेहतर ढंग से फिट करता है।
9.- पहलू अनुपात से संबंधित आपकी पसंद के आधार पर, आपके पास वीडियो गुणवत्ता के लिए कई विकल्प होंगे, यह भी बिटरेट पर आधारित है, अगली विंडो में विवरण बहुत विशिष्ट है। याद रखें कि: उच्च बिटरेट (सर्वोत्तम गुणवत्ता) वीडियो फ़ाइल का आकार एक बड़ी राशि बन सकता है।
10.- उसके बाद, हमें यह चुनने की जरूरत है कि हमारा वीडियो कैप्चर कब तक होगा। कई उदाहरण हैं, मैंने इस उदाहरण में "परीक्षण के लिए 30 सेकंड" का चयन किया है, लेकिन आप रिकॉर्डिंग को रोकने के लिए निर्णय लेने के लिए कोई भी या "असीमित" चुन सकते हैं।
11.- इसके बाद, आपको एक फ़ाइल नाम के लिए कहा जाएगा, डिफ़ॉल्ट रूप से एक, जिसे आप इस स्क्रीन में बदल सकते हैं।
12.- आपको अगली स्क्रीन में अपने "रिकॉर्डिंग विकल्प" की जांच करने के लिए प्रेरित किया जाएगा, बस "ओके" पर क्लिक करें।
13.- शुरू करने के लिए बस एक और क्लिक करें।
14.- रिकॉर्डिंग करते समय, टर्मिनल कुछ गतिविधि और इस तरह की एक छोटी खिड़की दिखा सकता है:
15.- प्रक्रिया के अंत में, आपको एक पुष्टिकरण विंडो प्राप्त होगी।
और बस...
आप किसी भी क्षण ईएससी दबाकर रिकॉर्डिंग या प्रक्रिया को रद्द कर सकते हैं, कोई भी बदलाव नहीं होगा।
रिकॉर्डिंग के अंत में, आपके पास उस स्थान पर वीडियो होगा जिसे आप चरण 11 में चुनते हैं, एक लॉग फ़ाइल के साथ एक साथी में नाम के साथ: "testvideo0.log" या ऐसा कुछ।
यह आरएफ सिग्नल टीवी ट्यूनर्स से एन्कोड करने का सबसे आसान तरीका है, एक ही फाइल में ऑडियो और वीडियो दोनों को इकट्ठा करना।
मेरे पास एक और प्रक्रिया है जो एक अजगर प्रक्रिया का उपयोग करके हासिल की गई है जो एक जीयूआई की सुविधा देती है जिसमें आप कई उपयोगी चीजें संभाल सकते हैं, जैसे कि चैनल बदलना, प्री-रिकॉर्डिंग परीक्षण और यहां तक कि रिकॉर्ड करना लेकिन कभी-कभी यह मुझे विफलताओं को छोड़ देता है। यदि आप चाहें तो कृपया मुझे बताएं कि मैं आप तक कैसे पहुंच सकता हूं। मैं चर्मपत्र या बाइबल लिखना नहीं चाहता ... LOL!
यदि यह प्रक्रिया आपके मामले के लिए काम नहीं करती है, तो कृपया मुझे इस उत्तर को हटाने से पहले कुछ सहायता प्रदान करने के लिए अपने परिणामों सहित मुझे बताएं। धन्यवाद और...
सौभाग्य!
आपको "QtCAM" की कोशिश करनी चाहिए - 10 से अधिक छवि नियंत्रण सेटिंग्स के साथ एक मुफ्त, ओपन सोर्स लिनक्स वेबकेमरा सॉफ्टवेयर।
यह सबसे सरल आदेश है:
ffmpeg -i /dev/video0 output.mp4
मैं उबंटू के लिए वोकॉशिन की सलाह दूंगा 18.04। आप इसे 'sudo apt install vokoscreen' के साथ स्थापित कर सकते हैं। Https://github.com/vkohaupt/vokoscreen भी देखें ।