我有 Xubuntu 14.04。我使用的摄像机是索尼 CCD-TRV16 NTSC 180 倍数码变焦。我正在使用Hauppauge 610 USB-Live 2 模拟视频数字化仪和视频捕捉设备将 8mm 磁带转换为 mp4。我正在使用 VLC 转换视频。
我将转换相当多的磁带。如果命令或脚本中能有与我完全相同的 VLC GUI 设置就好了。此外,如果能够在一定时间段后停止录制,那就太好了。我不在乎用什么程序来转换这些。这位顾客说他们能够成功使用 ffmpeg。但是,我可以使用任何可以运行的程序。提前致谢!
这是 的输出ffmpeg -f v4l2 -i /dev/video0 -f alsa -i hw:2,0
。
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 8535.656468, bitrate: 165722 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 720x480, 165722 kb/s, 29.97 fps, 29.97 tbr, 1000k tbn, 1000k tbc
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, alsa, from 'hw:2,0':
Duration: N/A, start: 1450034548.361553, bitrate: 1536 kb/s
Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
答案1
准备步骤
使用 启动 VLC vlc -vvv
。这将打开详细程度2 (debug)
。您也可以在 VLC GUI 中通过以下方式查看工具>消息。然后按照上面屏幕截图中列出的步骤在调试日志中显示命令所需的信息。然后,您可以通过查看下面的脚本和在线脚本来调整适当的语法。您还可以通过选择来查看代码和语法显示更多选项。(上面我的问题中的第一个屏幕截图。)然而,这只是我能够创建循环流化床命令如下。您可能只想根据您的需要调整以下脚本。
最初,我无法使用摄像机上的一个 RCA 音频端口播放音频。我通过以下方式解决了这个问题工具>优先>全部(单选按钮,左下角)。然后我去了输入/编解码器>访问模块>阿尔萨斯大学。我改变了采样率到48000赫兹。更改此设置后,您将能够流式传输视频。其他采样率会导致错误。
去媒体>打开捕获设备。 选择视频设备名称和音频设备名称(请注意,在上面的屏幕截图中默认因为我使用的是麦克风端口。如果你在 Hauppauge 设备上使用 RCA 连接,你的端口会有所不同。)选择 NTSC(或你的录像带的任何格式)。单击播放。播放时,转到工具>编解码器信息。您需要根据那里提供的信息调整下面的脚本。根据那里提供的信息,我将脚本中的帧速率调整为 29.97,采样率调整为 48000 Hz。
关于剧本
A。系统会提示您输入文件名和元数据。文件设置为保存到 ~/Videos。
b.甚高频通信 (cvlc)
- 我将超时设置为 122 分钟,因为我的 8 毫米磁带长达两小时。该
--foreground
选项允许您按“ctrl c”,它将仅停止脚本的这一部分并继续下一部分。(我的一些视频更短。) - 您可以使用 VLC GUI 查找音频和视频设备名称。(参见上面的屏幕截图。)
- 了解您的视频是 NTSC 还是其他格式。
vcodec
和acodec
设置为mpeg2
和mpga
。亚马逊产品页面霍帕格 610声明它编码为 MPEG-2。- 对于 MPEG-2,VLC GUI 仅提供 .ts 格式选项。(见上面的第二张截图。)因此我使用
mux=ts
。最初我使用vcodec=h264
acodec=mpga
和mux=mp4
。但是,存在音频同步问题,并且视频中的某些位置会出现声音中断。另请参阅多路复用=部分这里。 - 我需要
samplerate=48000
它发挥作用。 - Codec Information 上给出的每秒帧数为 29.97。这是 VHS / 8mm 磁带的标准。因此,我决定匹配它。
- 我选择了反隔行扫描。我觉得这样看起来好多了。
- 使用
mux=ts
将创建一个大文件。我的两小时视频有 5-7 GB。
C。FFmpeg 使用 libx264 进一步压缩(从大约 5 GB 压缩到大约 1.5 GB)并添加元数据。每盘 8 毫米磁带都有额外的手写注释,我想将这些附加信息包含在文件中。在同一个命令中,FFmpeg 将左声道音频从仅左声道移动到左右声道作为流副本,而无需额外的音频压缩。我的摄像机只有一个 RCA 音频端口。所以这解决了一个扬声器的问题。感谢蒙道根就单声道音频问题给出解答。
d.最后,脚本完成后会通知您。对于我的个人脚本,我实际上使用的是以下内容。
在我的电脑上:
exo-open --launch WebBrowser $HOME/Videos/video-finished.htm
文件包含:<p style="font-size: 128px; color: green; font-family: sans; text-align: center; margin-top: 10%; font-weight: bold;">VIDEO FINISHED</p>
在我的手机上:
您可以安装gcalcli
以在脚本完成时通过 Google 日历在手机上接收通知。下面,将未来两分钟的日期和时间放入变量中。然后为该时间创建一个日历条目。为该事件的开始设置提醒。Google 日历需要两分钟的缓冲时间。(我试过一分钟。)因此,编码完成后两分钟您就会收到通知。
new_date=`date --date="2min"`
gcalcli --calendar 'Name of Your Calendar' --title 'Video Finished' --where '' --when \'"$new_date"\' --duration 5 --description '' --reminder 0 add
成品
最终结果产生更大的.ts文件和进一步压缩的.mp4。
CPU使用率
我有一台 AMD A8-6500B 处理器。cvlc
运行 CPU 使用率约为 15%。但是,ffmpeg
运行速度约为 97%。因此,在我的脚本中(不是下面的脚本),我添加了-threads 3
将 CPU 使用率保持在总体 75% 的选项。我之所以能够做到这一点,是因为我的处理器是四核的。
#!/bin/bash
# Name: Hauppauge 610 USB-Live 2 Analog Video Digitizer and Video Capture Device Conversion Script
# Author: jbrock
# Dependencies: VLC media player; ffmpeg, in Ubuntu you will need to add a ppa to install.
# License: GNU GPLv3 (http://www.gnu.de/documents/gpl-3.0.en.html)
# Usage: Digitize analog tapes to .ts format. Then convert to mp4, add metadata, and make sound work on left and right channels.
# Enter the name of the file.
echo -n "Enter file name: "
read archivo
# 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.
echo -n "Enter a description: "
read comentarios
# Encode video and stop after 122 minutes. The foreground option allows you to hit 'ctrl c,' and it will only stop this portion of the script.
timeout --foreground 122m cvlc v4l2:///dev/video0 :input-slave=alsa://hw:2,0 :v4l2-standard=NTSC :live-caching=300 --sout '#transcode{vcodec=mpeg2,acodec=mpga,ab=128,channels=2,samplerate=48000,fps=29.97,deinterlace}:std{access=file{no-overwrite},mux=ts,dst='$HOME/Videos/$archivo.ts'}'
# Convert to H.264 to compress further, add in the metadata comments, and make output from the left speaker to both speakers.
ffmpeg -i $HOME/Videos/$archivo.ts -c:v libx264 -preset medium -crf 22 -metadata comment="$comentarios" -af "pan=mono|c0=FL" $HOME/Videos/$archivo.mp4
# Show the 'finished' message.
notify-send "VIDEO FINISHED"
答案2
以下是一个例子ffmpeg
ffmpeg -f v4l2 -i /dev/video0 -f alsa -i default -t 02:02:00 \
-c:v libx264 -crf 23 -preset medium \
-c:a aac -strict experimental -ac 1 -b:a 96k \
-vf yadif,hqdn3d,format=yuv420p -movflags +faststart output.mp4
-t
表示持续时间。此示例将输出 2 小时 2 分钟。看FFmpeg Wiki:H.264 视频编码指南对于 x264
-crf
和-preset
信息。高清3D是一个降噪器。如果您的内容很嘈杂,它可能会很有用,但降噪过多会导致明显的模糊,并且此过滤器可能会很慢。
这格式过滤器将确保色度二次采样方案具有广泛的兼容性。否则,
ffmpeg
将假定您想要避免或最小化色度二次采样,并且输出可能无法由非基于 FFmpeg 的播放器(如 QuickTime)播放。-movflags +faststart
编码完成后会将部分数据从文件末尾移到开头。如果观众通过渐进式下载观看,这允许在文件完全下载之前开始播放。-metadata title="Title"
如果您愿意,可以添加其他元数据。
删除多余的垃圾
观看输出后,如果想修剪它,例如删除任何蓝色或黑色空白视频,您可以直接重新混合而无需重新编码。这将跳过前 10 秒,使输出长度达到 600 秒(10 分钟)。它可能不是帧精确的,但可能足够接近。
ffmpeg -ss 10 -i input -c copy -t 600 output
答案3
当我第一次获得这个硬件时,我也使用了 ffmpeg 方法的变体,但我发现 vlc 的默认转码在我的系统上比 ffmpeg 给出了更好的视觉效果,所以我摆弄了 vlc 命令行(cvlc)并找出了命令行来请求上面的 GUI 示例正在做什么。
cvlc v4l2:///dev/video1:standard=NTSC :input-slave=alsa://hw:3,0 :live-caching=1000 --sout "#transcode{vcodec=h264,acodec=mpga,vb=3000,fps=29.97,ab=128,audio-sync,channels=2,deinterlace}:file{dst=rec122015.mp4,no-overwrite}" --sout-keep