区块链技术博客
www.b2bchain.cn

修订.多媒体开发(2):录制视频求职学习资料

本文介绍了修订.多媒体开发(2):录制视频求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

上一节介绍了用ffplay来播放文件(或url),这里有一个概念,如果是播放已经存在的文件,那叫“回放”,也就是Playback(从流媒体的角度也叫点播),如果播放的是正在录制的数据(边录边播),那叫直播。

不管是回放还是直播,都需要有媒体数据,那这个媒体数据是怎么来的呢?从已有的文件编辑而来是一个办法,但更直接更原始的办法是录制。

录制,就是通过硬件设备,把声音或者图像保存到文件(或者推到文件)。

在FFmpeg程序集中,有一个程序叫作ffmpeg(小写),这个程序提供了录制的功能。在上一节小程介绍了ffplay的安装,而实际上ffplay依赖于FFmpeg,所以当ffplay安装后,那FFmpeg程序集也就安装上了,也就是已经可以使用ffmpeg程序。

本文介绍如何通过ffmpeg程序来实现声音、图像以及屏幕的录制。

(一)录制命令

对于图像,可以通过摄像头或者屏幕来录入,而对于声音则通过麦克风来录入。

因为我使用的是mac电脑,所以,有必要先查看一下mac电脑有没有录制的设备,也就是输入设备。

因为查看输入设备需要指定输入设备的格式类型,所以,先查看输入设备的格式类型

ffmpeg -devices

在我的电脑上,有这样的输出:

avfoundation    AVFoundation input device lavfi           Libavfilter virtual input device qtkit           QTKit input device

第一个类型,即avfoundation,为本机输入设备的格式类型,有了这个类型,就可以进一步查看输入设备了:

ffmpeg -list_devices true -f avfoundation -i “”

可以看到这样的信息:

[AVFoundation input device @ 0x7f97326002e0] AVFoundation video devices: [AVFoundation input device @ 0x7f97326002e0] [0] FaceTime HD Camera [AVFoundation input device @ 0x7f97326002e0] [1] Capture screen 0 [AVFoundation input device @ 0x7f97326002e0] AVFoundation audio devices: [AVFoundation input device @ 0x7f97326002e0] [0] Built-in Microphone

上面的信息可以知道,视频输入(video devices)有两个设备,设备0为摄像头,设备1为屏幕,而声音输入(audio devices)则只有设备0,也就是麦克风。

在知道设备号之后,就可以启用这个设备来录制,比如只打开摄像头进行录制(按’q’结束录制):

ffmpeg -f avfoundation -framerate 30 -i “0” -s 320×240 -vsync 2 -y cam.mp4

framerate是录制帧率,也就是一秒取多少帧,这些概念以后小程再详细介绍。-i “0”就是0号设备即摄像头,-s指定分辨率,比如可以设置一个在手机上较佳的使用分辨率。最后面的文件名,表示保存数据的文件。

但需要注意,参数并非可以随意改动的,因为参数的值跟输入设备有关,比如我的mac只支持帧率30,而且分辨率也只有几个可以选择,所以,参数不能乱写。如果出错了,那应该根据出错信息作出修正。而且,参数的顺序也不能乱写,否则是可能出错的!

另外,不同的ffmpeg的版本,对参数的要求也不一样,比如ffmpeg3.x需要指定framerate跟分辨率,而ffmpeg2.x则不需要,但出错后都有相应的信息提醒,你可以按指引来修正。

如果想同时录制到声音,那就同时打开摄像头跟麦克风,进行录制:

ffmpeg -f avfoundation -framerate 30 -i “0:0” -s 320×240 -vsync 2 -y cam2.mp4

0:0,前面为图像设备,后面为声音设备。

如果只录制声音,则:

ffmpeg -f avfoundation -i ":0" sound.aac  或者: ffmpeg -f avfoundation -i ":0" -acodec libmp3lame sound2.mp3

