Tôi muốn thực hiện các cuộc phỏng vấn video được ghi lại với Skype và đang tìm kiếm một công cụ đáng tin cậy để thực hiện điều đó.
Có bất cứ điều gì ngoài đó không phải là chậm hoặc lỗi?
Tôi đang chạy (K) Ubuntu.
Tôi muốn thực hiện các cuộc phỏng vấn video được ghi lại với Skype và đang tìm kiếm một công cụ đáng tin cậy để thực hiện điều đó.
Có bất cứ điều gì ngoài đó không phải là chậm hoặc lỗi?
Tôi đang chạy (K) Ubuntu.
Câu trả lời:
Có phần mềm recordMyDesktop http://recordmydesktop.sourceforge.net/about.php mà bạn có thể ghi lại bất kỳ phần nào của màn hình bạn muốn. Tôi sử dụng nó để ghi lại các phiên skype của tôi.
sudo apt-get install recordmydesktop
để cài đặt nó từ các kênh chính.
Lệnh này sẽ chụp toàn bộ máy tính để bàn của bạn: Vì vậy, hãy sử dụng lệnh này, bất cứ khi nào bạn muốn ghi lại cuộc hội thoại skype (hoặc bất cứ điều gì khác)
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
Ghi video và âm thanh trực tiếp trong khi gọi (hoặc trong bất kỳ hoạt động X11 nào trên máy tính để bàn) không khó lắm nhờ ffmpeg và số lượng bài viết trợ giúp có sẵn (bao gồm cả trang web này). Tuy nhiên, nếu bạn nhắm đến chất lượng cao hơn, bạn sẽ nhanh chóng đạt đến giới hạn của phương pháp đơn giản là lấy và nén phương tiện đồng thời. Do đó, cần có một công cụ (hoặc một bộ công cụ) có thể cho phép:
Các kịch bản Bash sau ( myrec
, myrec-novideo
và myproc
) là nỗ lực của tôi ở nhiệm vụ này. Tôi chắc chắn có nhiều cách viết các kịch bản này gọn gàng hơn, nhưng tôi đã học Bash scripting khi đang di chuyển (với sự hài lòng to lớn khi tôi đã làm được, tôi có thể thêm vào).
ffmpeg
pulseaudio
skype
Nếu 1
hoặc 2
không có trong hệ thống của bạn, hãy cài đặt chúng với trình quản lý gói ưa thích của bạn (tôi sử dụng synaptic
). Để skype
truy cập www.skype.com .
myrec
myrec
(hoặc bất cứ tên nào phù hợp với bạn)myrec
bằng cách ban hành lệnh:chmod +x myrec
User settings
phần cho phù hợp với thiết lập của bạn:
#!/bin/bash
echo "Record lossless audio and lossless video for further processing."
echo "Created file name always starts with temp_YYYYMMDD_HHMMSS."
echo "Syntax:"
echo "myrec [optional file description]"
echo "Optional file description is appended to the file name, with spaces replaced by underscores."
echo
echo
### User settings - adjust values to suit your system and needs
# I used to have the name of my webcam mic here, but that stopped working after a system update. "default" was the only fix I found. If you have more than one microphone connected, you may need to tell Pulseaudio which mic you want to be the default, I think pavucontrol is the utility for it.
# If you want to try supplying a name here, run pacmd, then within it the command list-sources will give you a list of possible microphones. Use the name field value without angle brackets.
microphone_audio_device="default"
# Run pacmd, within it the command list-sinks will give you a list of devices to choose from. Use the name field value without angle brackets.
speakers_audio_device="alsa_output.pci-0000_00_1b.0.analog-stereo.monitor"
# Select frame size.
# Some standard frame sizes for reference:
# wvga 852x480
# wxga 1366x768
# wsxga 1600x1024
# wuxga 1920x1200
# woxga 2560x1600
# wqsxga 3200x2048
# wquxga 3840x2400
# whsxga 6400x4096
# whuxga 7680x4800
frame_size="wsxga"
# Framerate in frames per second
framerate="30"
# Indicate which screen the video should be recorded from and an optional offset.
# For example:
# :0.0+10,20
# where 0.0 is display.screen number of your X11 server, same as the DISPLAY environment variable. 10 is the x-offset and 20 the y-offset of the frame, measured from the top left corner of the screen to the top left corner of the frame.
frame_position=":0.0"
# Include the trailing slash after target directory name.
# Expect a very large file!
target_directory="/target/directory/name/"
### End of user settings
record_command="ffmpeg -f pulse -thread_queue_size 512k -i $speakers_audio_device -f pulse -thread_queue_size 512k -i $microphone_audio_device -f x11grab -s $frame_size -r $framerate -thread_queue_size 512k -i $frame_position -map 0 -map 1 -map 2 -codec:a copy -codec:v libx264 -qp 0 -preset ultrafast"
temporary_file_prefix="temp_"
# The IFS (Internal Field Separator) system variable stores the character that separates command line arguments.
# We can use it to replace spaces with underscores.
temp=$IFS
IFS='_'
description="$*"
IFS=$temp
if [ $# -eq 0 ]; then
$record_command $target_directory$temporary_file_prefix`date +%Y%m%d_%H%M%S`.mkv
else
$record_command $target_directory$temporary_file_prefix`date +%Y%m%d_%H%M%S`_$description.mkv
fi
Chỉ ghi âm thanh được xử lý bởi một tập lệnh riêng biệt trong phần sau.
myrec-novideo
myrec-novideo
(hoặc bất cứ tên nào phù hợp với bạn)myrec-novideo
bằng cách ban hành lệnh:chmod +x myrec-novideo
User settings
phần cho phù hợp với thiết lập của bạn:
#!/bin/bash
echo "Record lossless audio for further processing."
echo "Created file name always starts with temp_YYYYMMDD_HHMMSS."
echo "Syntax:"
echo "myrec-novideo [optional file description]"
echo "Optional file description is appended to the file name, with spaces replaced by underscores."
echo
echo
### User settings - adjust values to suit your system
# I used to have the name of my webcam mic here, but that stopped working after a system update. "default" was the only fix I found. If you have more than one microphone connected, you may need to tell Pulseaudio which mic you want to be the default, I think pavucontrol is the utility for it.
# If you want to try supplying a name here, run pacmd, then within it the command list-sources will give you a list of possible microphones. Use the name field value without angle brackets.
microphone_audio_device="default"
# Run pacmd, within it the command list-sinks will give you a list of devices to choose from. Use the name field value without angle brackets.
speakers_audio_device="alsa_output.pci-0000_00_1b.0.analog-stereo.monitor"
# Include the trailing slash after target directory name.
# Expect a large file!
target_directory="/target/directory/name/"
### End of user settings
record_command="ffmpeg -f pulse -thread_queue_size 512k -i $speakers_audio_device -f pulse -thread_queue_size 512k -i $microphone_audio_device -map 0 -map 1 -codec:a copy -codec:a copy"
temporary_file_prefix="temp_"
# The IFS (Internal Field Separator) system variable stores the character that separates command line arguments.
# We can use it to replace spaces with underscores.
temp=$IFS
IFS='_'
description="$*"
IFS=$temp
if [ $# -eq 0 ]; then
$record_command $target_directory$temporary_file_prefix`date +%Y%m%d_%H%M%S`.mkv
else
$record_command $target_directory$temporary_file_prefix`date +%Y%m%d_%H%M%S`_$description.mkv
fi
myproc
myproc
(hoặc bất cứ tên nào phù hợp với bạn)myproc
bằng cách ban hành lệnh:chmod +x myproc
User settings
phần cho phù hợp với thiết lập của bạn:
#!/bin/bash
echo "Compress files recorded with myrec or myrec-novideo."
echo "For files to be processed they need to reside in the storage directory and start with temp_"
echo "The two audio tracks (mic and speakers) are mixed together into one new stream, but they are also available as separate tracks in the final file."
# Mixing is because players I know cannot play two audio tracks from the same file simultaneously.
# The mic also captures sounds produced by the speakers. It has two effects:
# 1. You can use this single track to hear both yourself (the mic) and whatever came out of your speakers. Personally I did not like the degraded quality of recorded speaker sounds, hence the direct recording off the sound card and mixing that with the mic track.
# 2. Speaker sounds recorded by the mic are slightly delayed when compared to the direct recording off the sound card. The mixed track is thus hard to listen to.
# I do have echo cancellation module loaded in Pulseaudio, perhaps there is something wrong with my configuration?
### User settings
# Indicate storage directory without the trailing slash
storage_directory="/storage/directory/name"
### End of user settings
# Any temp_ file may contain 3 streams (audio, audio, video) indexed as (0, 1, 2), or just 2 streams (audio, audio) indexed as (0, 1).
# A file temp2_ contains just one stream: both audio streams from temp_ mixed.
# The step with temp2_ is necessary as the mixing option (-filter_complex) is a global option (i.e. not stream-specific). Attempts at doing it all in one go prevent the separate tracks from being copied into the final file.
for f in $storage_directory/temp_*
do
if [ -e ${f/temp_/} ]
then
# Do not overwrite an existing final file. Prevents unnecessary work when the script is run regularly as a cron job.
echo "$f: A final file (without temp_) already exists. Skipping. If you want to reencode, please delete the final file manually."
else
# Variable g will contain the name of the second temporary file with both audio streams mixed into one.
g=${f/temp_/temp2_}
# Mixing mic and sound card tracks into one stream
ffmpeg -i "$f" -map 0:0 -map 0:1 -filter_complex amix=inputs=2:duration=longest:dropout_transition=2 -codec:a libvorbis -n "$g"
# Create the final file: copy the mixed audio stream from temp2_, add and compress both separate audio streams from temp_, compress at high quality the video stream from temp_.
# The question mark in -map 0:2? tells ffmpeg to ignore the error if this stream (video) is missing. Allows this same script to be used for audio-only recordings.
ffmpeg -i "$f" -i "$g" -map 1:0 -map 0:0 -map 0:1 -map 0:2? -codec:a:0 copy -codec:a:1 libvorbis -codec:a:2 libvorbis -codec:v libx264 -qp 18 -preset slow -threads 0 -n "${g/temp2_/}"
# Delete temp2_
rm "$g"
fi
done
Nhờ ffmpeg
tính linh hoạt, myproc
có thể xử lý các tệp có thể có hoặc không chứa luồng video.
myrec
về các thiết lập của bạn. Nói chung, hãy cố gắng để cửa sổ cuộc gọi video ở đâu đó gần webcam của bạn, để người ở phía bên kia có cơ hội nghĩ rằng bạn đang nhìn vào mắt họ.Có một cửa sổ đầu cuối mở. Bất cứ khi nào bạn muốn bắt đầu ghi âm, hãy sử dụng lệnh:
. myrec some description
. myrec-novideo some description
some description
là tùy chọn trong cả hai tập lệnh. Bạn có thể sử dụng Tab
phím để mở rộng tên tập lệnh để lưu một số thao tác gõ.
ffmpeg
sẽ bắt đầu ghi vào một tệp có tên temp_YYYYMMDD_HHMMSS_some_description.mkv
, YYYYMMDD_HHMMSS
ngày và giờ ghi.
q
tại cửa sổ terminal, nơi ffmpeg
đang ghi âm khi bạn sẵn sàng dừng lại.. myproc
để xử lý (nén) các tập tin. Bạn có thể làm thủ công hoặc thiết lập cron
công việc để thực hiện khi bạn đi vắng.temp_
tệp.default
. Tôi đã từng có tên mic ở đó, nhưng cài đặt này đã ngừng hoạt động sau khi cập nhật hệ thống. Nó có thể là một cái gì đó bị hạn chế chỉ thiết lập của tôi, hoặc pulseaudio
.Pulse
Mô-đun khử tiếng vang được tải, nhưng tôi nghĩ nó chỉ có nghĩa là hủy tiếng vang của chính tôi. Có một điều là khi âm thanh mic được trộn với âm thanh của card âm thanh, độ trễ nhỏ làm cho luồng kết quả khó nghe. Có ai có ý tưởng làm thế nào để ngăn mic ghi lại âm thanh từ loa không?Tôi hy vọng bạn tìm thấy những công cụ này hữu ích. Tôi mong muốn được nghe những suy nghĩ của bạn để cải thiện và bình luận.
Studio Phần mềm Broadcaster (OBS) liên kết tất cả các yêu cầu này thành một lối vào dễ sử dụng.
Đó là mã nguồn mở và đa nền tảng:
Đối với Ubuntu 15.04 trở lên:
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt-get update && sudo apt-get install obs-studio ffmpeg
Đối với các bản phân phối khác / các phiên bản Ubuntu cũ hơn, hãy kiểm tra wiki git
xvidcap cho phép bạn chọn một khu vực từ máy tính để bàn của bạn và ghi lại nó. Bắt đầu với lệnh
xvidcap
tìm video của bạn tại ./test-0000.mpeg theo mặc định.