首页 > 解决方案 > 使用 ffmpeg 将 Logitech C920 视频传输到两个输出:重新编码为 RTMP 流和硬件编码为文件

问题描述

我正在尝试ffmpeg接受来自 Logitech C920 的视频并将其广播到 RTMP 流(例如 Twitch)。但有一个转折点:我还想保存原始的 1080p 硬件编码视频文件。

所以我想做这两件事:

  1. 将输入重新编码为 852x480 分辨率并上传到 1500 比特率的 RTMP url
  2. 将原始输入保存到文件而不重新编码(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。

标签: ffmpegavfoundationvlcrtmpv4l2

解决方案


推荐阅读