如何使用ffmpeg访问来自网络摄像头的压缩数据流

4

我希望使用ffmpeg直播网络摄像头。我的Logitech c920网络摄像头有原始和压缩数据的输出流。命令ffmpeg -f v4l2 -list_formats all -i /dev/video1将产生以下控制台输出:

[video4linux2,v4l2 @ 0x26709e0] Raw       :   yuyv422 :     YUV 4:2:2 (YUYV) : 640x480 160x90 160x120 176x144 320x180 320x240 352x288 432x240 640x360 800x448 800x600 864x480 960x720 1024x576 1280x720 1600x896 1920x1080 2304x1296 2304x1536
[video4linux2,v4l2 @ 0x26709e0] Compressed:      h264 :                H.264 : 640x480 160x90 160x120 176x144 320x180 320x240 352x288 432x240 640x360 800x448 800x600 864x480 960x720 1024x576 1280x720 1600x896 1920x1080
[video4linux2,v4l2 @ 0x26709e0] Compressed:     mjpeg :                MJPEG : 640x480 160x90 160x120 176x144 320x180 320x240 352x288 432x240 640x360 800x448 800x600 864x480 960x720 1024x576 1280x720 1600x896 1920x1080

我想要将压缩的h264图像复制并发送到ffserver。
当我使用以下命令:ffmpeg -r 25 -f v4l2 -i /dev/video0 -c:v libx264 -b:v 2500k http://localhost:8090/feed1.ffm时,程序会获取原始数据并用h264编解码器进行转码。
当我将-c:v libx264更改为-c:v copy时,我会收到错误提示,因为ffmpeg尝试复制原始相机图像。
如何访问h264压缩图像并将其发送到服务器?

我在想能不能问一下?你是如何将捕获的视频即输出上传到服务器的呢?假设我连接了一个USB摄像头到我的电脑上,我想要直播。所以我需要将视频上传到服务器,然后为用户进行实时广播。你是如何处理这个问题的,请帮忙解答一下吗? - A Sahra
1
我不需要使用流在线上进行操作。我需要在同一WiFi内实现功能,因此在执行命令时使用了“localhost”。我使用了这个答案中描述的方法。请注意,ffserver将在下一个版本中被删除。我建议您阅读ffmpeg流媒体指南 - grzebyk
1个回答

2

FFmpeg有一个input_format选项,用于指定输入设备的格式。尝试将-input_format h264作为输入选项添加到您的命令中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接