利用ffmpeg实现Windows音视频录制

缘起

平时看游戏直播的时候,能够把主播的声音、游戏声音、主播的桌面等都一起进行录制和直播,就在想能不能在命令行下通过ffmpeg实现呢?

步骤

ffmpeg采集摄像头和麦克风的教程网络上非常好找,采集Windows桌面也有不少的参考资料,唯独采集声卡的资料很少,这里在github上找到一款开源的虚拟软件,可以用来采集桌面和声卡。

第一步:打开命令行,看看ffmpeg支持的设备列表
>ffmpeg -list_devices true -f dshow -i dummy
file

第二步:试试录制声音到本地
>ffmpeg -f dshow -i audio="virtual-audio-capturer" -acodec libmp3lame window.mp3
file

第三步:录制视频
>ffmpeg -f dshow -i video="screen-capture-recorder" -r 5 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency MyDesktop.mp4
file

最后,试试音视频一起录制
>ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -pix_fmt yuv420p -vcodec libx264 -acodec libvo_aacenc -s 1280x720 -r 25 -q 10 -ar 44100 -ac 2 -tune zerolatency -preset ultrafast -f mpegts - | ffmpeg -f mpegts -i - -c copy -bsf:a aac_adtstoasc -f flv temp.flv

如果需要推送RTMP直播流,可以直接修改成推流相关的参数。

参考资料: Screen Capture Recorder介绍

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FFmpeg中,音视频同步是通过调整音频视频的时间戳来实现的。通情况下,音频和视频的时间戳是不同步的,需要进行调整以保持同步。 以下是一种常见的实现方法: 1. 解复用音视频文件:使用FFmpeg的`avformat_open_input`函数打开音视频文件,并使用`avformat_find_stream_info`函数获取音频和视频流的信息。 2. 寻找音频和视频流:遍历音频和视频流,找到音频流和视频流的索引。 3. 解码音频和视频帧:使用`avcodec_send_packet`函数将音频和视频数据包发送到对应的解码器进行解码,然后使用`avcodec_receive_frame`函数接收解码后的音频和视频帧。 4. 调整时间戳:比较音频帧的时间戳和视频帧的时间戳,根据差异调整其中一个流的时间戳。可以通过计算两个时间戳的差值,并使用`av_rescale_q`函数将差值转换为另一个流的时间基准。 5. 同步音频和视频:通过逐帧处理的方式,将同步后的音频帧和视频帧写入新的音视频文件中。可以使用`av_interleaved_write_frame`函数将音频和视频帧写入文件。 6. 释放资源:最后,释放所有使用的FFmpeg资源,包括关闭输入文件、释放解码器和销毁上下文等。 需要注意的是,音视频同步是一个复杂的问题,实际应用中可能还需要考虑音频和视频的帧率、采样率等因素,以及处理可能出现的延迟和漂移等情况。实现方法可能会因具体需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值