ubuntu ffmpeg 推拉流
时间: 2025-03-13 10:20:05 浏览: 35
### Ubuntu 上 FFmpeg RTMP 推流与拉流配置教程
#### 安装 FFmpeg
在 Ubuntu 系统上,可以通过以下命令安装 FFmpeg 工具:
```bash
sudo apt update && sudo apt install ffmpeg -y
```
此命令会更新包列表并安装最新版本的 FFmpeg[^1]。
#### 基本推流操作
要通过 FFmpeg 将本地视频文件推送到 RTMP 服务器,可以使用如下命令:
```bash
ffmpeg -re -i 输入视频路径 -c copy -f flv rtmp://目标IP:端口/应用名/流名称
```
其中 `-re` 参数表示按输入文件的实际帧率进行读取;`-i` 后面指定的是输入媒体文件路径;`rtmp://...` 是目标 RTMP 地址。例如:
```bash
ffmpeg -re -i example.mp4 -c copy -f flv rtmp://127.0.0.1:1935/stream/test
```
这条命令将 `example.mp4` 文件以原始编码方式推送到本地运行的 RTMP 流服务中。
#### 实现更复杂的场景——基于内存数据源的实时推流
如果需要实现更加灵活的功能,比如从程序内部生成音视频数据并通过 FFmpeg 进行实时编码和推流,则可参考下面的方法:
利用 C/C++ 编写自定义应用程序来调用 libavcodec 和其他相关库完成任务。这里提供了一个简化版框架思路作为起点[^2]:
```cpp
#include <libavformat/avformat.h>
// 初始化上下文...
AVFormatContext *output_format_context;
if (url_fopen(&output_format_context, "rtmp://...", AVIO_FLAG_WRITE) >= 0){
// 设置参数、分配资源...
}
while (!stop_flag){
av_interleaved_write_frame(output_format_context, packet);
}
avio_closep(&output_format_context->pb);
```
对于更高层次的需求(如 GUI 录制界面),还可以结合 QT 或 OpenCV 来捕获屏幕画面或者麦克风声音信号,并将其传递给 FFmpeg 处理链路最终形成完整的直播解决方案[^3]。
#### 拉流操作实例
同样地,在接收远程流方面也非常简单明了。只需执行类似这样的指令即可获取远端发布的多媒体内容到本地播放设备或者其他存储介质里去。
```bash
ffmpeg -i rtmp://source_address -codec copy output_file.mp4
```
上述脚本把来自特定 URL 的串流传回保存成 MP4 格式的文档形式。
---
阅读全文
相关推荐










