多媒体ffmpeg学习教程

多媒体ffmpeg

目前比较流行的音视频文件为:MP4 flv m3u8

ffmpeg

ffmpeg    ffplay    ffprobe   ffserver
ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip];[main][flip] overlay=0:H/2" OUTPUT
ffmpeg -i 2022.mp4 -vcodec mpeg4 -b:v 200k -r 15 -an output.rmvb
ffmpeg -h demuxer=mp4
ffmpeg -i input.flv -c copy -f mp4 -movflags dash output.mp4
ffmpeg -i 2022.mp4 -c copy -f flv output.flv
ffmpeg -i 2022.mp4 -vcodec copy -acodec aac -f flv output.flv
ffmpeg -i 2022.mp4 -c copy -f flv -flvflags add_keyframe_index add_keyframe_index.flv
ffmpeg -re -i 2022.mp4 -c copy -f hls -bsf:v h264_mp4toannexb output.m3u8

切割音视频

ffmpeg -re -i 2022.mp4 -c copy -f segment -segment_format mp4 test_output-%d.mp4ffprobe -v quiet -show_packets -select_streams v test_output-0.mp4 2> x | grep pts_time | tail -n 3ffmpeg -ss 10 -i 2022.mp4 -c copy output1de.ts

抽取音频流

ffmpeg -i 2022.mp4 -vn -acodec copy output.aac

抽取H264视频流

ffmpeg -i 2022.mp4 -vcodec copy -an output.h264

抽取H265数据

ffmpeg -i 2022.mp4 -vcodec copy -an -bsf hevc_mp4toannexb -f hevc output.hevc
ffmpeg -h encoder=libx264
ffmpeg -hide_banner -codecs | grep h264

转码

ffmpeg -i 2022.mp4 -vcodec libx264 -preset ultrafast -b:v 2000k out.mp4ffmpeg -i 2022.mp4 -vcodec libx264 -preset medium -b:v 2000k out.mp4ffmpeg -i 2022.mp4 -vcodec libx264 -profile:v baseline -level 3.1 -s 352x288 -an -y -t 10 output_baseline.tsffmpeg -i 2022.mp4 -vcodec libx264 -profile:v high -level 3.1 -s 352x288 -an -y -t 10 output_high.tsffmpeg -i 2022.mp4 -c:v libx264 -g 50 -t 60 demo.mp4

转码: 控制GOP长度 sc_threshold

ffmpeg -i 2022.mp4 -c:v libx264 -g 50 -sc_threshold 0 -t 60 -y outputs1.mp4

设置内部参数 x264opts

ffmpeg -i 2022.mp4 -c:v libx264 -x264opts "bframes=0" -g 50 -sc_threshold 0 demo.mp4
ffmpeg -i 2022.mp4 -c:v libx264 -x264opts "bframes=0:b-adapt=0" -g 50 -sc_threshold 0 demo.mp4ffmpeg -i 2022.mp4 -c:v libx264 -x264opts "bframes=10:b-adapt=0" -b:v 1000k -maxrate 1000k -minrate 1000k -bufsize 50k -nal-hrd cbr -g 50 -sc_threshold 0 demo01.mp4

硬件编码

nvidia GPU和Intel QSV

ffmpeg -h encoder=h264_nvenc # intel
ffmpeg -h encoder=h264_cuvid # nvidiaffmpeg -hwaccel cuvid -vcodec h264_cuvid -i 2022.mp4 -vf scale_npp=1920:1080 -vcodec h264_nvenc -acodec copy -f mp4 -y sss.mp4

Inter QSV

root@ai-evaluation-test:~# ffmpeg -hide_banner -codecs | grep h264DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_crystalhd h264_v4l2m2m h264_vdpau h264_cuvid ) (encoders: libx264 libx264rgb h264_nvenc h264_omx h264_v4l2m2m h264_vaapi nvenc nvenc_h264 )ffmpeg -i 2022.mp4 -pix_fmt nv12 -vcodec h264_qsv -an -y outputqsv.mp4ffmpeg -hide_banner -y -hwaccel qsv -i 2022.mp4 -an -c:v hevc_qsv -load_plugin hevc_hw -b:v 5M -maxrate 5M out.mp4ffmpeg -h decoder=h264_videotoolbox

