使用 quicktime-player+ffmpeg-录制视频教程-最后部署在私有云
最近,在录制一些视频教程,探索一下,做个记录。
1 要求
MacBook
quicktime-player
scp (上传用)
阿里云 ubuntu 1Cpu 2G内存 1M带宽(穷~)
octobercms (自己部署书的话需要)
2 使用quicktime-player 录制
最好有一个外接显示器,这样可以只录制外接显示器的屏幕。其中有一次录制完成后的声音失效了(将近一个小时~后期也可以配音,但成本太大了),不太清楚原因,所以录制的时候,分段录制,不要录制太长的。
使用起来很简单,录制完成后用到了几个脚本,对视频做个简单处理(程序员嘛,就不用专业的视频处理软件了),可以满足我的需求
ffmpeg 转换mp4
ffmpeg -i xxx.flv -b:v 640k xxx.mp4
ffmpeg 剪切并合并视频
录制完后可能需要去掉某一部分的内容
//剪切
ffmpeg -ss 00:00:00 -t 00:09:30 -i origin.mp4 -vcodec copy -acodec copy video1.mp4
ffmpeg -ss 00:09:32 -t 5 -i origin.mp4 -vcodec copy -acodec copy video2.mp4
//新建个list.txt 文件
cat list.txt
file ./video1.mp4
file ./video2.mp4
//合并
ffmpeg -f concat -safe 0 -i ./list.txt -c copy ./targer.mp4
- ffmpeg 去除某一部分的声音
有一部分的声音不想要了
ffmpeg -i origin.mp4 -af "volume=enable='between(t,7,11)':volume=0" -b:v 640k targit.mp4
ffmpeg + sox 去除视频中的噪音
录制视频过程中会有嗡嗡的风声,将其去除。
原理
1 分离视频和音频
2 噪音取样 (录制一个几秒没有人声的视频)
3 音频去噪,将音频和视频合并
#!/usr/bin/env bash
set -X
f=$1
filename=${f%.*}
#分离视频
ffmpeg -i $1 -an -qscale 0 out/$filename.an.mp4;
#分离音频
ffmpeg -i $1 -vn out/$filename.wav
#音频去燥 zaoyin.prof 是去燥样本,生成一次就可
sox out/$filename.wav out/$filename.clean.wav noisered zaoyin.prof 0.21
# 合并音频和视频
ffmpeg -i out/$filename.clean.wav -i out/$filename.an.mp4 out/$filename.clean.mp4
#以上是脚本
#运行
./xxx.sh 视频名字
#zaoyin.prof 这样生成
#以下是脚本
#!/usr/bin/env bash
#先录制没有人声的视频即噪音视频,取出噪音
set -X
f=$1
filename=${f%.*}
ffmpeg -i $1 -vn -ss 00:00:00 -t 00:00:01 $filename.wav
#取出噪音样本
sox $filename.wav -n noiseprof zaoyin.prof
#运行 最后生成 zaoyin.prof文件复制到将要去燥的视频的同级目录
./xxx.sh 噪音视频名字
3 使用scp上传
上传到服务器的根目录
scp xxxx.mp4 root@xxx:/xxxxx
4 访问
自己在之前的 oc-plugin-book 文档协作翻译插件 中扩展了 个video功能。该插件,可对文档中的任意章节进行录制,本来准备对octobercms以文档每一章节的方式录制所有视频,奈何工程量太大,遂放弃,只录制了一个基础教程
5 不足
视频链接都是可以公开的访问,没有摸清收费视频,是怎么搞得,有知道的同学,还请指教一下
本作品采用《CC 协议》,转载必须注明作者和本文链接