aac是音频的一种编码格式,我用的FFmpeg3.1.2会编码成aac格式(FFmpeg3.x内置aac编码),当然也可以指定编码成mp3,但要借助libmp3lame这个组件。你可以先忽略这些编码细节,只需要知道有这样一个功能就好。

我在这里给出一个只用摄像头录制的效果,那是小程家里的灯,通过mac电脑录制到的视频:
修订.多媒体开发(2):录制视频

四叶灯

如果只想录制屏幕,那只需要把-i “0”换成-i “1”,也就是指定从屏幕录制。

现在录制的命令有了,但是,作为一个追求便利的程序员,怎么才能快速而方便地进行启动录制呢?分明,我要再次使用之前介绍过的alfred跟python界面了。

(二)快速启动录制

先来写一个Python的界面,用来设置录制的各个参数,代码如下:
“`
from tkinter import *
import tkinter.messagebox as msgbox
import os
import threading

audiovalue = 0
widthvalue = “”
heightvalue = “”
recordsourcevalue = “”

def recordThreadFunc():
global audiovalue, widthvalue, heightvalue, recordsourcevalue
parms = recordsourcevalue.get()
if (audiovalue.get()==1):
parms = parms + “:0”
recordtemppath = “‘%s’/recordtemp.mp4” % os.getcwd()
recordpath = “‘%s’/record.mp4” % os.getcwd()

上一节介绍了用ffplay来播放文件(或url),这里有一个概念,如果是播放已经存在的文件,那叫“回放”,也就是Playback(从流媒体的角度也叫点播),如果播放的是正在录制的数据(边录边播),那叫直播。

不管是回放还是直播,都需要有媒体数据,那这个媒体数据是怎么来的呢?从已有的文件编辑而来是一个办法,但更直接更原始的办法是录制。

录制,就是通过硬件设备,把声音或者图像保存到文件(或者推到文件)。

在FFmpeg程序集中,有一个程序叫作ffmpeg(小写),这个程序提供了录制的功能。在上一节小程介绍了ffplay的安装,而实际上ffplay依赖于FFmpeg,所以当ffplay安装后,那FFmpeg程序集也就安装上了,也就是已经可以使用ffmpeg程序。

本文介绍如何通过ffmpeg程序来实现声音、图像以及屏幕的录制。

(一)录制命令

对于图像,可以通过摄像头或者屏幕来录入,而对于声音则通过麦克风来录入。

因为我使用的是mac电脑,所以,有必要先查看一下mac电脑有没有录制的设备,也就是输入设备。

因为查看输入设备需要指定输入设备的格式类型,所以,先查看输入设备的格式类型

ffmpeg -devices

在我的电脑上,有这样的输出:

avfoundation    AVFoundation input device lavfi           Libavfilter virtual input device qtkit           QTKit input device

第一个类型,即avfoundation,为本机输入设备的格式类型,有了这个类型,就可以进一步查看输入设备了:

ffmpeg -list_devices true -f avfoundation -i “”

可以看到这样的信息:

[AVFoundation input device @ 0x7f97326002e0] AVFoundation video devices: [AVFoundation input device @ 0x7f97326002e0] [0] FaceTime HD Camera [AVFoundation input device @ 0x7f97326002e0] [1] Capture screen 0 [AVFoundation input device @ 0x7f97326002e0] AVFoundation audio devices: [AVFoundation input device @ 0x7f97326002e0] [0] Built-in Microphone

上面的信息可以知道,视频输入(video devices)有两个设备,设备0为摄像头,设备1为屏幕,而声音输入(audio devices)则只有设备0,也就是麦克风。

在知道设备号之后,就可以启用这个设备来录制,比如只打开摄像头进行录制(按’q’结束录制):

ffmpeg -f avfoundation -framerate 30 -i “0” -s 320×240 -vsync 2 -y cam.mp4

framerate是录制帧率,也就是一秒取多少帧,这些概念以后小程再详细介绍。-i “0”就是0号设备即摄像头,-s指定分辨率,比如可以设置一个在手机上较佳的使用分辨率。最后面的文件名,表示保存数据的文件。

但需要注意,参数并非可以随意改动的,因为参数的值跟输入设备有关,比如我的mac只支持帧率30,而且分辨率也只有几个可以选择,所以,参数不能乱写。如果出错了,那应该根据出错信息作出修正。而且,参数的顺序也不能乱写,否则是可能出错的!

另外,不同的ffmpeg的版本,对参数的要求也不一样,比如ffmpeg3.x需要指定framerate跟分辨率,而ffmpeg2.x则不需要,但出错后都有相应的信息提醒,你可以按指引来修正。

如果想同时录制到声音,那就同时打开摄像头跟麦克风,进行录制:

ffmpeg -f avfoundation -framerate 30 -i “0:0” -s 320×240 -vsync 2 -y cam2.mp4

0:0,前面为图像设备,后面为声音设备。

如果只录制声音,则:

ffmpeg -f avfoundation -i ":0" sound.aac  或者: ffmpeg -f avfoundation -i ":0" -acodec libmp3lame sound2.mp3

aac是音频的一种编码格式,我用的FFmpeg3.1.2会编码成aac格式(FFmpeg3.x内置aac编码),当然也可以指定编码成mp3,但要借助libmp3lame这个组件。你可以先忽略这些编码细节,只需要知道有这样一个功能就好。

我在这里给出一个只用摄像头录制的效果,那是小程家里的灯,通过mac电脑录制到的视频:
修订.多媒体开发(2):录制视频

四叶灯

如果只想录制屏幕,那只需要把-i “0”换成-i “1”,也就是指定从屏幕录制。

现在录制的命令有了,但是,作为一个追求便利的程序员,怎么才能快速而方便地进行启动录制呢?分明,我要再次使用之前介绍过的alfred跟python界面了。

(二)快速启动录制

先来写一个Python的界面,用来设置录制的各个参数,代码如下:
“`
from tkinter import *
import tkinter.messagebox as msgbox
import os
import threading

