Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用ffmpeg使用isight录制视频_Macos_Video_Ffmpeg_Ffserver_Isight - Fatal编程技术网

Macos 使用ffmpeg使用isight录制视频

Macos 使用ffmpeg使用isight录制视频,macos,video,ffmpeg,ffserver,isight,Macos,Video,Ffmpeg,Ffserver,Isight,因此,要在linux上使用ffmpeg录制网络摄像头视频,您可以使用以下内容 ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 out.avi 但在mac上这不起作用,所以我想知道如何在mac上用isight和ffmpeg录制 我已经研究过了,很多人说这是不可能的,但这些帖子大部分都很老了,所以我想知道从那时起它是否发生了变化。在Linux上,“ffmpeg”使用了“捕获API”,在Windows上有一个名为“video4windows”的版本。

因此,要在linux上使用ffmpeg录制网络摄像头视频,您可以使用以下内容

ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 out.avi
但在mac上这不起作用,所以我想知道如何在mac上用isight和ffmpeg录制


我已经研究过了,很多人说这是不可能的,但这些帖子大部分都很老了,所以我想知道从那时起它是否发生了变化。

在Linux上,“ffmpeg”使用了“捕获API”,在Windows上有一个名为“video4windows”的版本。不幸的是,没有人为Mac制作过一个版本


幸运的是,您仍然可以使用此免费软件从命令行录制iSight摄像头的视频:


下面是它的用法示例

  • 步骤1)查看存在哪些视频硬件
wacaw-L

  • 步骤2)将视频捕获到文件中。在我的MacBook上,它将我的内部iSight摄像头报告为ID为“2”的USB设备,输入ID为“0”。下面是我的MacBook的外观。您的计算机的“视频设备”可能不同,您也可以省略“--video input 0”部分:
wacaw——视频——视频设备2——视频输入0——持续时间3——VGA~/MyMovie


希望这有帮助

更新:当前(2014年8月)版本的ffmpeg支持QTKit和AVKit框架:

ffmpeg -f qtkit -video_device_index 0 -i "" out.mpg

您还可以获取可用设备的列表:

ffmpeg -f qtkit -list_devices true -i ""
旧答案:

我用QuickTime广播解决了这个问题。它是一个小型实用程序,用于捕获视频和音频,对其进行压缩,将压缩后的流打包成rtp数据包并传输到网络

因此,解决方案相当麻烦,需要双重编码,但它可以工作:

  • 在QuickTime广播公司的
    音频
    视频
    选项卡中设置流

  • 转到
    网络
    选项卡,将
    传输
    设置为“手动单播”;
    地址
    设置为“127.0.0.1”;
    端口
    设置为类似“60006002”的值

  • 文件->将广播设置另存为…
    到某个文件(例如Untitled.qtbr)

  • 导出SDP文件:
    文件->导出->SDP
    。SDP代表“会话描述协议”,其中包含有关在何处查找流、流的参数和编解码器选项等信息

  • 现在,您可以从命令行启动/停止QTB:

    osascript -e 'tell application "QuickTime Broadcaster" to start document "Untitled.qtbr"'
    
    osascript -e 'tell application "QuickTime Broadcaster" to stop document "Untitled.qtbr"'
    
  • 启动QTB后,ffmpeg将能够使用您在步骤4中导出的sdp文件读取压缩流(实际上,您可以在VLC或QuickTime player中打开它:
    open-a VLC stream.sdp

    因此,QTB充当“捕获代理”,使转换“直接转换为UDP套接字”

    或将其传输到ffserver:

    ffmpeg -i stream.sdp http://localhost:1881/feed1.ffm
    

    (imho)很难为ffmpeg/libavdevice添加iSight支持。iSight有基于ObjC的API(QTKit),必须包装在C静态库中,而且ffmpeg必须与所有OS X特定框架链接-这是可行的,但需要大量工作。

    使用最新的ffmpeg,您可以将iSight视频和麦克风音频录制到一个文件中:

    #列出可用的AVFoundation输入设备:
    ffmpeg-f avfoundation-列表_设备true-i“”
    #从设备0以30 fps的速度录制视频:
    ffmpeg-r30-f avfoundation-i0 out.mp4
    #从视频设备0和音频设备0录制:
    ffmpeg-r30-f avfoundation-i0:0out.mp4
    

    在撰写本文时,当使用音频录制视频时,您仍然可能会遇到。

    我可以使用wacaw将我的isight实时流式传输到ffserver(如video4linux2)吗?或者只是一般的实时流式传输如果您需要使用livestream,您将需要使用其他方式。我没有用过chazlever的“令人毛骨悚然的摄像头”,但它可能会根据您的需要工作。它位于这里:它需要安装“imagesnap”(因此也需要安装“自制”)。不过,我认为“爬行摄像头”的速度不会接近24fps,因为它的工作原理是反复调用“imagesnap”获取单个图像。还有苹果自己的QTS,不过我认为这是一种付费产品。VLC应用程序具有基于GUI的流媒体(请参见:),但如果您采用这种方式,您可能会与web技术一起破解某些东西,因为Flash还提供视频捕获。例如,使用ffmpeg进行实时流媒体的工作原理:ffmpeg-f avfoundation-i“0”-s 320x240-f flv-r 30.0“”流的质量非常差,和低fps。我在vlc上测试了stream.sdp:“open-a vlc stream.sdp”和ffserver上测试了stream.sdp:“ffmpeg-I stream.sdp”,两者的质量都很差。所以QTB肯定有问题。我将QTB中的设置设置为30 fps和1000 kbps,这没有任何区别。您使用的帧大小是多少?我目前使用的是600x480大多数屏幕是灰色的,可能有一个像素不存在。我确信我的isight也能工作,因为它在photobooth上工作得很好,等等。嗯,我用过1024x768@152000 mbps,它工作得很好(与iSight一样好)。QTB中的帧速率存在问题:似乎不管用户的设置如何,它都只能以15 fps的速度运行。
    ffmpeg -i stream.sdp -vcodec mjpeg -an -vf vflip -y /tmp/q.avi
    
    ffmpeg -i stream.sdp http://localhost:1881/feed1.ffm