ffmpeg - 使用 ffmpeg 将 Logitech C920 视频传输到两个输出:重新编码为 RTMP 流和硬件编码为文件
问题描述
我正在尝试ffmpeg
接受来自 Logitech C920 的视频并将其广播到 RTMP 流(例如 Twitch)。但有一个转折点:我还想保存原始的 1080p 硬件编码视频文件。
所以我想做这两件事:
- 将输入重新编码为 852x480 分辨率并上传到 1500 比特率的 RTMP url
- 将原始输入保存到文件而不重新编码(C920 使用 h.264 编解码器进行硬件编码)
我尝试使用以下方法将视频保存到文件而不重新编码:
ffmpeg -s 1920x1080 -framerate 30 -pixel_format uyvy422 -vcodec h264 -f avfoundation -i 'HD Pro' -copyinkf -vcodec copy out.mp4
这似乎几乎可以工作。网络摄像头灯亮起,运行几秒钟会产生一个巨大的文件(1GB 左右)。但是,我似乎无法使用 VLC 打开文件。我确实看到了来自 ffmpeg 的警告:
[AVBSFContext @ 0x7fbd4fc3e9c0] No start code is found.
HD Pro: could not find codec parameters
我在使用 ffmpeg 4.1 的 Mac 上。
编辑:
ffmpeg 生成的文件似乎不是 h264 编码的,而是原始像素数据。我开始认为无法使用 Mac 将网络摄像头设置为 h264 模式(大多数其他情况在 Linux 中使用v4l2
.
对于任何回答这个问题的人,我都会对涉及 Linux 的解决方案感到满意。特别是如果我可以使用可启动的 live USB。
解决方案
推荐阅读
- javascript - 日期为 1700-01-01 或更早的 JavaScript 日期错误?
- javascript - 找出哪些委托事件附加到对象集合
- sql - 在 Firebird 中使用多个 NOT IN
- memory - 如何根据给定的图表计算卷积神经网络所需的内存?
- python - 如何使用 Python 创建线程以在后台运行计划
- android - 我可以创建一个包含仅资产包的 Google Play 商店应用吗?
- mysql - 为什么我能够在 mysql 中多次成功获得锁?
- python - 处理请求响应
- python - bash 到 python 调用 wlst 并传递参数
- php - 与 Laravel Socialite 的多次 Google 誓言