0

我正在尝试使用 ffmpeg 捕获 h264 并将其发送到我的虚拟设备。我可以捕获 YUYV 并使用以下命令发送它:

ffmpeg -f video4linux2 -s 1920x1080 -i /dev/video0 -vcodec copy -f v4l2 /dev/video3

然后我尝试用这个来捕获 h264 而不是 YUYV:

ffmpeg -f video4linux2 -input_format h264 -s 1920x1080 -i /dev/video0 -vcodec copy -f v4l2 /dev/video3

然后ffmpeg返回错误语句:

V4l2 输出设备仅支持单个原始视频流

有人知道正确的命令或有什么问题吗?

4

1 回答 1

0

就像错误消息指出它需要单个原始视频流而不是 H.264 原始流:

if (s1->nb_streams != 1 ||
       s1->streams[0]->codec->codec_type != AVMEDIA_TYPE_VIDEO ||
       s1->streams[0]->codec->codec_id   != AV_CODEC_ID_RAWVIDEO) {
       av_log(s1, AV_LOG_ERROR,
               "V4L2 output device supports only a single raw video stream\n");
       return AVERROR(EINVAL);
}

GitHub 上的 FFmpeg/v4l2enc.c

您正在使用-input_format h264with -vcodec copy。对于输出格式,您必须将其更改为-vcodec rawvideo或完全省略它。v4l2您可能还需要设置正确的像素格式。

于 2015-05-02T09:22:45.163 回答