〖Linux〗录像桌面视频同时录音

1. 安装依赖的包

sudo apt-get install -y ffmpeg oss-compat alsa-oss

2. 录制桌面视频并录音

aoss ffmpeg -f oss -i /dev/dsp -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg

3. 使用脚本在后台进行录像

#!/bin/bash - 
#===============================================================================
#
#          FILE: recordscreen.sh
# 
#         USAGE: ./recordscreen.sh 
# 
#   DESCRIPTION: 
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: linkscue (scue), linkscue@gmail.com
#  ORGANIZATION: 
#       CREATED: 2013年08月17日 18时28分01秒 HKT
#      REVISION:  ---
#===============================================================================

#-------------------------------------------------------------------------------
#  使用举例:
#
#  1. 录制无声桌面视频
#     ./recordscreen.sh
#     结束无声桌面视频录制
#     ./recordscreen.sh off
#
#  2. 录制有声桌面视频
#     ./recordsrceen.sh a
#     结束有声桌面视频录制
#     ./recordscreen.sh a off
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
#  结束视频录像函数
#-------------------------------------------------------------------------------

kill_process(){
    kill $(pidof ffmpeg)
}

#-------------------------------------------------------------------------------
#  -f oos -i /dev/dsp                           # 录音
#  -f x11grab                                   # 输入类型为x11grab
#  -s wxga                                      # 大小是wxga(1366x768)
#  -r 25                                        # 帧频是25(25张图片/秒)
#  -i :0.0                                      # 设置输入源,本地X默认在0.0
#  -sameq                                       # 与输入流一样的质量
#  -vcodec msmpeg4v2                            # 压缩输出的avi视频格式
#-------------------------------------------------------------------------------

#默认录像不带声音,当有传参为a时录音
if [[ "$1" == "a" ]]; then
    shift                                       # 输入参数向左移 $2 --> $1
    cmd="ffmpeg -f oss -i /dev/dsp -f x11grab -s wxga -r 25 -i :0.0 -sameq -vcodec msmpeg4v2"
    acmd="aoss $cmd"
    if [[ "$1" != "" ]]; then
        kill_process
    else
        # 使用 nohup 使此命令忽略终端的退出(终端终止此命令依然运行)
        nohup $acmd /tmp/out_$(date +%F_%X).avi >/dev/null 2>&1 &
    fi
else
    cmd="ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq -vcodec msmpeg4v2"
    if [[ "$1" != "" ]]; then
        kill_process
    else
        # 使用 nohup 使此命令忽略终端的退出(终端终止此命令依然运行)
        nohup $cmd /tmp/out_$(date +%F_%X).avi >/dev/null 2>&1 &
    fi
fi

 

posted @ 2013-08-24 10:36  scue  阅读(691)  评论(0编辑  收藏  举报