0

h264 を ffmpeg でキャプチャして仮想デバイスに送信しようとしています。YUYV をキャプチャして、次のコマンドで送信できます。

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

次に、YUYV の代わりに h264 をキャプチャするためにこれを試しました。

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 h264してい-vcodec copyます。出力形式では、これを に変更する-vcodec rawvideoか、完全に省略する必要があります。v4l2正しいピクセル形式を設定する必要がある場合もあります。

于 2015-05-02T09:22:45.163 に答える