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上,从而导致步幅的渐进变化,这表现为水平对齐的逐渐变化

对流进行代码转换