支持mp3编码:

 ffmpeg -h encoder=libmp3lameffmpeg -i sample-3s.mp3 -acodec libmp3lame sample-3s-demo.mp3 # 编码

设置MP3码率为CBR

ffmpeg -i sample-3s.mp3 -acodec libmp3lame -b:a 64k ss.mp3

设置MP3的码率为 ABR

ffmpeg -i sample-3s.mp3 -acodec libmp3lame -b:a 64k -abr 1 ss.mp3

AAC编码器的使用

ffmpeg -i 2022.mp4 -c:a aac -b:a 160k output.aac # 抽取aac格式的语音流
ffmpeg -i 2022.mp4 -c:a aac -q:a 2 output.mp4

libfdk_acc使用例子

ffmpeg -i 2022.mp4 -c:a libfdk_aac -b:a 128k ssdemo.mp4ffmpeg -i 2022.mp4 -c:v copy -c:a libfdk_aac -b:a 384k ssde.mp4ffmpeg -i 2022.mp4 -c:a libfdk_aac -vbr 3 outsdee.mp4

AAC音频分为三种: LC HE-AAC HEv2-AAC

he-aac

ffmpeg -i 2022.mp4 -c:a libfdk_aac -profile:a aac_he -b:a 64k ssde.m4a

hev2-acc

ffmpeg -i 2022.mp4 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 64k ssde.m4a

ffprobe

查看音视频有多少个包

ffprobe -show_packets 2022.mp4
ffprobe -show_packets -show_data 2022.mp4

查看音视频封装格式

ffprobe -show_format 2022.mp4

查看音视频帧信息

ffprobe -show_frames 2022.mp4

查看音视频流信息

ffprobe -show_streams 2022.mp4

指定输出格式-of

ffprobe -show_streams -of ini 2022.mp4
ffprobe -show_frames -select_streams v -of xml 2022.mp4

分析flv文件格式音视频

ffprobe -v trace -i add_keyframe_index.flv分析每一帧包含I帧P帧B帧的情况:
ffprobe -v quiet -show_frames -select_streams v output_baseline.ts | grep "pict_type=B" | wc -l
ffprobe -v quiet -show_frames -select_streams v output_high.ts | grep "pict_type=B" | wc -l

ffplay

从第5秒开始放,播放10秒

ffplay -ss 5 -t 10 2022.mp4
ffplay -window_title "AUTEL DEMo" -ss 5 -t 10 -autoexit 2022.mp4

自定义标题

ffplay -window_title "AUTEL DEMo" 2022.mp4

打开网络直播流

ffplay -window_title "AUTEL DEMo" rtmp://up.v.test.com/live/streamffplay -vcodec h264 2022.mp4

播放视频流编号为4,音频流编号为5

ffplay -vst 4 -ast 5 2022.mp4
ffplay -window_title "Test Movie" -vf "subtitles=input.srt" 2022.mp4

MP3

ffplay -showmode 1 sample-3s.mp3

宏块

ffplay -debug vis_mb_type -window_title "show vis_mb_type" -ss 5 -t 10 -autoexit 2022.mp4
ffplay -vismv pf 2022.mp4
ffplay -flags2 +export_mvs -ss 5 2022.mp4 -vf codecview=mv=pf+bf+bb

RTMP

rtmp_app参数:

ffmpeg -rtmp_app live -i rtmp://publish.chinaffmpeg.com -c copy -f flv demo.flv
ffmpeg -re -i 2022.mp4 -c copy -f flv -rtmp_app live rtmp://publish.chinaffmpeg.com

rtmp_playpath参数:

