FFmpeg开发笔记(八十九)基于FFmpeg的直播视频录制工具StreamCap
<span data-cke-copybin-start="1"><span data-cke-copybin-start="1"></span></span><span id="cke_bm_269S">随着推拉流技术的发展,现在网络直播应用很普及了,打开许多App都能看到各式各样的直播节目,包括抖音、快手、虎牙、斗鱼、B站、小红书、YY、映客等等。</span><p><span id="cke_bm_269S"> 有关视频推拉流的FFmpeg实现参见《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”,使用FFmpeg结合专用的流媒体服务器,可以很方便地实现视频直播功能。不过常规的拉流操作仅能实现播放功能,未能实现存储功能。如果事后还想回看以前的直播视频,就得引入直播录制功能了。<br>
StreamCap正是一个开源的国产直播流录制工具,它基于FFmpeg和StreamGet设计,覆盖40余个国内外主流直播平台,支持批量录制、循环监控、定时监控和自动转码等功能。StreamCap支持跨平台,能够在Windows/MacOS/Web上运行,并支持ts、flv、mkv、mov、mp4、mp3、m4a等常见格式,录制完成后会自动转码为mp4格式。<br>
StreamCap的源码托管地址为https://github.com/ihmily/StreamCap(星星数2.4k),国内的镜像地址为https://gitcode.com/gh_mirrors/st/StreamCap。最新版本是2025年8月发布的v1.0.2,可见该框架的源码更新十分及时,该版本的源码下载链接为https://github.com/ihmily/StreamCap/archive/refs/tags/v1.0.2.tar.gz。<br>
StreamCap基于Python 3.10开发,从源代码运行的话,需要在源码目录运行下面命令安装依赖包:</span></p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="8" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22%23%20%E5%AE%89%E8%A3%85%E6%A0%B8%E5%BF%83%E4%BE%9D%E8%B5%96%5Cnpip%20install%20-i%20https%3A%2F%2Fpypi.org%2Fsimple%20streamget%C2%A0%5Cn%23%20%E6%A1%8C%E9%9D%A2%E7%AB%AF%5Cnpip%20install%20-r%20requirements.txt%5Cn%23%20Web%E7%AB%AF%5Cnpip%20install%20-r%20requirements-web.txt%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs"># 安装核心依赖
pip install -i https://pypi.org/simple streamget
# 桌面端
pip install -r requirements.txt
# Web端
pip install -r requirements-web.txt</code></pre>
</div>
<p>接着执行下面命令,将示例的配置文件.env.example复制一份,并将新文件重命名为.env:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="7" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22cp%20.env.example%20.env%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">cp .env.example .env</code></pre>
</div>
<p>若在Windows和macOS运行上StreamCap,则通过以下命令启动程序界面:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="6" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22python%20main.py%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">python main.py</code></pre>
</div>
<p>启动成功后打开的StreamCap初始界面如下图所示:</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="5" data-cke-widget-wrapper="1"><img src="https://i-blog.csdnimg.cn/direct/57b879f0c19b4440a642b4e44851bfa3.png"><img alt="StreamCap1" width="590" height="384" loading="lazy" src="https://img2024.cnblogs.com/blog/729938/202510/729938-20251025124824621-841872483.png"></span></p>
<p>单击界面右边的【开始录制】按钮,打开下图所示的配置界面:</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="4" data-cke-widget-wrapper="1"><img src="https://i-blog.csdnimg.cn/direct/9ec02abe9d9544adbf2ec24e8f5b43e8.png"><img alt="StreamCap2" width="590" height="385" loading="lazy" src="https://img2024.cnblogs.com/blog/729938/202510/729938-20251025124841083-674397275.png"></span></p>
<p>在配置界面的直播间地址栏输入直播链接,然后单击右下角的【确定】按钮,跳到正在录制界面如下图所示:</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="3" data-cke-widget-wrapper="1"><img src="https://i-blog.csdnimg.cn/direct/0dfdc9e109f1430cb6b58b494d8dbf7e.png"><img alt="StreamCap3" width="590" height="384" loading="lazy" src="https://img2024.cnblogs.com/blog/729938/202510/729938-20251025124907087-78988263.png"></span></p>
<p>正在录制界面实时提示当前录制进度,也支持停止录制,录制好的视频默认保存在StreamCap的downloads/Custom/CustomLive目录下。</p>
<p>单击StreamCap左上角的【设置】按钮,打开如下图所示的设置界面。</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="2" data-cke-widget-wrapper="1"><img src="https://i-blog.csdnimg.cn/direct/5b54f13b1fe14c60838c97ae9acff57f.png"><img alt="StreamCap4" width="592" height="386" loading="lazy" src="https://img2024.cnblogs.com/blog/729938/202510/729938-20251025124935713-1389471593.png"></span></p>
<p> </p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="2" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"> </span></span></span></span></p>
<p>在设置界面支持修改包含基础设置、代理设置在内的录制选项,也支持修改推送设置、Cookie设置、账号设置等配置信息,方便用户个性化定制直播录制信息。</p>
<p>更多详细的FFmpeg开发知识参见<span class="cke_widget_wrapper cke_widget_inline cke_widget_csdnlink cke_widget_selected" data-cke-display-name="a" data-cke-filter="off" data-cke-widget-id="1" data-cke-widget-wrapper="1">《FFmpeg开发实战:从零基础到短视频上线》一书。</span></p>
<span data-cke-copybin-start="1">
<span data-cke-copybin-end="1"></span></span><br><br>
来源:https://www.cnblogs.com/aqi00/p/19165166
頁:
[1]