- function
- Video and Audio Recording on a Single PC
- Synchronize Two PCs to Record Video and Audio
- Capture Webcam Cropped to 480x720
- Server Sends Microphone Input and Receives It and Loops It Back to the Speaker
- Server Sends Webcam and Receives It and Loops It Back to the Speaker
- Macbook Air (M1, 2020)
- macOS Monterey 12.5.1
- Apple M1
- RAM 8GB
- ALIENWARE M15
- Windows 11 Home
- Intel Core i7-11800H
- RAM 16GB
- Windows
- Download ffmpeg (https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z)
- Unzip the downloaded file
- Place it in any folder and pass the path to "ffmpeg-5.1.2-full_build/bin".
- Mac OS
- Install via Homebrew:
brew install ffmpeg
- Install via Homebrew:
- Clone the github repository:
git clone https://github.com/ahclab/NoXiRecorder.git
- movement:
cd NoXiRecorder
- movement:
- Create conda env:
conda create -n recorder python=3.8
- source env:
conda activate recorder
- source env:
- Dependencies:
- Install requirements:
pip install -r requirements.txt
- Install repo:
pip install -e .
- Install requirements:
python NoXiRecorder/utils/getDeviceID.py
Enter the device ID referring to the image stored in NoXiRecorder/utils/video_device_img.
VIDEO DEVICE JSON: NoXiRecorder/setting/video_device.json
This must be done every time a device is made to connect.
The main variables that need editing are listed below
- user: Select the role of the computer to be used from "expert", "novice", "observer".
- device: Enter the name of the equipment to be used for the recording
- id: Enter the device ID used for recording. This ID will be used if the device name is not found.
- ip: Please enter ip address for server.
If network traffic is limited by security software, communication between computers is not possible.
Be sure to turn it off.
python NoXiRecorder/capture.py
To end capture, press "e" on the capture screen.
If you want to take audio and video on one computer, please run the following program.
python NoXiRecorder/AVrecorder.py
Press "s" to start record, "e" to end record.
If you get "AttributeError: module 'ffmpeg' has no attribute 'input'", please execute the following command.
pip uninstall python-ffmpge ffmpeg-python
pip install ffmpeg-python
If you get an "Invalid buffer size error", please review the settings file.
To synchronize two PCs for recording, run the following program.
python NoXiRecorder/server.py
python NoXiRecorder/client.py
- time: Check the current time
- ready: Confirmation of communication status
- set option: Setting Options
ex.)--num 01
- cat option: Display of currently set options
- record: Launch AVrecordeR
- start: Start of recording
- end: End of recording
- exit: Disconnection of communication and program termination
python NoXiRecorder/monitorServerAudio.py --to_user novice
python NoXiRecorder/monitorServerAudio.py --to_user expert
python NoXiRecorder/monitorClientAudio.py --monitor_user novice
python NoXiRecorder/monitorClientAudio.py --monitor_user expert
python NoXiRecorder/monitorServerAudio.py --to_user observer
python NoXiRecorder/monitorServerAudio.py --to_user observer
python NoXiRecorder/monitorClientAudio.py --monitor_user expert
python NoXiRecorder/monitorClientAudio.py --monitor_user novice
Since you will have multiple terminal windows open, we recommend installing the following terminal applications.
- Windows
- Installation of WindowsTerminal (https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701?hl=ja-jp&gl=jp&icid=TopNavWindowsApps)
- Using Anaconda Python with PowerShell (https://helve-blog.com/posts/python/powershell-anaconda-python/)
- Mac OS
- Installation of Iterm2 (https://iterm2.com)
For monitoring of Expert and Novice by observers, it is recommended that a screen sharing application be used in conjunction.
Chrome Remote Desktop, which is OS-independent, is the easiest.
- Remote Desktop
- Installation of Chrome Remote Desktop (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwj_gIDyl8H8AhWprlYBHVS_DNkQFnoECBIQAQ&url=https%3A%2F%2Fremotedesktop.google.com%2F%3Fhl%3Dja&usg=AOvVaw0eAhneSA3hLZ5kRRLHbGUr)
- Set up a server (Expert/Novice)
- Set up a client (Observer)