audiovalue = 0
widthvalue = “”
heightvalue = “”
recordsourcevalue = “”

def recordThreadFunc():
global audiovalue, widthvalue, heightvalue, recordsourcevalue
parms = recordsourcevalue.get()
if (audiovalue.get()==1):
parms = parms + “:0”
recordtemppath = “‘%s’/recordtemp.mp4” % os.getcwd()
recordpath = “‘%s’/record.mp4” % os.getcwd()

上一节介绍了用ffplay来播放文件(或url),这里有一个概念,如果是播放已经存在的文件,那叫“回放”,也就是Playback(从流媒体的角度也叫点播),如果播放的是正在录制的数据(边录边播),那叫直播。

不管是回放还是直播,都需要有媒体数据,那这个媒体数据是怎么来的呢?从已有的文件编辑而来是一个办法,但更直接更原始的办法是录制。

录制,就是通过硬件设备,把声音或者图像保存到文件(或者推到文件)。

在FFmpeg程序集中,有一个程序叫作ffmpeg(小写),这个程序提供了录制的功能。在上一节小程介绍了ffplay的安装,而实际上ffplay依赖于FFmpeg,所以当ffplay安装后,那FFmpeg程序集也就安装上了,也就是已经可以使用ffmpeg程序。

本文介绍如何通过ffmpeg程序来实现声音、图像以及屏幕的录制。

(一)录制命令

对于图像,可以通过摄像头或者屏幕来录入,而对于声音则通过麦克风来录入。

因为我使用的是mac电脑,所以,有必要先查看一下mac电脑有没有录制的设备,也就是输入设备。

因为查看输入设备需要指定输入设备的格式类型,所以,先查看输入设备的格式类型

ffmpeg -devices

