Ffmpeg 当从摄像头捕获原始视频并通过管道传输到ffplay时,视频会横向移动
我正在尝试使用Ffmpeg 当从摄像头捕获原始视频并通过管道传输到ffplay时,视频会横向移动,ffmpeg,avfoundation,Ffmpeg,Avfoundation,我正在尝试使用ffmpeg(macOS 10.12)从相机捕获视频,并使用rawvideo和-v copy选项将其导入ffplay: ffmpeg -f avfoundation -pixel_format 0rgb -framerate 25 -video_size 1280x720 -i "0" -map 0:v -c copy -f rawvideo - | ffplay -f rawvideo -video_size 1280x720 -pixel_format 0rgb -i - 视
ffmpeg
(macOS 10.12)从相机捕获视频,并使用rawvideo
和-v copy
选项将其导入ffplay
:
ffmpeg -f avfoundation -pixel_format 0rgb -framerate 25 -video_size 1280x720 -i "0" -map 0:v -c copy -f rawvideo - | ffplay -f rawvideo -video_size 1280x720 -pixel_format 0rgb -i -
视频捕捉得很好,但是,它不断地向侧面移动(见所附的截图)。这里可能有什么问题
更新完整ffmpeg
日志输出:
$ ffmpeg -f avfoundation -pixel_format 0rgb -framerate 25 -video_size 1280x720 -i "0" -map 0:v -c copy -f rawvideo - | ffplay -f rawvideo -video_size 1280x720 -pixel_format 0rgb -i -
ffmpeg version 4.0.2ffplay version 4.0.2 Copyright © 2003-2018 the FFmpeg developers Copyright © 2000-2018 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0.2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-ffplay --enable-libfontconfig --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0.2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-ffplay --enable-libfontconfig --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
libavutil 56. 14.100 / 56. 14.100
libavutil 56. 14.100 / 56. 14.100
libavcodec 58. 18.100 / 58. 18.100
libavformat 58. 12.100 / 58. 12.100
libavcodec 58. 18.100 / 58. 18.100
libavdevice 58. 3.100 / 58. 3.100
libavformat 58. 12.100 / 58. 12.100
libavfilter 7. 16.100 / 7. 16.100
libavdevice 58. 3.100 / 58. 3.100
libavresample 4. 0. 0 / 4. 0. 0
libavfilter 7. 16.100 / 7. 16.100
libswscale 5. 1.100 / 5. 1.100
libswresample 3. 1.100 / 3. 1.100
libavresample 4. 0. 0 / 4. 0. 0
libpostproc 55. 1.100 / 55. 1.100
libswscale 5. 1.100 / 5. 1.100
libswresample 3. 1.100 / 3. 1.100
libpostproc 55. 1.100 / 55. 1.100
2018-09-20 09:33:28.013 ffmpeg[45781:16452887] Error loading /Library/Audio/Plug-Ins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn: dlopen(/Library/Audio/Plug-Ins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn, 262): no suitable image found. Did find:
/Library/Audio/Plug-Ins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn: mach-o, but wrong architecture
/Library/Audio/Plug-Ins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn: mach-o, but wrong architecture
2018-09-20 09:33:28.013 ffmpeg[45781:16452887] Cannot find function pointer New_SHP_PlugIn for factory 834FC054-C1CC-11D6-BD01-00039315CD46 in CFBundle/CFPlugIn 0x7fe63b506d00 </Library/Audio/Plug-Ins/HAL/SeratoVirtualAudioPlugIn.plugin> (bundle, not loaded)
2018-09-20 09:33:28.069 ffplay[45782:16452888] Error loading /Library/Audio/Plug-Ins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn: dlopen(/Library/Audio/Plug-Ins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn, 262): no suitable image found. Did find:
/Library/Audio/Plug-Ins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn: mach-o, but wrong architecture
/Library/Audio/Plug-Ins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn: mach-o, but wrong architecture
2018-09-20 09:33:28.069 ffplay[45782:16452888] Cannot find function pointer New_SHP_PlugIn for factory 834FC054-C1CC-11D6-BD01-00039315CD46 in CFBundle/CFPlugIn 0x7f93f3c13020 </Library/Audio/Plug-Ins/HAL/SeratoVirtualAudioPlugIn.plugin> (bundle, not loaded)
[avfoundation @ 0x7fe63c000000] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, avfoundation, from '0':
Duration: N/A, start: 1054.178167, bitrate: N/A
Stream #0:0: Video: rawvideo ([0]RGB / 0x42475200), 0rgb, 1280x720, 1000k tbr, 1000k tbn, 1000k tbc
Output #0, rawvideo, to 'pipe:': 0KB vq= 0KB sq= 0B f=0/0
Metadata:
encoder : Lavf58.12.100
Stream #0:0: Video: rawvideo ([0]RGB / 0x42475200), 0rgb, 1280x720, q=2-31, 1000k tbr, 1000k tbn, 1000k tbc
Stream mapping:
Stream #0:0 -> #0:0 ©
Press [q] to stop, [?] for help
Input #0, rawvideo, from 'pipe:':
Duration: N/A, start: 0.000000, bitrate: 737280 kb/s
Stream #0:0: Video: rawvideo ([0]RGB / 0x42475200), 0rgb, 1280x720, 737280 kb/s, 25 tbr, 25 tbn, 25 tbc
frame= 16 fps=0.0 q=-1.0 size= 57600kB time=00:00:00.60 bitrate=786437.5kbits/s speed=1.frame= 29 fps= 28 q=-1.0 size= 104401kB time=00:00:01.12 bitrate=763617.4kbits/s speed=1.frame= 42 fps= 27 q=-1.0 size= 151201kB time=00:00:01.64 bitrate=755268.5kbits/s speed=1.frame= 55 fps= 26 q=-1.0 size= 198002kB time=00:00:02.16 bitrate=750939.5kbits/s speed=1.frame= 68 fps= 26 q=-1.0 size= 244802kB time=00:00:02.68 bitrate=748290.4kbits/s speed=1.av_interleaved_write_frame(): Broken pipe= 0KB sq= 0B f=0/0
Error writing trailer of pipe:: Broken pipe
frame= 69 fps= 26 q=-1.0 Lsize= 247650kB time=00:00:02.72 bitrate=745863.6kbits/s speed=1.01x
video:248402kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Exiting normally, received signal 2.
$ffmpeg-f avfoundation-pixel_格式0rgb-framerate 25-video_大小1280x720-i“0”-map 0:v-c copy-f rawvideo-f ffplay-f rawvideo-video_大小1280x720-pixel_格式0rgb-i-
ffmpeg版本4.0.2FF播放版本4.0.2版权所有©2003-2018 ffmpeg开发者版权所有©2000-2018 ffmpeg开发者
使用Apple LLVM 9.0.0版(clang-900.0.39.2)构建
使用Apple LLVM 9.0.0版(clang-900.0.39.2)构建
配置:--prefix=/usr/local/cillar/ffmpeg/4.0.2--启用共享--启用pthreads--启用-version3--启用硬编码表--启用avresample--cc=clang--主机cflags=--主机ldflags=--启用gpl--启用ffplay--启用libfontconfig--启用libfreetype--启用-libmp3lame--启用-libx264--启用libxvid--启用opencl--启用videotoolbox--禁用lzma
配置:--prefix=/usr/local/cillar/ffmpeg/4.0.2--启用共享--启用pthreads--启用-version3--启用硬编码表--启用avresample--cc=clang--主机cflags=--主机ldflags=--启用gpl--启用ffplay--启用libfontconfig--启用libfreetype--启用-libmp3lame--启用-libx264--启用libxvid--启用opencl--启用videotoolbox--禁用lzma
libavutil 56。14.100 / 56. 14.100
libavutil 56。14.100 / 56. 14.100
libav编解码器58。18.100 / 58. 18.100
libav58格式。12.100 / 58. 12.100
libav编解码器58。18.100 / 58. 18.100
libav58设备。3.100 / 58. 3.100
libav58格式。12.100 / 58. 12.100
libav7。16.100 / 7. 16.100
libav58设备。3.100 / 58. 3.100
libavresample4。00 / 4. 00
libav7。16.100 / 7. 16.100
Libsw5。1.100 / 5. 1.100
libswresample 3。1.100 / 3. 1.100
libavresample4。00 / 4. 00
Libroc 55。1.100 / 55. 1.100
Libsw5。1.100 / 5. 1.100
libswresample 3。1.100 / 3. 1.100
Libroc 55。1.100 / 55. 1.100
2018-09-20 09:33:28.013 ffmpeg[45781:16452887]加载错误/Library/Audio/plugins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn:dlopen(/Library/Audio/plugins/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn,262):找不到合适的图像。确实发现:
/Library/Audio/plugins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn:mach-o,但架构错误
/Library/Audio/plugins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn:mach-o,但架构错误
2018-09-20 09:33:28.013 ffmpeg[45781:16452887]在CFBundle/CFPlugIn 0x7fe63b506d00(捆绑,未加载)中找不到工厂834FC054-C1CC-11D6-BD01-00039315CD46的函数指针New_SHP_插件
2018-09-20 09:33:28.069 ffplay[45782:16452888]加载错误/Library/Audio/plugins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn:dlopen(/Library/Audio/plugins/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn,262):找不到合适的图像。确实发现:
/Library/Audio/plugins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn:mach-o,但架构错误
/Library/Audio/plugins/HAL/SeratoVirtualAudioPlugIn.plugin/Contents/MacOS/SeratoVirtualAudioPlugIn:mach-o,但架构错误
2018-09-20 09:33:28.069 ffplay[45782:16452888]在Cbundle/CFPlugIn 0x7f93f3c13020(捆绑,未加载)中找不到工厂834FC054-C1CC-11D6-BD01-00039315CD46的函数指针New_SHP__插件
[avfoundation@0x7fe63c000000]流#0:没有足够的帧来估计速率;考虑增加概率
输入#0,avfoundation,来自“0”:
持续时间:不适用,起始时间:1054.178167,比特率:不适用
流#0:0:视频:原始视频([0]RGB/0x42475200),0rgb,1280x720,10000K tbr,10000K tbn,10000K tbc
输出#0,原始视频,到“管道:”:0KB vq=0KB sq=0B f=0/0
元数据:
编码器:Lavf58.12.100
流#0:0:视频:原始视频([0]RGB/0x42475200),0rgb,1280x720,q=2-31,1000k tbr,10000K tbn,10000K tbc
流映射:
溪流#0:0->#0:0©
按[q]停止,按[?]获取帮助
输入#0,rawvideo,来自“管道:”:
持续时间:不适用,开始时间:0.000000,比特率:737280 kb/s
流#0:0:视频:原始视频([0]RGB/0x42475200),0rgb,1280x720,737280 kb/s,25 tbr,25 tbn,25 tbc
帧=16 fps=0.0 q=-1.0大小=57600kB时间=00:00:00.60比特率=786437.5kbit/s速度=1帧=29 fps=28 q=-1.0大小=104401kB时间=00:00:01.12比特率=763617.4kbits速度=1帧=42 fps=27 q=-1.0大小=151201kB时间=00:00:01.64比特率=755268.5kbit/s速度=1帧=55 fps=26 q=-1.0大小=198002kB时间=16:00:00比特率=750939.5kbits/s速度=1。帧=68 fps=26 q=-1.0大小=244802kB时间=00:00:02.68比特率=748290.4kbits/s速度=1。av_交错_写入_帧():断管=0KB sq=0bF=0/0
写入管道的尾部时出错::管道断裂
帧=69 fps=26 q=-1.0 Lsize=247650kB时间=00:00:02.72比特率=745863.6kbits/s速度=1.01x
视频:248402kB音频:0kB字幕:0kB其他流:0kB全局头:0kB muxing开销:未知
正常退出,收到信号2。
看起来像是对齐/填充的问题。由于ffplay似乎没有这方面的选项,请尝试使用不同的较大视频宽度进行ffplay,而不是像1282或更大的1280。看起来avfoundation设备正在将额外的32字节填充到每个packe上,从而导致步幅的渐进变化,这表现为水平对齐的逐渐变化
对流进行代码转换