使用ffmpeg录制带有isight的视频

时间:2013-09-23 19:13:43

标签: macos video ffmpeg ffserver isight

因此,要在Linux上使用ffmpeg录制网络摄像头视频,您可以使用类似......

的内容
ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 out.avi

但是在mac上这不起作用,所以我想知道你如何在Mac上使用ffmpeg记录isight?

我已经研究了很多人说它无法完成,但大多数这些帖子都很老了所以我想知道从那时起它是否有所改变。

3 个答案:

答案 0 :(得分:20)

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

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

ffmpeg -f qtkit -i "default" out.mpg

您也可以获取可用设备列表:

ffmpeg -f qtkit -list_devices true -i ""

旧答案:

我用QuickTime Broadcaster解决了这个问题。它是一个小实用程序,它捕获视频和音频,压缩它,在rtp数据包中打包压缩流并将它们传输到网络。

因此,解决方法非常麻烦,需要双重编码,但它可以工作:

  1. 在QuickTime Broadcaster的AudioVideo标签中设置流

  2. 转到Network标签,将Transmission设置为“手动单播”,将Address设置为“127.0.0.1”,将Ports设置为“6000, 6002"

  3. File -> Save Broadcast Settings As...到某个文件(例如Untitled.qtbr)

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

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

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

    因此QTB作为“捕获代理”工作,使转换成“iSight-to-UDP socket”。

    ffmpeg -i stream.sdp -vcodec mjpeg -an -vf vflip -y /tmp/q.avi
    

    或将其传输到ffserver:

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

    (imho)将iSight支持添加到ffmpeg / libavdevice非常困难。 iSight有基于ObjC的API(QTKit),它必须包装在C静态库中,ffmpeg也必须与所有OS X特定的框架链接 - 这是可行的,但需要相当多的工作。

答案 1 :(得分:8)

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

# List available AVFoundation input devices:
ffmpeg -f avfoundation -list_devices true -i ""

# Record video at 30 fps from device 0:
ffmpeg -r 30 -f avfoundation -i 0 out.mp4

# Record from video device 0 and audio device 0:
ffmpeg -r 30 -f avfoundation -i 0:0 out.mp4

截至撰写时,在录制带有音频的视频时,您仍然可能会遇到AVFoundation sync problems

答案 2 :(得分:4)

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


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

<强> Wacaw - Webcam Tools for Mac OS X


以下是其用法示例。

  • 步骤1)查看存在的视频硬件
  

wacaw -L

  • 步骤2)捕获您的视频到文件。在我的MacBook上,它将我的内部iSight摄像头报告为ID为'2'的USB设备,输入ID为'0'。以下是它对我的MacBook的看法。您的计算机的“视频设备”可能有所不同,您也可以省略“--video-input 0”部分:
  

wacaw --video --video-device 2 --video-input 0 --duration 3 --VGA~ / MyMovie


希望这有帮助!