ffmpeg 推流命令记录

1.库介绍:


libavcodec      是一个包含用于音频/视频编解码器的解码器和编码器的库。
libavutil       是一个包含简化编程功能的库,包括随机数生成器,数据结构,数学例程,核心多媒体实用程序等等。
libavformat     是一个包含多媒体容器格式的解复用器和复用器的库。
libavdevice     是一个包含输入和输出设备的库,用于从许多常见的多媒体输入/输出软件框架中获取和呈现,包括Video4Linux,Video4Linux2,VfW和ALSA。
libavfilter     是一个包含媒体过滤器的库。
libswscale      是一个执行高度优化的图像缩放和色彩空间/像素格式转换操作的库。
libswresample   是一个执行高度优化的音频重采样,重新矩阵化和样本格式转换操作的库。

2.命令格式

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

3.常用参数


-f fmt (input/output)   强制设定输入或输出文件格式。通常会自动检测输入文件的格式,并从输出文件的文件扩展名猜测格式,因此大多数情况下不需要这个选项。
-i url (input)          输入
-y (global)             在没有请求的情况下覆盖输出文件。
-n (global)             不要覆盖输出文件,如果指定的输出文件已经存在,则会立即退出。
-stream_loop number     设定输入流循环的次数。循环0表示没有循环,循环1表示无限循环
-codec/-c               设置编码格式
-r fps                  设置帧速率
-vcodec codec (output)  设置视频编码格式,同-codec:v
-pix_fmt format         设置像素格式
-ar freq                设置音频采样频率
-aq q (output)          设置音频质量
-acodec codec           设置音频编解码器,同-codec:a

4.常用命令

3、常用命令

(1)将视频的帧速率改为24
ffmpeg -i input.avi -r 24 output.avi

(2)视频格式转换,将avi转成mp4
ffmpeg -i input.avi output.mp4

(3)从视频中提取音频
ffmpeg -i test.mp4 -acodec libmp3lame output.mp3

(4)视频剪切
ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4

(5)视频添加Logo
ffmpeg -i input.mp4 -i Logo.png -filter_complex overlay output.mp4

(6)视频去掉Logo
ffmpeg -i input.mp4 -vf delogo=0:0:220:90:100:1 output.mp4

(7)将100张图片合成视频,并为其添加背景音频(注意:图片要放在同一个文件夹下,并将图片按001--100的格式命名)
ffmpeg -i 001.mp3 -i %3d.jpg -s 1024x768 -author fy -vcodec mpeg4 darkdoor.avi

(8)将视频每隔一秒抽取一张图片,保存名字为 foo-001.jpeg, foo-002.jpeg, 等
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg

7.录屏、推流常用命令


//推流命令
//-re -i C:\output.mp4  -vcodec libx264 -acodec copy  -f flv -y rtmp://***/live/chid
//拉流
//-i rtmp://127.0.0.1/live/chid -acodec copy -vcodec copy -f flv -y chid.mp4
//-i rtmp://127.0.0.1/live/chid -c copy dump.flv
 
// rtsp 推流
// -i C:\output.mp4  -vcodec libx264 -f rtsp rtsp://***/myid
//-f gdigrab -i desktop -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f rtsp rtsp://***/myid
//推 摄像头
//-f dshow -i video="HD Pro Webcam C920" -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -f rtsp rtsp://***/myid
//音视频录制
//-f dshow -video_size 1680x1050 -framerate 30 -pixel_format yuv420p -i audio="麦克风 (HD Pro Webcam C920)" av-out.mp4

//-f fmt 指定格式(音视频的格式) //dshow //-i 输入 //-vcodec 强制使用codec编解码方式('copy' to copy stream) //libx264 //-acodec 指定音频编码('copy' to copy stream) //copy //-preset //-tune //-y 覆盖已有文件 //-c //传输的图像为灰色的解决办法,添加:-pix_fmt yuv420p //录制桌面:desktop //录制窗口:title=窗口名 // av_interleaved_write_frame(): Broken pipe 问题:在-f rtsp后面加一个-rtsp_transport tcp //录制整个程序窗口 //string command = "-f gdigrab -i title=test -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -acodec libmp3lame -ar 44100 -ac 1 -f rtsp -rtsp_transport tcp rtsp://***/myid"; //录制某一区域(这里是摄像头区域) //-offset_x 10 -offset_y 20 -video_size 640x480 从屏幕的(10,20)点处开始,抓取640x480的屏幕 //-s 640x480 指定分辨率 (640x480) //-r 60 设置帧率 (和程序的fps保持一致,解决Past duration 0.692253 too large的问题) //string command = "-f gdigrab -offset_x 920 -offset_y 85 -video_size 320*240 -s 320*240 -i title=test -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -r 60 -acodec libmp3lame -ar 44100 -ac 1 -f rtsp -rtsp_transport tcp rtsp://***/myid"; //string command = "-f gdigrab -offset_x 920 -offset_y 85 -video_size 320*240 -s 320*240 -i title=test -f dshow -i audio=\""+ micName + "\" -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -r 60 -acodec aac -ar 16000 -ac 1 -f rtsp -rtsp_transport tcp rtsp://***/myid"; //输入交换视频和音频的位置,画面不卡顿了 //string command = "-f dshow -i audio=\"" + micName + "\" -f gdigrab -offset_x 920 -offset_y 85 -video_size 320*240 -s 320*240 -i title=test -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -f rtsp -rtsp_transport tcp "+ ClientController.rtspId; //FFmpegCommands.DirectInput(command); //-re(输入)主要用于模拟抓取设备或实时输入流(例如,从文件读取时)。不应与实际的抓取设备或实时输入流一起使用(它可能导致数据包丢失)。默认情况下,ffmpeg尝试尽快读取输入。此选项将减慢输入读取到输入的本机帧速率。它对于实时输出(例如直播)非常有用。 //string command = "-re -i \"" + path + "\" -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -f rtsp -rtsp_transport tcp " +ClientController.rtspId;

参考:https://www.cnblogs.com/liliyaQiao/p/12531405.html

你可能感兴趣的:(linux,学习)