ffmpeg--学习笔记1-基本使用

来源:互联网 发布:武汉矩阵科技有限公司 编辑:程序博客网 时间:2024/06/15 01:39

1、显示可以使用的设备

ffmpeg -list_devices true -f dshow -i dummy 

这里写图片描述

列表显示设备的名称很重要,输入的时候都是使用-f dshow -i video="{设备名}"的方式。
我电脑上的可用的设备是为:
- 播放设备:DirectShow video devices
- 摄像头:“USB2.0 VGA UVC WebCam”


2、获取摄像头数据

  • 编码为H.264,保存为本地文件

    • 下面这条命令,实现了从摄像头读取数据并编码为H.264,并保存为test_dcamera.mkv
    • ffmpeg -f dshow -i video="USB2.0 VGA UVC WebCam" -vcodec libx264 test_dcamera.mkv
  • 直接播放摄像头获取的数据

    • 使用ffplay可以直接播放摄像头的数据,这里dshow就是代表前面的播放设备directShow
      • ffplay -f dshow -i video="USB2.0 VGA UVC WebCam"
    • 也可以使用vfwcap读取摄像头的数据
      • ffplay -f vfwcap -i 0
    • 使用FFmpeg的list_options查看设备的选项

      • ffmpeg -list_options true -f dshow -i video="USB2.0 VGA UVC WebCam"
        这里写图片描述
        摄像头画面可以有的分辨率
    • 设置分辨率为640x480

      • ffplay -s 640x480 -f dshow -i video="USB2.0 VGA UVC WebCam"
    • 设置分辨率为320x240
      • ffplay -s 320x240 -f dshow -i video="USB2.0 VGA UVC WebCam"

2、转换格式

命令的格式:
ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]

  • 参数选项;
    -an: 去掉音频
    -acodec: 音频选项, 一般后面加copy表示拷贝
    -vcodec: 视频选项,一般后面加copy表示拷贝
  • 格式
    - h264: 表示输出的是h264的视频裸流
    - mp4: 表示输出的是mp4的视频
    - mpegts: 表示ts视频流

  • mp4视频转ts

    • ffmpeg -i test.mp4 -acodec copy -vcodec copy -f mpegts test.ts
      • -acodec copy是将音频内容转换过去
      • -vcocec copy是将视频内容转换过去
      • mpegts就是ts格式

3、编码格式

  • 编码为H.264,发布为UDP
    • 下面这条命令,实现了:获取摄像头数据->编码为H.264->封装为UDP并发送至组播地址
      • ffmpeg -f dshow -i video="USB2.0 VGA UVC WebCam" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f h264 udp://localhost:6666
      • 考虑到提高libx264的编码速度,添加了-preset:v ultrafast和-tune:v zerolatency两个选项
      • 高分辨率的情况下,使用UDP可能出现丢包的情况。为了避免这种情况,可以添加–s 参数(例如-s 320x240)调小分辨率
  • 编码为H.264,发布为RTP
    • 下面这条命令,实现了:获取摄像头数据->编码为H.264->封装为RTP并发送至组播地址
      • ffmpeg -f dshow -i video="USB2.0 VGA UVC WebCam" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtp rtp://localhost:6666>test.sdp
      • 考虑到提高libx264的编码速度,添加了-preset:v ultrafast和-tune:v zerolatency两个选项
      • 结尾添加“>test.sdp”可以在发布的同时生成sdp文件。该文件可以用于该视频流的播放
  • 编码为H.264,发布为RTMP
    • 下面这条命令,实现了:获取摄像头数据->编码为H.264->并发送至RTMP服务器
      • ffmpeg -f dshow -i video="USB2.0 VGA UVC WebCam" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://localhost/oflaDemo/livestream
  • 编码为H.264,发布为UDP
    • 与编码为H.264类似,指明-vcodec即可
      • ffmpeg -f dshow -i video="USB2.0 VGA UVC WebCam" -vcodec mpeg2video -f mpeg2video udp://233.233.233.223:6666
    • 播放MPEG2的UDP流如下。指明-vcodec为mpeg2video即可
      • ffplay -vcodec mpeg2video udp://233.233.233.223:6666
0 0