ffmpeg -re -i 2022.mp4 -c copy -f flv -rtmp_app live -rtmp_playpath class rtmp://puhlish.chinaffmpeg.com#拉流
ffmpeg -rtmp_app live -rtmp_playpath class -i rtmp://publish.chinaffmpeg.com -c copy -f flv ssd.flv#推流
ffmpeg -i 2022.mp4 -c copy -f flv rtmp://publish.chinaffmpeg.com/${rtmp_app}/${rtmp_playpath}ffmpeg -i 2022.mp4 -c copy -f flv rtmp://publish.chinaffmpeg.com/live/class#拉流
ffmpeg -i rtmp://publish.chinaffmpeg.com/live/class -c copy -f flv sde.flv

rtmp_pageurl参数

ffmpeg -rtmp_pageurl "http://wwww.chinaffmpeg.com" -i rtmp:/publish.chinaffmpeg.com/live/class

RTSP

查看帮助

ffmpeg -h demuxer=RTSP

rtsp_transport 参数

ffmpeg -rtsp_transport tcp -i rtsp://47.90.47.25/test.ts -c copy -f mp4 ds.mp4 #录制流

user-agent参数

ffmpeg -user-agent "ChinaFFmpeg-Player" -i rtsp://input:554/live/1/stream.sdp -c copy -f mp4 -y ssee.mp4

在这里插入图片描述

TS流: TS流(Transport Stream,传输流):*是将一个节目的多个组成部分按照它们之间的互相关系进行组织并加入各组成部分关系描述和节目组成信息,并进一步封装成传输包后的码流*。TS流是将视频、音频、PSI等数据打包成传输包进行传送

HTTP

在这里插入图片描述

seekable参数举例

ffmpeg -ss 30 -seekable 0 -i http://bbs.chinaffmpeg.com/test.ts -c copy ssdfsa.mp4
ffmpeg -ss 30 -seekable 1 -i http://bbs.chinaffmpeg.com/test.ts -c copy -y ss.mp4

headers 参数

ffmpeg -headers "referer: http://bbs.chinaffmpeg.com/index.html" -i http://play.chinaffmpeg.com/live/class.flv -c copy -f flv -y sdaa.flv

uaser_agent参数

ffmpeg -user_agent "LiuQi's Player" -i http://bbs.chinaffmpeg.com/1.flv

拉流

ffmpeg -i http://bbs.chinaffmpeg.com/live.flv -c copy -f flv outss.flv
ffmpeg -i http://bbs.chinaffmpeg.com/live.ts -c copy -f flv outss.flv
ffmpeg -i http://bbs.chinaffmpeg.com/live.m3u8 -c copy -f flv outss.flv

TCP

拉流

fmpeg -listen 1 -f flv -i tcp://127.0.0.1:1234/live/stream -c copy -f flv ssd.flv

发布流

ffmpeg -re -i 2022.mp4 -c copy -f flv tcp://127.0.0.1:1234/live/streamffmpeg -listen_timeout 5000 -listen 1 -f flv -i tcp://127.0.0.1:1234/live/stream -c copy -f flv oude.flv
ffmpeg -timeout 20000000 -listen 1 -f flv -i tcp://127.0.0.1:1935/live/stream -c copy -f flv oude.flv

设置buffer大小流

ffmpeg -re -i 2022.mp4 -c copy -send_buffer_size 265 -f flv tcp://192.168.100.179:1234/live/stream

UDP

ffmpeg -re -i 2022.mp4 -c copy -localport 23456 -f flv udp://192.168.100.179:1234/live/stream

推多路流

管道方式输出多路流

ffmpeg -i 2022.mp4 -acodec aac -vcodec libx264 -f flv - | ffmpeg -f mpegts -i - -c copy output1 -c copy output2 -c copy output3# 推2路流
ffmpeg -i 2022.mp4 -vcodec libx264 -acodec aac -f flv - | ffmpeg -f flv -i - -c copy -f flv rtmp://publish.chinaffmpeg.com/live/stream1 -c copy -f flv rtmp://pubpish.chinaffmpeg.com/live/stream2
# 验证
ffmpeg -i rtmp://publish.chinaffmpeg.com/live/stream1 -i rtmp://publish.chinaffmpeg.com/live/stream2

tee封装格式输出多路流

# 推流
ffmpeg -re -i 2022.mp4 -vcodec libx264 -acodec aac -map 0 -f tee "[f=flv] rtmp://publish.chinaffmpeg.com/live/stream1 | [f=flv] rtmp://publish.chinaffmpeg.com/live/stream2"# 拉流
ffmpeg -i rtmp://publish.chinaffmpeg.com/live/stream1 -i rtmp://publish.chinaffmpeg.com/live/stream2ffmpeg -re -i 2022.mp4 -ccodec libx264 -acodec aac -f flv "tee:rtmp://publish.chinaffmpeg.com/live/stream1|rtmp://publish.chinaffmpeg.com/live/stream2"

生成HDS流

ffmpeg -h muxer=hds # 查看hds帮助信息

window_size 参数控制文件列表大小

ffmpeg -i 2022.mp4 -c copy -f hds -window_size 4 llll.mp4
root@ai-evaluation-test:~/llll.mp4# ls -lrt
total 14196
-rw-r--r-- 1 root root 3770540 1013 14:10 stream0Seg1-Frag1
-rw-r--r-- 1 root root 3806068 1013 14:10 stream0Seg1-Frag2
-rw-r--r-- 1 root root 3848563 1013 14:10 stream0Seg1-Frag3
-rw-r--r-- 1 root root 3093703 1013 14:10 stream0Seg1-Frag4
-rw-r--r-- 1 root root     154 1013 14:10 stream0.abst
-rw-r--r-- 1 root root     615 1013 14:10 index.f4m

extra_window_size 参数控制文件个数

ffmpeg -re -i 2022.mp4 -c copy -f hds -window_size 4 -extra_window_size 1 outputdemo
root@ai-evaluation-test:~/outputdemo# ls -lrt
total 14196
-rw-r--r-- 1 root root 3770540 1013 14:14 stream0Seg1-Frag1
-rw-r--r-- 1 root root 3806068 1013 14:15 stream0Seg1-Frag2
-rw-r--r-- 1 root root 3848563 1013 14:15 stream0Seg1-Frag3
-rw-r--r-- 1 root root 3093703 1013 14:15 stream0Seg1-Frag4
-rw-r--r-- 1 root root     154 1013 14:15 stream0.abst
-rw-r--r-- 1 root root     617 1013 14:15 index.f4m

生成DASH流

ffmpeg -h muxer=dash

window_size 与extra_window_size参数举例

ffmpeg -re -i 2022.mp4 -c:v copy -acodec copy -f dash -window_size 4 -extra_window_size 5 index.mpd

single_file参数验证

ffmpeg -re -i ../2022.mp4 -c:v copy -acodec copy -f dash -window_size 4 -extra_window_size 5 -single_file 1 index.mpd

为视频加logo

ffmpeg -i 2022.mp4 -i ion-credit.png -filter_complex "[1:v] scale=176:144[ion-credit];[0:v][ion-credit]overlay=x=0:y=0" sddsaad.mp4

在这里插入图片描述

为视频增加水印: drawtext滤镜参数

ffmpeg -i 2022.mp4 2022.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='Autel':x=20:y=20" ssaa3r2r.mp4ffmpeg -i 2022.mp4  -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='Autel':x=20:y=20:fontcolor=green" ssaa3r2r.mp4ffmpeg -i 2022.mp4  -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='Autel':x=20:y=20:fontcolor=green:box=1:boxcolor=yellow" ssaa3r2r.mp4

为视频添加本地时间 drawtext滤镜

