windows下ffmpeg音视频采集并推流
目录
ffmpeg -y -f vfwcap -i list
ffmpeg -y -f vfwcap -r 25 -i 0 out.mp4
ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 out.avi
ffmpeg -f v4l2 -r 25 -s 640x480 -i /dev/video0 out.avi
ffmpeg -f dshow -i video="Integrated Camera" out.mp4
ffmpeg -f dshow -s 1280x720 -r 15 -vcodec mjpeg -i video=“Integrated Camera” out.avi dshow编译方面参考 :
【编译遇到问题,就自己解决吧,不是很麻烦。】 ffplay -f dshow video=“USB video capture 0” 【交代后期遇到的问题,以及提示】 『用ffmpeg推音视频流(音视频皆用dshow为输入,视频编码用X264,以flv格式输出)的延迟问题,据我所看,有两点如下:』 1. 音频采样的带来的延迟,这个延迟很小。它是如何影响到延迟大小的呢?这样的:dshow中,音视频源filter的capture pin,数据包buffer大小是可设置的,假设它默认为1秒的数据,也就是每一秒才回调并向外投递出一包数据,此时(假设视频fps=15)编码器得到了15帧,在format的interleave(音视频包交错存放)处理里ff_interleave_packet_per_dts时,就缓存了接近1秒,即造成等量延迟。 如何修改capture pin呢?参考
如下: [cpp]
1. dshow_cycle_formats() 2. { 3. …… 4. IAMBufferNegotiation *negotiate = NULL; 5. ALLOCATOR_PROPERTIES prop = {0}; 6. if (devtype == AudioDevice) 7. if (IPin_QueryInterface(pin, &, ( void **) &negotiate) != S_OK) 8. return ; //IID_IAMBufferNegotiation 9. …… 10. if (devtype == AudioDevice) 11. { 12. { 13. prop.cbAlign = 1; 14. prop.cBuffers = 2; 15. prop.cbBuffer = ??; 16. } 17. if (IAMBufferNegotiation_SuggestAllocatorProperties(negotiate, &prop) != S_OK) 18. goto next; 19. } 20. …… 21. if (devtype == AudioDevice) 22. IAMBufferNegotiation_Release(negotiate); 23. …… 24. } 至于该buffer设置多大,可以结合,音频编码的frame_size、interleave是单帧视频对应多少音频包,来考虑 2. X264编码带来的延迟,在配置参数的时候,先参考下这篇文章: