使用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. 服务端监听
1
ffmpeg -re -i input.mp4 -f mpegts tcp://0.0.0.0:1234?listen
  1. 客户端播放
1
ffplay tcp://10.0.3.1:1234

2. 推流视频文件并播放

  1. 服务端监听
1
ffmpeg -re -i input.mp4 -c copy -f mpegts tcp://0.0.0.0:1234?listen
  1. 客户端播放
1
ffplay tcp://10.0.3.1:1234

3. 以上两个指令有什么区别?

这两个 FFmpeg 指令的主要区别在于它们对输入视频流的处理方式,具体如下:

  1. 第一个指令

    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 使用率增加,因为需要进行解码和编码的过程。

  2. 第二个指令

    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 的负担,并且可以更快地传输数据。

  3. 总结:

  • 第一个指令:会对视频进行解码和重新编码,可能会导致更高的 CPU 使用率和延迟。
  • 第二个指令:直接复制音视频流,效率更高,延迟更低。

在选择使用哪条指令时,可以根据具体需求来决定。如果你希望保持原始质量并减少处理时间,第二个指令是更好的选择。

二、使用UDP协议推流并播放

  1. 客户端播放

    1
    ffplay -i udp://127.0.0.1:1234
  2. 服务端推送

    1
    ffmpeg -re -i "input.mp4" -f mpegts "udp://127.0.0.1:1234"

三、ffplay播放视频网站的视频

  1. 浏览器抓包得到视频链接。
  2. 使用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下载视频网站视频

  1. 浏览器抓包得到链接。
  2. 使用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

五、使用ffmpegTCP协议推流并下载视频

  1. 服务端监听

    1
    ffmpeg -re -i input.mp4 -c copy -f mpegts tcp://0.0.0.0:1234?listen
  2. 客户端下载

    1
    ffmpeg -i tcp://10.0.3.1:1234 -c:v copy -c:a copy output_file.mp4