ffmpeg -re -i 2022.mp4  -vf "drawtext=fontsize=60:fontfile=FreeSerif.ttf:text='%{localtime\:%Y\-%m\-%d %H-%M-%S}':x=20:y=20:fontcolor=green:box=1:boxcolor=yellow" ssaa3r2r.mp4# 闪烁效果
ffmpeg -re -i 2022.mp4  -vf "drawtext=fontsize=60:fontfile=FreeSerif.ttf:text='test':x=20:y=20:fontcolor=green:box=1:boxcolor=yellow:enable=lt(mod(t\,3)\,1)" ssaa3r2r.mp4

为视频加图片水印 movie滤镜

 ffmpeg -i 2022.mp4 -vf "movie=ion-credit.png[wm]; [in][wm]overlay=30:10[out]" sdsemdeosa.mp4ffmpeg -i 2022.mp4 -vf "movie=ion-credit.png,colorkey=black:1.0:1.0[wm]; [in][wm]overlay=30:10[out]" sdsemdeosa.mp4

生成画中画 overlay滤镜

# 左上角
ffmpeg -re -i 2022.mp4 -vf "movie=ssaa3r2r.mp4,scale=480x320[test];[in][test]overlay[out]" -vcodec libx264 out20231024.flv#右上角
ffmpeg -re -i 2022.mp4 -vf "movie=ssaa3r2r.mp4,scale=480x320[test];[in][test]overlay=x=main_w-480:y=main_h-320[out]" -vcodec libx264 out20231024.flvffmpeg -re -i 2022.mp4 -vf "movie=ssaa3r2r.mp4,scale=480x320[test];[in][test]overlay=x='if(gte(t,2),-w+(t-2)*20,NAN)':y=0[out]" -vcodec libx264 out20231024.flv# 视频多宫格
ffmpeg -re -i 2022.mp4 -re -i out20231024.flv -re -i output.flv -re -i outputs1.mp4 -filter_complex "nullsrc=size=640x480[base];[0:v]setpts=PTS-STARTPTS,scale=320x240[upperleft];[1:v]setpts=PTS-STARTPTS,scale=320x240[upperright];[2:v]setpts=PTS-STARTPTS,scale=320x240[lowerleft];[3:v]setpts=PTS-STARTPTS,scale=320x240[lowerright];[base][upperleft]overlay=shortest=1[tmp1];[tmp1][upperright]overlay=shortest=1:x=320[tmp2];[tmp2][lowerleft]overlay=shortest=1:y=240[tmp3];[tmp3][lowerright]overlay=shortest=1:x=320:y=240" -c:v libx264 dems.flv

音频相关:

 ffmpeg -layoutsffmpeg -i 2323.mp3 -ac 1 output.aacffmpeg -i 2323.mp3 -map_channel 0.0.0 left.aac -map_channel 0.0.1 right.aacffmpeg -i 2323.mp3 -filter_complex "[0:0]pan=1c|c0=c0[left];[0:0]pan=1c|c0=c1[right]" -map "[left]" left.aac -map "[right]" right.aacffmpeg -i 2323.mp3 -filter_complex channelsplit=channel_layout=stereo output.mka# 单声道传双声道ffmpeg -i left.aac -ac 2 output.m4affmpeg -i left.aac -filter_complex "[0:a][0:a]amerge=inputs=2[out]" -map "[out]" output.m4affmpeg -i left.aac -i right.aac -filter_complex "[0:a][1:a]amerge=inputs=2[aout]" -map "[aout]" output.mkaffmpeg -i 2323.mp3 -i 2323.mp3 -i 2323.mp3 -i 2323.mp3 -i 2323.mp3 -i 2323.mp3 -filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a]amerge=inputs=6[aout]" -map "aout" output.wav
