### FFmpeg 命令详解 #### 一、FFmpeg 拉流与转流基础知识 FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它支持目前大部分已知的音视频格式,如 MPEG、MP4、AVI 等,以及各种编码技术(例如 H.264 和 AAC)。本文将重点介绍 FFmpeg 在进行拉流和转流操作时常用的命令及其参数。 #### 二、FFmpeg 拉取 RTMP 流并保存为 FLV 文件 **命令示例:** ```bash ffmpeg -i rtmp://192.168.218.236/live/88-ccopytest.flv output.flv ``` **解析:** - `-i`:指定输入源,这里是 RTMP 协议的 URL。 - `rtmp://192.168.218.236/live/88-ccopytest.flv`:RTMP 流地址。 - `output.flv`:输出文件名,将拉取到的 RTMP 流保存为 FLV 格式。 #### 三、FFmpeg 将 MP4 文件转码为 RTP 协议传输 **命令示例:** ```bash ffmpeg -re -i *.mp4 -vcodec libx264 -acodec copy -f rtp rtsp://ip:port/*.sdp ``` **解析:** - `-re`:表示重新同步输入文件的时间戳,通常用于实时流。 - `-i *.mp4`:表示输入文件为当前目录下的所有 MP4 文件。 - `-vcodec libx264`:指定视频编码器为 H.264。 - `-acodec copy`:音频编码采用复制方式,即保持原始音频编码不变。 - `-f rtp`:指定输出格式为 RTP。 - `rtsp://ip:port/*.sdp`:RTP 流的输出地址。 #### 四、FFplay 播放 RTMP 流 **命令示例:** ```bash ffplay -i rtmp://xxxxxxx -fflags nobuffer rtmp://xxx ``` **解析:** - `ffplay`:用于播放音视频文件。 - `-i rtmp://xxxxxxx`:指定输入源为 RTMP 流地址。 - `-fflags nobuffer`:禁用缓冲区,使播放更流畅但可能增加丢帧的风险。 - `rtmp://xxx`:实际 RTMP 流地址。 #### 五、FFmpeg 通过 TCP 协议拉取 RTSP 视频流并转换为 RTMP 流 **命令示例:** ```bash ffmpeg -rtsp_transport tcp -i rtsp://192.168.218.224/ch1 -f flv -an rtmp://192.168.218.185/live/vast ``` **解析:** - `-rtsp_transport tcp`:指定 RTSP 连接使用 TCP 协议。 - `-i rtsp://192.168.218.224/ch1`:指定 RTSP 流地址。 - `-f flv`:输出格式为 FLV。 - `-an`:只转视频不转音频。 - `rtmp://192.168.218.185/live/vast`:输出的 RTMP 地址。 #### 六、FFmpeg 通过 TCP 协议拉取 RTSP 视频流并保存为 MP4 文件 **命令示例:** ```bash ffmpeg -rtsp_transport tcp -i rtsp://192.168.218.72/2 -vcodec copy -acodec copy -f mp4 E:\AutoTrack.mp4 ``` **解析:** - `-rtsp_transport tcp`:指定 RTSP 连接使用 TCP 协议。 - `-i rtsp://192.168.218.72/2`:指定 RTSP 流地址。 - `-vcodec copy`:视频编码采用复制方式。 - `-acodec copy`:音频编码采用复制方式。 - `-f mp4`:输出格式为 MP4。 - `E:\AutoTrack.mp4`:输出文件路径。 #### 七、FFprobe 获取 RTSP 流的信息 **命令示例:** ```bash ffprobe -i rtsp://192.168.218.224/ch1 ``` **解析:** - `ffprobe`:用于获取音视频文件的元数据信息。 - `-i rtsp://192.168.218.224/ch1`:指定 RTSP 流地址作为输入。 #### 八、FFmpeg 批量转换 MP4 文件并输出为 RTMP 流 **命令示例:** ```bash ffmpeg -re -i *.mp4 -vcodec libx264 -acodec aac -f flv rtmp://xxx ``` **解析:** - `-re`:重新同步输入文件的时间戳。 - `-i *.mp4`:指定当前目录下的所有 MP4 文件作为输入。 - `-vcodec libx264`:指定视频编码器为 H.264。 - `-acodec aac`:指定音频编码器为 AAC。 - `-f flv`:输出格式为 FLV。 - `rtmp://xxx`:输出的 RTMP 地址。 #### 九、FFprobe 显示 MP4 文件的帧信息并保存为 XML 格式 **命令示例:** ```bash ffprobe -print_format xml -show_frames test.mp4 >> a.xml ``` **解析:** - `ffprobe`:用于获取音视频文件的元数据信息。 - `-print_format xml`:指定输出格式为 XML。 - `-show_frames`:显示帧信息。 - `test.mp4`:输入的 MP4 文件。 - `>> a.xml`:将输出追加到 a.xml 文件中。 以上是基于给定文件中的部分命令进行的详细解释。这些命令涵盖了 FFmpeg 在拉流、转流过程中的常见应用场景,包括 RTMP 和 RTSP 流的处理、视频编码的选择、输出格式的指定等关键操作。通过理解这些命令的具体含义,可以更好地利用 FFmpeg 工具来满足实际工作中对音视频处理的需求。
- 粉丝: 4
- 资源: 39
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Java和Python的垃圾图像分类系统.zip
- (源码)基于Spring Boot和Beetl的代码生成管理系统.zip
- (源码)基于低功耗设计的无线互呼通信系统.zip
- (源码)基于Arduino的盲人碰撞预警系统.zip
- 自己学习java安全的一些总结,主要是安全审计相关.zip
- (源码)基于C++的多线程外部数据排序与归并系统.zip
- 编译的 FFmpeg 二进制 Android Java 库.zip
- 纯 Java git 解决方案.zip
- (源码)基于Spring Boot和Vue的后台管理系统.zip
- 用于将 Power BI 嵌入到您的应用中的 JavaScript 库 查看文档网站和 Wiki 了解更多信息 .zip