linux 树莓派 debian ffmpeg alsa v4l2 录制音频 视频 cannot open audio device 无法播放 声音模糊 画面卡顿 ALSA buffer xrun T

   2023-02-10 学习力0
核心提示:一个基本的命令:ffmpeg -f alsa -i device out.mp3其中,-f 表示设置格式,有format的意思,out.mp3前面可以加上 -f mp3, 因为带了mp3后缀,就省略了。alsa 表示alsa音频驱动程序的编码格式,它保证后面的音频流可以由alsa解码。具体可根据驱动程序选择。(a

一个基本的命令:

ffmpeg -f alsa -i <device> out.mp3

其中,

-f 表示设置格式,有format的意思,out.mp3前面可以加上 -f mp3, 因为带了mp3后缀,就省略了。

alsa 表示alsa音频驱动程序的编码格式,它保证后面的音频流可以由alsa解码。具体可根据驱动程序选择。(alsa主页https://www.alsa-project.org)

-i 表示从后面的 url 输入(音频流),url(Uniform Resource Locator,统一资源定位器)不仅可表示网址,还能表示文件路径。如果是麦克风设备,则是捕获麦克风采集的音频,需要设备在计算机中的url,比如 hw:1。

out.mp3输出文件路径(默认当前文件夹)。

如果出现 
cannot open audio device ... (No such file or directory)

是因为没检测到麦克风之类设备,可以先使用

arecord -l

(注意最后的l, 是字母l, 大写为L,意为list, 列表,即罗列出来)

从card 1到n罗列出了录音设备,我们需要的就是数字后面跟着的名字。不一定,只需要数字就够了。

比如选择了card 1,把ffmpeg的命令中的<device>换成 plug:front:1,或者hw:1也可以,

如果不用数字,用名字,就换成

plug:default:名字

plug:front:名字

具体请参考:

https://www.alsa-project.org/main/index.php/DeviceNames

 。

如果录制视频,一个基本的ffmpeg命令为:

ffmpeg -f v4l2 -i <device> out.mp4

v4l是video for linux的简写,

v4l2是v4l-utils的一种编码格式。具体可根据驱动程序选择。

v4l-utils是一个Linux的视频驱动程序集,(没有需安装)

具体的<device>可以用

v4l2-ctl --list-devices查看图形设备,

Linux把设备当成文件对待,所以摄像头设备存放于/dev/*,一般是/dev/video0

把ffmpeg命令中的<device>替换成/dev/video0就好。

 

同时录制音频和视频,输出一个有声音的视频:

ffmpeg -f v4l2 -i /dev/video0 -f alsa -i hw:1 out.mp4

可以看到有两个 -f 了,分别是音频的和视频的,输出文件还是一个。

如果无法播放,根据http://trac.ffmpeg.org/wiki/Errors 说明:


 

No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.

Your input and output may vary in supported pixel formats. ffmpeg will attempt to choose the "best" supported pixel format for your encoder. For libx264 it may use a pixel format that is not decodable by many non-FFmpeg based media players.

Adding -pix_fmt yuv420p or -vf format=yuv420p will ensure compatibility with dumb players.

 (本文链接https://www.cnblogs.com/oler/p/13437701.html)

以上, 意思是把pixel_format(像素格式)改成yuv420p以兼容一些傻瓜播放器。提供两个选项:-pix_fmt yuv420p 或 -vf format=yuv420p,我尝试了一下,命令如下:

ffmpeg -f v4l2 -i /dev/video0 -f alsa -i hw:1 -pix_fmt yuv420p out.mp4

在out.mp4 前面加了pix_fmt选项,指定为yuv420p,就可以用windows自带播放器播放了,也能嵌入网页播放了。其他pix_fmt格式可用ffmpeg -pix_fmts查询。

 

如果录出来的视频声音或画面卡顿不清,并且输出信息有ALSA buffer xrun,还有Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)

从英文意思就可以看出,是因为thread_queue_size不够,看它前面【】里面@的是alsa还是v4l2, 在相应的 -f 前面加上 -thread_queue_size 再加个数值就好了,从8,16,32,64翻倍加(翻倍加比较快一点),直到没有上述提示就好了。我一直把视频加到了128,音频加到了4096,才没有了错误提示,视频中的音质也好了很多:

ffmpeg -thread_queue_size 128 -f v4l2 -i /dev/video0 -thread_queue_size 4096 -f alsa -i hw:1 -pix_fmt yuv420p out.mp4

 不过鉴于树莓派的性能较低,应该设置视频的码率,清晰度,音频采样率低一点,而不是盲目加塞。

其他的参数设置请参考ffmpeg的命令详解,这里提供的命令仅仅是最基本的。

 

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 【树莓派】树莓派(Debian)- root用户无法使用SSH登录
    【树莓派】树莓派(Debian)- root用户无法使用
    在树莓派4B上安装了最新的Debian64位系统默认账户密码:pi/raspberryroot/    ------无密码(通过sudo passwd root修改root密码后)问题root修改密码后还是无法登录解决这个系统默认不允许root使用SSH登录登录root用户su 打开配置文件 nano /etc/ssh/sshd_
    03-08
  • windows10环境下安装Linux子系统---debian
    windows10环境下安装Linux子系统---debian
    windows10环境下安装Linux子系统---debian一、前提1、在控制面板-程序-启用与关闭Windows功能中,勾选“适用于Linux的Windows子系统”  2、首先需要创建一个文件夹,用来存放子系统,在需要的位置创建即可,文件夹名任意3、手动下载Windows子系统发行版包,
    03-08
  • Debian 环境安装新版 nginx
    Debian 环境安装新版 nginx
    在 Debian 系统中,我们可以通过 apt-get 安装系统自带的 nginx,这样安装的 nginx 版本略旧。Nginx 官网提供了一些编辑绎好的 deb 安装包,我们只需更新安装源,就可以通过 apt-get 来安装最新的稳定版 Nginx 了。 加载安装源并导入key$ echo deb http://ng
    03-08
  • 使用apt-mirror建立本地debian仓库源
     先介绍一下环境:主机:Win7虚拟机:VirtualBox + Debian7由于软件源的体积比较大,所以我又给虚拟机添加了一块50GB的虚拟硬盘(给虚拟机添加虚拟硬盘的方法参见:http://www.cnblogs.com/pengdonglin137/p/3366589.html , 其中介绍了如何在Vmware和Virtua
    03-08
  • Debian其实有提供附带了各种桌面的安装镜像
    我之前试着装Debian,但它的安装程序我感觉很难用,装上去了之后也有许许多多的问题,比如中文不显示。今天我发现带Live CD的Debian镜像有带了各个桌面的版本,于是我就试着下载KDE版本的Debian。由于我房间的WLAN质量不佳,用500kb/s的速度下了几个小时,那
    02-10
  • Debian镜像使用帮助 Debian镜像下载
    Debian镜像使用帮助 Debian镜像下载
    http://mirrors.163.com/.help/debian.html
    02-10
  • Debian 11 安装Nvidia闭源驱动
    目录通过APT安装Nvidia驱动为Nvidia驱动注册Secure Boot参考文档本人的系统是Debian11,最近一阵子在捣鼓用apt安装英伟达的闭源驱动,同时支持Secure Boot,查阅了Debian Wiki之类的资料之后,在这里整理一下。通过APT安装Nvidia驱动首先,需要确保你的Debian
    02-10
  • Debian时区和时间自动同步
    时区和时间自动同步(1)时间设置及其同步#date  -s 07/26/2005 //2005年7月26日    //修改系统日期时间为当前正确时间#date -s 11:12:00     //11点12分0秒#vim /etc/default/rcS  //设定 BIOS 时间使用 UTC 时区将选项 UTC 的值设定成 yes
    02-10
  • debian/ubuntu系统vi无法删除字符的解决办法
    之前在 Linux 下操作,一直使用的是 Centos 系统,使用 vi 编辑命令一直很顺畅。 最近,入手了一台 debian 操作系统的 vps。在操作 vi 命令时,发现当输入 i 要进行文件编辑时,上下左右的光标无法移动,屏幕上总会出现字符,而且 backspace 只能后退,无法
    02-10
  • Debian安装JAVA环境 debian安装jdk11
     http://blog.csdn.net/gongora/archive/2009/05/15/4190469.aspxDebian官方没有维护专门的Java软件包,所以不能直接用apt-get工具来安装。在Debian系统中要安装Java,有两种方式,一种是用传统方式;一种是Debian方式。1. 传统方式在 sun 下载了最新的 JDK
    02-10
点击排行