音频音量
# 获取音频音量
ffmpeg -i 2323.mp3 -filter_complex volumedetect -c:v copy -f null /dev/null# 绘制音频波形
ffmpeg -i 2323.mp3 -filter_complex "showwavespic=s=640x120" -frames:v 1 ooo.png# 绘制不同声道的波形 split_channels
ffmpeg -i 2323.mp3 -filter_complex "showwavespic=s=640x120:split_channels=1" -frames:v 1 ooo.png
为视频加字幕
ASS字幕流写入视频流
ffmpeg -i 2022.mp4 -vf ass=t1.ass -f mp4 output.mp4
ASS字幕流写入封装容器
ffmpeg -i 2022.mp4 -i t1.ass -acodec copy -vcodec copy -scodec copy out.mkv
ffmpeg -i 2022.mp4 -i t1.ass -map 0:0 -map 0:1 -map 1:0 -acodec copy -vcodec copy -scodec copy out.mkv
视频抠图合并chromakey

查询背景颜色

ffmpeg -colorsffmpeg -i 2022.mp4 -i input_green.mp4 -filter_complex "[1:v]chromakey=Green:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" ddessaa.mp4colorkey
3D视频处理 stereo3d

播放3D视频

ffplay -vf "stereo3d=sbsl:aybd" 2022.mp4ffplay -vf "stereo3d=sbsl:aybg" 2022.mp4
定时视频截图vframe参数和 fps滤镜
ffmpeg -i 2022.mp4 -ss 00:00:7.435 -vframes 1 out.png# 定时截图
"/root/srs/"
ffmpeg -i 2022.mp4 -vf fps=1 out%d.png # 1s
ffmpeg -i 2022.mp4 -vf fps=1/60 out%d.png # 1min
ffmpeg -i 2022.mp4 -vf fps=1/600 out%d.png # 10min# select
ffmpeg -i 2022.mp4 -vf "select='eq(pict_type,PICT_TYPE_I)'" -vsync vfr thumb%04d.png

生成音视频

ffmpeg -re -f lavfi -i abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo -acodec aac -y outputaac.aacffmpeg -re -f lavfi "aevalsrc=sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC" -acodec aac output111.aac

生成视频流

ffmpeg -re -f lavfi -i testsrc=duration=5.3:size=qcif:rate=25 -vcodec libx264 -r:v 25 ssssss.mp4ffmpeg -re -f lavfi -i testsrc2=duration=5.3:size=qcif:rate=25 -vcodec libx264 -r:v 25 ssssss.mp4ffmpeg -re -f lavfi -i color=c=red@0.2:s=qcif:r=25 -vcodec libx264 -r:v 25 ssssss.mp4
音视频的倍速处理 atempo setpts

atempo

ffmpeg -i 2022.mp4 -filter_complex "atempo=tempo=0.5" -acodec aac  output11.aac ## 0.5倍处理
ffmpeg -i 2022.mp4 -filter_complex "atempo=tempo=2.0" -acodec aac  output11.aac ## 2倍处理

setpts

ffmpeg -re -i 2022.mp4 -filter_complex "setpts=PTS*2" ssde.mp4 # 半速处理ffmpeg -re -i 2022.mp4 -filter_complex "setpts=PTS/2" ssde.mp4 # 2倍处理

采集设备

