使用 Hauppauge 610 USB-Live 2 模拟视频数字化仪和视频捕获设备捕获 VHS 磁带的脚本

使用 Hauppauge 610 USB-Live 2 模拟视频数字化仪和视频捕获设备捕获 VHS 磁带的脚本

现代 Linux 发行版的 Linux 内核支持此设备。我使用 VLC Media Player 进行数字化时取得了最大的成功(相比之下,FFmpeg 渲染的是像素化图片)。但是,我如何创建脚本以使数字化 VHS 尽可能高效?

答案1

这个脚本对我来说非常有效,可以数字化家庭 VHS。如果您想转换为 mp4 以获得理想的压缩级别,则需要 VLC 媒体播放器和 FFmpeg。v4l2:///dev/video0 :input-slave=alsa://hw:2,0根据您的机器,根据需要调整(视频和音频输入)。您可以使用 VLC 并转到媒体 > 捕获设备来找到此信息。在那里您可以看到视频设备名称和音频设备名称。

它是一个 mpeg2 设备。使用 VLC 直接编码为 mp4 或 h264 将产生嘴唇不同步的视频。这就是为什么我先编码为 mpeg2,然后处理为 mp4。这里的 FFmpeg 设置为使用 4 个 CPU 内核中的 3 个,因此它不会使 CPU 达到最大限度。您需要-threads 3根据您的 CPU 进行调整。如果您不确定,-threads 3可以将其删除。在使用前,请务必将脚本标记为可执行:chmod +x your-script-name

#!/bin/bash

# Enter the name of the file.
read -p "Enter file name: " filename

# Enter how many minutes.
read -p "How many minutes? (If left blank by hitting enter, the default is 124 minutes.): " minutes
if [ -z "$minutes" ]; then
    minutes=124
fi

# Remove any spaces in the file name.
filename=$(echo "$filename" | sed 's/ /-/g')

# This is for metadata. It will show up in the media player playlist or after clicking Properties (in OS X Info) on the file context menu.
read -p "Enter a description: " details

# Turn off sleep. You can uncomment this only if using Xfce.
# xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 14

# Create Videos directory if not there.
if ! [ -d $HOME/Videos ]; then mkdir $HOME/Videos; fi

# Encode video. 
timeout --foreground ${minutes}m cvlc v4l2:///dev/video0 :input-slave=alsa://hw:2,0 :v4l2-standard=NTSC :live-caching=300 --sout '#transcode{vcodec=mp2v,acodec=mpga,ab=128,channels=2,samplerate=48000,fps=29.97,deinterlace}:std{access=file{no-overwrite},mux=ts,dst='$HOME/Videos/$filename.ts'}'

# Convert to libx264 to compress further, add in the metadata comments, and keep CPU usage to 75%. 
ffmpeg -i $HOME/Videos/$filename.ts -s 720x480 -c:v libx264 -preset medium -crf 22 -acodec copy -metadata comment="$details" -threads 3 $HOME/Videos/$filename.mp4

相关内容