ffmpeg来了

安装

  1. 网址
https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz
https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
  1. 安装
./ffmpeg

ERROR
cannot open shared object file: No such file or directory
/etc/ld.so.conf.d/ 下新建ffmpeg.congf 写入内容 /usr/local/ffmpeg/lib (ffmpeg所在目录)
ldconfig 使配置文件生效 l(小写L)

命令(超重点,内容太干,选择性浏览)

说明

具体参数看官网吧,博主hold不住啊

直播推拉流部分

一般推流(可以略过)

# 推流桌面 - 只有桌面内容
ffmpeg -f avfoundation -pixel_format uyvy422 -i "1" -f flv rtmp://localhost:1935/live/room1
ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/live/room1
# 推流摄像头

# 只推流麦克风
ffmpeg -f avfoundation -i ":0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/live/room1
# 摄像头+麦克风
ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "0:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/live/room1
ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "0:0" -vsync 2 -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -b:v 1M -b:a 128K -f flv rtmp://localhost:1935/live/room1
ffmpeg -f avfoundation -framerate 30 -video_size 640x480 -i  "0" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/live/room1
ffmpeg -f avfoundation -framerate 30 -video_size 640x480 -i  "0" -vcodec libx264 -acodec libfaac -f flv  rtmp://localhost:1935/live/room1
ffmpeg -f avfoundation -framerate 30 -video_size 640x480 -i  "0"  \-c:v libx264 -preset ultrafast -acodec libfaac -f flv  rtmp://localhost:1935/live/room1
ffmpeg -f avfoundation -framerate 30 -video_size 640x480 -i  "0"  -vcodec libx264 -preset ultrafast -acodec libfaac -f flv  rtmp://localhost:1935/live/room1
ffmpeg -f avfoundation -framerate 30 -video_size 640x480 -i  "0"  -pixel_format nv12 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/live/room1
ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i  "0"  -vf format=yuv444p,crop=426:240:507:339 -preset ultrafast -acodec libfaac -f flv  rtmp://localhost:1935/live/room1
ffmpeg -f avfoundation -capture_cursor 1 -i 1:0 -r 30000/1001 -s 1280x800 -vsync 2 -c:v libvpx-vp9 -c:a libopus -b:v 1M -b:a 128K capture.webm -f flv rtmp://localhost:1935/live/room1
ffmpeg -f avfoundation -pixel_format uyvy422 -i "1" -f flv rtmp://localhost:1935/live/room1

直播推拉流

# 将文件当做直播送至live 
	ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName
# 将直播媒体保存至本地文件
	ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
# 将其中一个直播流,视频改用h264压缩,音频不变,送至另外一个直播服务流
	ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream
# 将其中一个直播流,视频改用h264压缩,音频改用faac压缩,送至另外一个直播服务流
	ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream
# 将其中一个直播流,视频不变,音频改用faac压缩,送至另外一个直播服务流
	ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream
# 将一个高清流,复制为几个不同视频清晰度的流重新发布,其中音频不变
	ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec copy -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec copy -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec copy -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k
# 功能一样,只是采用-x264opts选项
	ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a copy -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a copy -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a copy -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k
# 将当前摄像头及音频通过DSSHOW采集,视频h264、音频faac压缩后发布
	ffmpeg -list_devices true -f dshow -i dummy #获取摄像头名称
	ffmpeg -r 25 -f dshow -s 640×480 -i video="获取的摄像头的名称" :audio=”audio source name” -vcodec libx264 -b 600k -vpre slow            -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name
# 将一个JPG图片经过h264压缩循环输出为mp4视频
	ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4
# 将普通流视频改用h264压缩,音频不变,送至高清流服务(新版本FMS live=1)
	ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv “rtmp://server/live/h264Stream live=1″
###############-------------------------------------------------###############
#获取摄像头名称
	ffmpeg -list_devices true -f dshow -i dummy 
#获取视频流并推流
	ffmpeg -f dshow -i video="获取的摄像头的名称" -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -f flv <推流地址> 
	ffmpeg -re      -i 000.mp4                   -c:v    libx264 -tune zerolatency  -c:a aac                                                                          -f flv rtmp://192.168.31.50:1935/live/stream.flv
    ffmpeg -f dshow -i video="USB2.0 Camera" -vcodec libx264                               -acodec copy -preset:v ultrafast -tune:v zerolatency  -f flv rtmp://192.168.31.50:1935/live/stream.flv
    ffmpeg -f dshow -i video="USB2.0 Camera" -c:v libx264 -tune zerolatency -c:a aac -f flv rtmp://192.168.31.50:1935/live/stream.flv

###ex:
	# 推流
	ffmpeg -f dshow -i video="USB2.0 Camera" -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -f flv rtmp://192.168.31.50:1935/live/stream
	# 拉流
    ffplay rtmp://192.168.31.50:1935/hls  
# 桌面屏幕录制
   # 屏幕录制并保存成文件
   	ffmpeg -f gdigrab -i desktop eguid.mp4
   # 屏幕录制并推流
   	ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://eguid.cc:1935/rtmp/destop
# 视频文件推流
    ffmpeg -re -i eguid.flv -vcodec copy -acodec copy -f flv -y rtmp://eguid.cc:1935/rtmp/eguid
# 转流(rtsp转rtmp为例)
    ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -rtsp_transport tcp -vcodec h264 -acodec aac -f flv rtmp://eguid.cc:1935/rtmp/eguid
# 拉流
    ffmpeg -i rtmp://eguid.cc:1935/rtmp/eguid -vcodec h264 -f flv -acodec aac -ac 2 eguid.flv

从流媒体服务器播放视频

  1. 使用ffplay播放 rtmp流
	ffplay rtmp://server_ip/live/stream
  1. 使用ffplay播放 http-flv流
   ffplay http://server_ip:8000/live/stream.flv
  1. 使用ffplay播放 hls流
	ffplay http://server_ip:8000/live/stream.m3u8
  1. 使用NodePlayer.js 播放 ws-flv流
	//server_ip:8000/live/stream.flv

其它命令部分

# 将视频文件从一种编码转成另一种编码。比如转成 H.264 编码,一般使用编码器libx264,所以只需指定输出文件的视频编码器即可。
$ ffmpeg -i [input.file] -c:v libx264 output.mp4
# 转成 H.265 编码
$ ffmpeg -i [input.file] -c:v libx265 output.mp4
....想学更多请看官网....

写在最后

欢迎留言私信讨论;
文章有知识性错误请立马联系博主,博主将非常感谢;
无需经过允许即可随意使用转载,知识本来就是被广泛用来学习的;
非常感谢您能看到此处,本文为博主学习笔记,如有不同见解,请不吝赐教。

发布了9 篇原创文章 · 获赞 10 · 访问量 1329

猜你喜欢

转载自blog.csdn.net/Destinyabc/article/details/105405473