ffmpeg -hide_banner -devices  # 查看采集设备
ffmpeg -h demuxer=fbdev## 帧率
ffmpeg -framerate 30 -f fbdev -i /dev/fb0 ss.mp4## v412
ffmpeg -h demuxer=v412
ffmpeg -hide_banner -f v412 -list_formats all -i /dev/video0ffmpeg -hide_banner -s 1920x1080 -i /dev/video0 output.avi#x11grab 录制桌面
ffmpeg -f x11grab -framerate 25 -video_size 1366x768 -i :0.0 sssde.mp4
ffmpeg -f x11grab -framerate 25 -video_size 352x288 -i :0.0+300,200 out123.mp4 ## 指定录制区域
ffmpeg -f x11grab  -video_size 1366x768 -follow_mouse 1 -i :0.0 out123.mp4 # 录制带鼠标的方法## mac os
ffmpeg -devices
ffmpeg -f avfoundation -list_devices true -i ""
# 采集内置摄像头
ffmpeg -f avfoundation -i " FaceTime HD Camera (Built-in)" demo.mp4
#采集OS X桌面
ffmpeg -f avfoundation -i "Capture screen 0" -r:v 30 out.mp4
# 录制鼠标
ffmpeg -f avfoundation -capture_cursor 1 -i "Capture screen 0" -r:v 30 out.mp4
# 采集麦克风
ffmpeg -f acfoundation -i "0:0" out.aac
ffmpeg -f acfoundation -video_device_index 0 -i ":0" out.aac
ffmpeg -f acfoundation -video_device_index 0 -audio_device_index 0 out.aac# windows dshow
ffmpeg.exe -f dshow -list_devices true -i dummy
ffmpeg.exe -f dshow  -video_size 1280x720 -i video="Integrated Webcam" s.mp4
ffmpeg.exe -f dshow -i video="Integrated Webcam" -f dshow -i audio="Virtual-audio-capturer" .\s.mp4
# windows vfwcap
ffmpeg.exe -f vfwcap -i list
ffmpeg.exe -f vfwcap -i 0 -r 25 -vcodec libx264 out.mp4 # 生成mp4#windows gdigrab 
ffmpeg.exe -f gdigrab -framerate 6 -i desktop out.mp4 # 采集桌面
ffmpeg.exe -f gdigrab -framerate 6 -i title=ffmpeg out.mp4 # 采集某个窗口
ffmpeg.exe -f gdigrab -framerate 6 -offset_x 50 -offset_y 50 -video_size 400x400 -i title=ffmpeg out.mp4 # 采集窗口指定区域

音频种类

WAV MP3 AAC Ogg

RGB

视频种类

YUV表示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/151353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS---关于font文本属性设置样式总结

目录 1、color属性 2、font-size属性 3、font-weight属性 4、font-family属性 5、text-align属性 6、line-height属性 7、text-indent属性 8、letter-spacing属性 9、word-spacing属性 10、word-break属性 11、white-space属性 12、text-transform 12、writing-mo…

SchedulingConfigurer教程,怎么使用Spring自带的可扩展定时任务调度接口

简介: SchedulingConfigurer 是 Spring 框架中的一个接口,用于配置任务调度(scheduling)的相关设置。在 Spring 中,任务调度通常通过 Spring 的任务调度模块(Task Scheduling)来实现&#xff0c…

px、em、rem、百分比的区别

文章目录 1. 单位类型与相对基准2. 相对长度1.em2.rem3.%百分比4.vw 和 vh5.vmin 和 vmax6.vm7.ch8. ex 3. 总结 1. 单位类型与相对基准 单位名称单位类型 (相对/绝对)相对基准px相对屏幕像素缩放后的尺寸百分比相对font-size相对于继承,wid…

【Flask使用】全知识md文档,4大部分60页第3篇:状态cookie和session保持

本文的主要内容:flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用:宏、继承/包含、模板中特有变量和函数、Flask-WTF 表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy…

互联网上门洗衣洗鞋小程序搭建

“闪站侠互联网洗护软件开发”围绕健康洗护、智能操作做出不断升级, 满足用户多样化的洗护需求,打造轻松洗衣洗鞋体验。 洗衣洗鞋专用软件,可以帮助洗衣店洗鞋店店主们省心高效的管理店铺,一次付款长期使用.功能基本涵…

趣学python编程 (四、数据结构和算法介绍)

数据结构和算法在编程中非常重要。数据结构是组织和存储数据的方式,而算法是解决问题的方法和步骤。你要挑战的蓝桥杯,实际也是在设计算法解决问题。其实各种编程语言都只是工具,而程序的核心数据结构算法。犹如练武,数据结构和算…

深度学习乳腺癌分类 计算机竞赛

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

【iOS】——知乎日报第五周总结

文章目录 一、评论区展开与收缩二、FMDB库实现本地持久化FMDB常用类:FMDB的简单使用: 三、点赞和收藏的持久化 一、评论区展开与收缩 有的评论没有被回复评论或者被回复评论过短,这时就不需要展开全文的按钮,所以首先计算被回复评…

