爬虫5.使用ffplay播放与下载视频
使用ffplay与ffmpeg处理本地视频
一、使用ffplay播放本地视频
1 | ffplay -i "D:\Users\3\Videos\落叶的位置.mp4" |
二、使用ffmpeg复制视频
1 | ffmpeg -i "D:\Users\3\Videos\落叶的位置.mp4" -c copy "D:\Users\3\Videos\output.mp4" |
使用ffplay与ffmpeg处理网络视频
一、使用ffmpegy与TCP协议推流,使用ffplay播放
1. 推流解码后的视频文件并播放
- 服务端监听
1 | ffmpeg -re -i input.mp4 -f mpegts tcp://0.0.0.0:1234?listen |
- 客户端播放
1 | ffplay tcp://10.0.3.1:1234 |
2. 推流视频文件并播放
- 服务端监听
1 | ffmpeg -re -i input.mp4 -c copy -f mpegts tcp://0.0.0.0:1234?listen |
- 客户端播放
1 | ffplay tcp://10.0.3.1:1234 |
3. 以上两个指令有什么区别?
这两个 FFmpeg 指令的主要区别在于它们对输入视频流的处理方式,具体如下:
第一个指令:
1
ffmpeg -re -i input.mp4 -f mpegts tcp://0.0.0.0:1234?listen
- **
-re**:以实时速度读取输入文件。 - **
-i input.mp4**:指定输入文件为input.mp4。 - **
-f mpegts**:指定输出格式为 MPEG-TS。 - **
tcp://0.0.0.0:1234?listen**:在本地的1234端口上监听连接。
处理方式:这个指令没有指定
-c copy,因此 FFmpeg 会对输入文件进行解码,然后重新编码为 MPEG-TS 格式。这样可能会导致一定的延迟和 CPU 使用率增加,因为需要进行解码和编码的过程。- **
第二个指令:
1
ffmpeg -re -i input.mp4 -c copy -f mpegts tcp://0.0.0.0:1234?listen
- **
-re**:同样以实时速度读取输入文件。 - **
-i input.mp4**:指定输入文件为input.mp4。 - **
-c copy**:表示直接复制输入文件的编码格式,而不进行重新编码。 - **
-f mpegts**:指定输出格式为 MPEG-TS。 - **
tcp://0.0.0.0:1234?listen**:在本地的1234端口上监听连接。
处理方式:这个指令使用
-c copy,因此 FFmpeg 会直接将输入文件的音视频流复制到输出,而不进行解码和重新编码。这种方式通常更高效,因为它减少了 CPU 的负担,并且可以更快地传输数据。- **
总结:
- 第一个指令:会对视频进行解码和重新编码,可能会导致更高的 CPU 使用率和延迟。
- 第二个指令:直接复制音视频流,效率更高,延迟更低。
在选择使用哪条指令时,可以根据具体需求来决定。如果你希望保持原始质量并减少处理时间,第二个指令是更好的选择。
二、使用UDP协议推流并播放
客户端播放
1
ffplay -i udp://127.0.0.1:1234
服务端推送
1
ffmpeg -re -i "input.mp4" -f mpegts "udp://127.0.0.1:1234"
三、ffplay播放视频网站的视频
- 浏览器抓包得到视频链接。
- 使用
ffplay播放。
1 | ffplay -i http://cc.weichennet.com/26%20%E5%AE%9E%E6%88%98%E8%BF%87TP%E4%B8%B6NP%20%E8%BF%87%E5%9B%BE%E6%A0%87.mp4 |
四、使用ffmpeg下载视频网站视频
- 浏览器抓包得到链接。
- 使用FFMPEG下载
1 | ffmpeg -i http://cc.weichennet.com/26%20%E5%AE%9E%E6%88%98%E8%BF%87TP%E4%B8%B6NP%20%E8%BF%87%E5%9B%BE%E6%A0%87.mp4 -c:v copy -c:a copy output_file.mp4 |
五、使用ffmpeg与TCP协议推流并下载视频
服务端监听
1
ffmpeg -re -i input.mp4 -c copy -f mpegts tcp://0.0.0.0:1234?listen
客户端下载
1
ffmpeg -i tcp://10.0.3.1:1234 -c:v copy -c:a copy output_file.mp4
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
