linux - FFMPEG + V4L2 选项
问题描述
我正在寻找一种将 v4l2-ctl 的参数集成到 ffmpeg 上的方法 ffmpeg 覆盖 v4l2-ctl 的问题,我需要特定参数有 v4l2-ctl :( 我的 v4l2-ctl 命令是:
v4l2-ctl -v width=640,height=480,pixelformat=4 -p 30 -c h264_profile=0,repeat_sequence_header=1
我想使用这些参数直接使用 FFMPEG 进行流式传输,我该怎么办?
谢谢 !
解决方案
您可以告诉 ffmpeg 使用 video4linux2 (v4l2) 作为输入“设备”(它像解复用器一样对待)。根据您的设备,v4l2 可以提供多种不同格式的视频(例如,像 yuv420p 这样的原始视频,或者像 h264 这样的压缩视频,可能通过硬件加速器)。看起来您正在尝试使用 h264,因此您可能正在寻找以下方面的内容:
ffmpeg -f video4linux2 -input_format h264 -video_size 640x480 -framerate 30 -i /dev/video0 out.h264
ffmpeg 将告诉 v4l2 提供具有给定帧速率和大小的 h264 编码流作为 ffmpeg 的输入,ffmpeg 会将流复制到文件out.h264
中。您需要根据用例指定输出格式和选项。
注意:这假设您的输入设备是
/dev/video0
. 您可以使用v4l2-ctl --list-devices
查看哪些设备可用。
从 v4l2 的ffmpeg 文档中不清楚如何为 v4l2 提供额外的标志(例如h264_profile
and repeat_sequence_header
)。ffmpeg 确实提供了多种编码选项,但这些选项可能需要您指定 -input_format
来自 v4l2 的原始视频并改用 ffmpeg 的 x264 编码器,这可能比硬件编码器慢得多。
免责声明:这个问题可能属于超级用户或视频制作而不是堆栈溢出,因为它只处理命令行工具。
推荐阅读
- java - 一段时间后,HTTP 摘要身份验证失败并出现“400 Bad Request”
- java - 会话已过期
- jmespath - 如何仅选择包含具有超过 N 个元素的数组的对象
- javascript - Angular 5, rxjs- 等待 observable 在运行另一个进程之前仅在运行过程中完成
- mysql - 如何使用连接表而不使用 group by 获取唯一记录
- ios - 应用加速器中的 Firebase 和 Google 登录模块冲突
- java - java - 遇到空字符串时,BufferedReader readLine 停止读取
- html - 使用 flexbox 居中项目符号列表
- c# - 如何在 3 个不同的数组元素上使用异步
- symfony - 命令创建的问题