Positive Technologies 利用 PT Cloud Application Firewall 保护中小型企业的网络资源

云产品按月订购,无需购买硬件资源 PT Cloud Application Firewall 是 Positive Technologies 推出的首个用于保护网络应用程序的商用云产品。Web 应用层防火墙 (web application firewall, WAF) 现在可以通过 技术合作伙伴——授权服务商和云提供商以订购方式提供1…

Modbus转Profinet网关在污水处理系统中连接PLC和变频器Modbus通信案例

污水处理系统中使用Modbus转Profinet网关可以连接PLC和变频器,实现二者之间的通信。该网关的作用是将PLC与变频器之间的Modbus协议转换为Profinet协议,使两者可以相互沟通。在污水处理系统中,PLC控制污水处理的各个过程,而变频器则…

测试用例的设计方法(全):正交实验设计方法|功能图分析方法|场景设计方发

正交实验设计方法 一.方法简介 利用因果图来设计测试用例时, 作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效…

vue过渡,vue3组合式API详细介绍

7.过渡效果 vue提供了两个内置组件,可以帮助你制作基于状态变化的过渡和动画 Transition会在一个元素或组件进入和离开DOM时应用动画TransitionGroup会在一个v-for列表中的元素或组件被插入,移动,或移除时应用动画 7-1过渡效果 过渡模式 <Transition mode"out-in&q…

Linux文件目录以及文件类型

文章目录 Home根目录 //bin/sbin/etc/root/lib/dev/proc/sys/tmp/boot/mnt/media/usr 文件类型 Home 当尝试使用gedit等编辑器保存文件时&#xff0c;系统默认通常会先打开个人用户的“家”&#xff08;home&#xff09;目录&#xff0c; 建议在通常情况下个人相关的内容也是保…

使用 VPN ,一定要知道的几个真相!

你们好&#xff0c;我的网工朋友。 今天想和你聊聊VPN。在VPN出现之前&#xff0c;企业分支之间的数据传输只能依靠现有物理网络&#xff08;例如Internet&#xff09;。 但由于Internet中存在多种不安全因素&#xff0c;报文容易被网络中的黑客窃取或篡改&#xff0c;最终造…

requests爬虫IP连接初始化问题及解决方案

问题背景 在使用HTTPS爬虫IP连接时&#xff0c;如果第一次请求是chunked方式&#xff0c;那么HTTPS爬虫IP连接将不会被初始化。这个问题可能会导致403错误&#xff0c;或者在使用HTTPS爬虫IP时出现SSL错误。 解决方案 为了解决这个问题&#xff0c;我们可以在requests库的ada…

多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测

多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 …

03-关系和非关系型数据库对比

关系和非关系型数据库对比 关系型数据库(RDBMS)&#xff1a;MySQL、Oracl、DB2、SQLServer 非关系型数据库(NoSql)&#xff1a;Redis、Mongo DB、MemCached 插入数据结构的区别 传统关系型数据库是结构化数据,向表中插入数据时都需要严格的约束信息(如字段名,字段数据类型,字…

Java概述

接触Java后会发现它的体系有一个特点&#xff0c;就是非常喜欢用“J”字母开头的缩写&#xff0c;比如JCP, JSR, JMS, JPA, JSP, JAX-RS......它们有些是规范&#xff0c;有些是组织的名称&#xff0c;表意多样&#xff0c;对第一次接触的人来说很可能会觉得混乱&#xff0c;本…

基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码

基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于水基湍流优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

Nginx-负载均衡-动静分离-虚拟主机

负载均衡 负载均衡基本使用 1 配置上游服务器 upstream myserver { #是server外层server ip1:8080;server ip1:8080; }2 配置代理 server {location / { proxy_pass http://myserver;#请求转向myserver 定义的服务器列表 注意这个http不能丢 pro…