在我的电脑上,有这样的输出:

avfoundation    AVFoundation input device lavfi           Libavfilter virtual input device qtkit           QTKit input device

第一个类型,即avfoundation,为本机输入设备的格式类型,有了这个类型,就可以进一步查看输入设备了:

ffmpeg -list_devices true -f avfoundation -i “”

可以看到这样的信息:

[AVFoundation input device @ 0x7f97326002e0] AVFoundation video devices: [AVFoundation input device @ 0x7f97326002e0] [0] FaceTime HD Camera [AVFoundation input device @ 0x7f97326002e0] [1] Capture screen 0 [AVFoundation input device @ 0x7f97326002e0] AVFoundation audio devices: [AVFoundation input device @ 0x7f97326002e0] [0] Built-in Microphone

上面的信息可以知道,视频输入(video devices)有两个设备,设备0为摄像头,设备1为屏幕,而声音输入(audio devices)则只有设备0,也就是麦克风。

在知道设备号之后,就可以启用这个设备来录制,比如只打开摄像头进行录制(按’q’结束录制):

ffmpeg -f avfoundation -framerate 30 -i “0” -s 320×240 -vsync 2 -y cam.mp4

framerate是录制帧率,也就是一秒取多少帧,这些概念以后小程再详细介绍。-i “0”就是0号设备即摄像头,-s指定分辨率,比如可以设置一个在手机上较佳的使用分辨率。最后面的文件名,表示保存数据的文件。

但需要注意,参数并非可以随意改动的,因为参数的值跟输入设备有关,比如我的mac只支持帧率30,而且分辨率也只有几个可以选择,所以,参数不能乱写。如果出错了,那应该根据出错信息作出修正。而且,参数的顺序也不能乱写,否则是可能出错的!

另外,不同的ffmpeg的版本,对参数的要求也不一样,比如ffmpeg3.x需要指定framerate跟分辨率,而ffmpeg2.x则不需要,但出错后都有相应的信息提醒,你可以按指引来修正。

如果想同时录制到声音,那就同时打开摄像头跟麦克风,进行录制:

ffmpeg -f avfoundation -framerate 30 -i “0:0” -s 320×240 -vsync 2 -y cam2.mp4

0:0,前面为图像设备,后面为声音设备。

如果只录制声音,则:

ffmpeg -f avfoundation -i ":0" sound.aac  或者: ffmpeg -f avfoundation -i ":0" -acodec libmp3lame sound2.mp3

aac是音频的一种编码格式,我用的FFmpeg3.1.2会编码成aac格式(FFmpeg3.x内置aac编码),当然也可以指定编码成mp3,但要借助libmp3lame这个组件。你可以先忽略这些编码细节,只需要知道有这样一个功能就好。

我在这里给出一个只用摄像头录制的效果,那是小程家里的灯,通过mac电脑录制到的视频:
修订.多媒体开发(2):录制视频

四叶灯

如果只想录制屏幕,那只需要把-i “0”换成-i “1”,也就是指定从屏幕录制。

现在录制的命令有了,但是,作为一个追求便利的程序员,怎么才能快速而方便地进行启动录制呢?分明,我要再次使用之前介绍过的alfred跟python界面了。

(二)快速启动录制

先来写一个Python的界面,用来设置录制的各个参数,代码如下:
“`
from tkinter import *
import tkinter.messagebox as msgbox
import os
import threading

audiovalue = 0
widthvalue = “”
heightvalue = “”
recordsourcevalue = “”

def recordThreadFunc():
global audiovalue, widthvalue, heightvalue, recordsourcevalue
parms = recordsourcevalue.get()
if (audiovalue.get()==1):
parms = parms + “:0”
recordtemppath = “‘%s’/recordtemp.mp4” % os.getcwd()
recordpath = “‘%s’/record.mp4” % os.getcwd()

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 修订.多媒体开发(2):录制视频求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们