音视频造数据的路

article/2025/10/16 14:51:55

目录

1、多路数据制造

(1)合并多路

(2) 视频修改分辨率

(3) 修改视频码率

(4)修改帧率

2、音频流多声道合成

(1)双声道合并单声道

(2)双声道提取

(3) 双声道转双音频流

(4)单声道转双声道

(5)两路音频合并双声道

(6)合并多声道

(7) 声道和编码格式

2、视频相关处理

(1)查看视频信息

(2)造大帧文件

(3)造大gop的文件

(4) copyts参数

(5)视频参数修改

4、ffprobe使用

(1)查看duration

(2)查看时间戳

(3)查看时长

(4)查看视频关键帧

5、切片

(1)hls

(2) segments+ss+t切片

6、帧率变化场景

 7、检测时间戳回退脚本

8、推流、拉流

(1)推流

(2)拉流

9、图片转视频转gif 


ffmpeg -y -copyts -ss 1:49 -i ~/Videos/input.mkv -c copy -t 1:00 timing-1m49s.mkv目录


1、多路数据制造

音频采样频率,单位:hz (1)、音频编码格式为mp3时,ar支持:44100、48000、32000 、22050 、24000、 16000 、11025、 12000 、8000 (2)、音频编码格式为aac时,ar支持:96000、88200、64000、 48000、 44100、 32000、 24000、 22050 、16000、 12000、 11025 、8000 (3)、特殊说明:视频封装格式为flv且音频编码格式为mp3时,ar不支持32000、48000

(1)合并多路

合并一个4路视频流的视频

ffmpeg -i v001.mp4 -i v000.mp4 -i a002.mp4 -i a001.mp4 -map 0 -map 1 -map 2 -map 3 -c copy 600.mp4

(2) 视频修改分辨率

修改分辨率:

ffmpeg -i video.mp4 -vf scale=1080:1920 1080_1920.mp4

ffmpeg -i input.jpg -vf scale=320:240 output_320x240.png

ffmpeg -i input.mp4 -b:v 10000k -s 216x384 output4.mp4

(3) 修改视频码率

ffmpeg -i D:/download/cutVideo.mp4 -b:v 64k -bufsize 64k -y D:/download/output64.mp4

(4)修改帧率

 修改帧率:ffmpeg -i video.mp4 -r 40 -y 40frames.mp4

2、音频流多声道合成

# 查看支持的声道布局

ffmpeg -layouts

# 查看ffmpeg支持的音频编码格式

ffmpeg -codecs|findstr Audio(windows下查看的)

(1)双声道合并单声道

ffmpeg -i input.aac -ac 1 output.aac

(2)双声道提取

# ffprobe先探测 output.mp4那一路是音频流,我这里是0:1路

ffprobe -v quiet -show_streams -of json output.mp4 

# map_channel方式

ffmpeg -i  output.mp4 -map_channel 0.1.0 left.aac -map_channel 0.1.1 right.aac

# pan滤镜

ffmpeg -i  output.mp4 -filter_complex "[0:1]pan=1c|c0=c0[left];[0:1]pan=1c|c0=c1[right]" -map "[left]" left1.aac -map [right] right.aac

(3) 双声道转双音频流

ffmpeg -i  output.mp4 -filter_complex channelsplit=channel_layout=stereo -y test1111.mp4

(4)单声道转双声道

# 提取一路mono的音频流 

ffmpeg -i test1111.mp4 -map 0:0 ew.aac

# 转成双声道

ffmpeg -i ew.aac -ac 2 channel_2.aac

(5)两路音频合并双声道

ffmpeg -i ew.aac -i ew.aac -filter_complex "[0:a][1:a]amerge=inputs=2[aout]" -map "[aout]" channels_2.aac 

(6)合并多声道

# 5.1声道

ffmpeg -i audio.aac -i audio.aac -i audio.aac -i audio.aac -i audio.aac -i audio.aac -filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a]amerge=inputs=6[aout]" -map "[aout]" out.aac 

# 7.1声道

ffmpeg -i audio.aac -i audio.aac -i audio.aac -i audio.aac -i audio.aac -i audio.aac -i audio.aac -i audio.aac -filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a][5:a][7:a]amerge=inputs=8[aout]" -map "[aout]" out.aac

(7) 声道和编码格式

# 合并声道,音频转码了

ffmpeg -i ew.aac -i ew.aac -i ew.aac -i ew.aac -c:a mp3 -filter_complex "[0:a][1:a][2:a][3:a]amerge=inputs=4[aout]" -map "[aout]" channels_4.mp3

# mp3格式不支持5.1声道,最多支持到4声道-下面的命令转出的文件探测是双声道

ffmpeg -i ew.aac -i ew.aac -i ew.aac -i ew.aac -i ew.aac -i ew.aac -c:a mp3 -filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a]amerge=inputs=6[aout]" -map "[aout]" channels_5.1.mp3

# aac格式可以支持到48声道,压缩率高,画质由于mp3,但是他们都是有损的压缩,flac是无损压缩

ffmpeg -i ew.aac -i ew.aac -i ew.aac -i ew.aac -i ew.aac -i ew.aac -c:a flac -filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a]amerge=inputs=6[aout]" -map "[aout]" channels_5.1.flac

2、视频相关处理

(1)查看视频信息

# 看是否是关键帧,帧大小,时间戳

ffprobe -v quiet -of compact -show_packets -select_streams v output.mp4

FLVBugger工具查看flv文件情况

(2)造大帧文件

ffmpeg -i input.mp4 -vcodec libx264 -crf 0 -f mp4 output.mp4

# 无损但是帧并不是很大

(3)造大gop的文件

obs设置帧间距20

(4) copyts参数

产生一个1分钟的文件,时间戳从1:49开始

ffmpeg -y -copyts -ss 1:49 -i ~/Videos/input.mkv -c copy -t 1:00 timing-1m49s.mkv

-copyts:复制时间流,这个很重,查阅很多资料才找到的复制时间流命令,主要功能是将ts分片保留原先时间流,保证和m3u8索引文件里面记录的分割时间一致。如果不在加这个,播放视频的时候,会卡顿,ts分片加载不准确 

(5)视频参数修改

修改分辨率:ffmpeg -i video.mp4 -vf scale=1080:1920 1080_1920.mp4

                               ffmpeg -i input.jpg -vf scale=320:240 output_320x240.png

                               ffmpeg -i input.mp4 -b:v 10000k -s 216x384 output4.mp4

修改码率:ffmpeg -i D:/download/cutVideo.mp4 -b:v 64k -bufsize 64k -y D:/download/output64.mp4

修改帧率:ffmpeg -i video.mp4 -r 40 -y 40frames.mp4

拼接视频:

                 (1)并行播放:ffmpeg -i zhang.flv -i du.flv -to 00:01:00 -filter_complex hstack -f mp4 101201.mp4(左右屏幕播放的情况,音频去了第一个源的)

 (2)串行播放:

ffmpeg -i zhang1.flv -i du1.flv -filter_complex "[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -f mp4 101202.mp4

#拼接文件多的时候,用文件的形式filelist.txt里面是拼接的文件名或url

文件格式

file 'LIVE-HD1080.mp4'
file 'LIVE-HD1080.mp4'
file 'LIVE-HD1080.mp4'
file 'LIVE-HD1080.mp4'
file 'LIVE-HD1080.mp4'
file 'LIVE-HD1080.mp4'

fmpeg -f concat -safe 0 -i filelist.txt -y output.mp4

截取视频:ffmpeg -i video.mp4 -ss 00:00:10 -to 00:30:00 -f mp4 sdfsd.mp4(截取第10秒开始到30分钟的数据)

4、ffprobe使用

(1)查看duration

ffprobe -v quiet -show_format 64k.mp4 | findstr duration(windows下,liunx下吧findstr换成grep)

# 同时查看两个文件对比着看

ffprobe -v quiet -show_format 64k.mp4 | findstr duration & ffprobe -v quiet -show_format 64k.mp4 | findstr duration

(2)查看时间戳

#liunx下,查看最后3个时间戳

ffprobe -v quiet -show_packets -select_streams v xuanzhuan.mp4 2> x|grep pts_time |tail -n 3

(3)查看时长

ffprobe -v quiet -show_format  xuanzhuan.mp4|grep duration 

(4)查看视频关键帧

ffprobe -v quiet -of compact -show_packets -select_streams v ../out_10.mp4 |grep K 

5、切片

(1)hls

只支持ts切片

# 文件必须包含的字段

# 区别是直播m3u8还是点播m3u8

第一点:点播文件有#EXT-X-ENDLIST标志结束,直播么有

第二点:直播文件的#EXT-X-MEDIA-SEQUENCE:0会变化,点播不会 

# 第一片序列数

ffmpeg -re -i ../out_10.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -start_number 300 output.m3u8

 #切片duration控制hls_time

ffmpeg -re -i ../out_10.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -hls_time 3 output1.m3u8

# 设置前置路径

ffmpeg -re -i ../out_10.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -hls_base_url http://12.11.1.0/live/ output.m3u8

# 切片文件名规则

ffmpeg -re -i ../out_10.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -hls_segment_filename lala-%d.ts  output.m3u8

 # hls_flags--delete_segments删除不在m3u8列表的旧文件

 ffmpeg -re -i ../out_10.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -hls_segment_filename lala-%d.ts -hls_flags delete_segments -hls_list_size 2 output.m3u8

# m3u8结束不追加endlist

ffmpeg -re -i ../out_10.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -hls_segment_filename lala-%d.ts -hls_flags omit_endlist output.m3u8

#本地时间为切片名

 ffmpeg -re -i ../out_10.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -use_localtime 1 output.m3u8

(2) segments+ss+t切片

#指定切片文件格式,segment_format指定为mp4,也可以是flv

ffmpeg -re -i video_3_audio_3.mp4 -c copy -f segment -segment_format mp4 qie/test_out-%d.mp4

#指定切片索引列表segment_list_type和segment_list,这样的m3u8不能播放,还可以索引为 csv文件、flat文件、ffconcat文件

ffmpeg -re -i out-10.mp4 -c copy -f segment -segment_format mp4 -segment_list_type m3u8 -segment_list output.m3u8 test_output-%d.mp4

#切片时间戳归0

ffmpeg -re -i ../out_10.mp4 -c copy -f segment -segment_format mp4 -reset_timestamps 1 test_output-%d.mp4

                #查看时间戳

ffprobe -v quiet -show_packets -select_streams v test_output-0.mp4|grep pts_time|tail -n 3

ffprobe -v quiet -show_packets -select_streams v test_output-1.mp4|grep pts_time|head -n 3

                #但是切片为ts,使切片时间归0不生效

#时间点切分segment_times,在offset为2s,5s,8s切割

ffmpeg -re -i ../out_10.mp4 -c copy -f segment -segment_format mp4 -segment_times 2,5,8 test_output-%d.mp4

#时长切分segment_time

ffmpeg -re -i ../out_10.mp4 -c copy -f segment -segment_format mp4 -segment_time 3 test_la-%d.mp4

             #查看时长

ffprobe -v quiet -show_format test_la-0.mp4 | grep duration;ffprobe -v quiet -show_format test_la-1.mp4 | grep duration;ffprobe -v quiet -show_format test_la-2.mp4 | grep duration;ffprobe -v quiet -show_format test_la-3.mp4 | grep duration

#ss指定截取开始时间,截取第10s开始的数据

ffmpeg -re -i video_3_audio_3.mp4 -c copy -f mp4 -ss 10 qie/out-10.mp4

#t指定截取时长,截取开始的10s文件

ffmpeg -re -i video_3_audio_3.mp4 -c copy -f mp4 -t 10 qie/out-10.mp4

#output_ts_offset指定输出start_time

ffmpeg -re -i ../out_10.mp4 -c copy -output_ts_offset 120 oo.mp4

ffprobe -v quiet -show_format oo.mp4 |grep start_time

6、帧率变化场景

问题:直播流hls转封装MP4做收录操作时,客户反馈转出文件有倍速情况(源文件时长是117分钟,转出45分钟),后半部分没有数据情况

原因:源文件有帧率突增,时间戳跳变

将片转封装为mp4看帧率

 ffmpeg -i hls的源文件地址  -c copy -copyts -f flv big_frames_pts_back.flv

工具分析:转出的文件

转出文件:vlc是音频时间戳为轴,所以会有倍速的效果

ffplay -ss 1200 test.flv (ffpaly也是一样的效果)

 修正:-acodec copy -bsf:a aac_adtstoasc -vcodec copy -copyts这里主要使用copyts参数修复

如果转码是么问题的:-filter_complex [0:v:0]scale=1280:1080 -sn -dn -timestamp now -acodec libfdk_aac -ab 64k -ar 44100 -profile:a aac_low -ac 1 -fflags ignidx -vcodec libx264 -pix_fmt yuv420p -vb 1542150 -movflags +faststart

 7、检测时间戳回退脚本

sh 脚本  源  dts    检测dts是否回退

sh 脚本  源  pts    检测pts是否回退

#/bin/sh
#$1输入流或文件
ffprobe -v quiet -i $1 -show_frames -show_packets  -print_format csv > ffprobe.txt
cat ffprobe.txt |grep "packet,video" |awk -F , '{print "dts="$6 ,"pts="$4,"size="$12}' >temp1.txt
cat ffprobe.txt |grep "frame,video"|awk -F , '{print "frame_type="$19}' >temp2.txt
paste temp1.txt temp2.txt > ffprobe.txt
rm -rf temp1.txt temp2.txt## 判断pts、dts是否存在回退现象
if [ $2 == "pts" ];thencat ffprobe.txt |awk '{print $2}'|awk -F pts= '{print $2}'|sed '/^\s*$/d'|awk 'BEGIN {count=1;} {name[count] = $1;count++;}; END { for (i = 1; i < NR; i++) {if (name[i] >= name[i+1]) {print NR,i,"pts="name[i],"ERROR"} } }' > pts-error.txt## 判断时间戳倒退得帧是否为B帧num=`cat pts-error.txt |wc -l`echo $numfor ((i=1;i<=$num;i++))dopts_time=`cat pts-error.txt|sed -n "$i"p|awk '{print $3}'`#echo $pts_timeframe_type=`cat ffprobe.txt|grep -w $pts_time|awk -F "frame_type=" '{print $2}'`if [ $frame_type == "B" ];thenusleepelseecho $pts_time "frame_type="$frame_typefidone
elif [ $2 == "dts" ];thencat ffprobe.txt |awk '{print $1}'|awk -F dts= '{print $2}'|sed '/^\s*$/d'|awk 'BEGIN {count=1;} {name[count] = $1;count++;}; END {     for (i = 1; i < NR; i++) {if (name[i] >= name[i+1]) {print NR,i,"dts="name[i],"next_dts="name[i+1],"ERROR"} } }'
elseecho "common"
fi

8、推流、拉流

(1)推流

ffmpeg -re -i 源文件 -acodec copy -vcodec copy  -f flv rtmp://10.100.51.88/videoqa.uplive.ks-cdn.com/live/test
# 转推直播流,vframes控制多少帧播放 -copyts控制不修改pts
ffmpeg -i rtmp://10.208.10.19:1937/douyin.live.ks-cdn.com/game/11 -acodec copy  -vcodec copy -vframes 900 -copyts -f flv rtmp://10.100.51.88/videoqa.uplive.ks-cdn.com/live/22
#转码后推直播流
ffmpeg -re -i gifshow-265.flv  -acodec copy -vcodec libqy265 -vf fps=30 -vb 1000k -vframes 900 -f flv rtmp://10.100.51.88/videoqa.uplive.ks-cdn.com/live/$1
# 推多路直播流
ffmpeg -re -i testfile/LIVE-SD.mp4 -c copy -f flv rtmp://10.100.51.178:1936/videoqa.uplive.ks-cdn.com/live/lala3 & ffmpeg -re -i testfile/LIVE-SD.mp4 -c copy -f flv rtmp://10.100.51.178:1938/videoqa.uplive.ks-cdn.com/live/lala4
ffmpeg -re -i testfile/LIVE-SD.mp4 -c copy -f flv rtmp://10.100.51.178:1939/hf-ws.uplive.ks-cdn.com/hfshow/hf -c copy -f flv rtmp://10.100.51.178:1939/hf-ws.uplive.ks-cdn.com/hfshow/hf1

#循环推一个源文件

ffmpeg -re -stream_loop -1 -i '/home/hanfang1/.virtualenvs/zhuanma_hf/zhuanma//testData/zhibo/video_file/test.mp4' -c copy -f flv rtmp://10.111.6.220:1936/qa-ws.test-uplive.ks-cdn.com/qapress/hf1

(2)拉流

(1)curl方式:只能http协议
curl "http://202.108.39.241/flv?app=live&stream=drmcctv6_1_500" -o aaa.flv -v
           tips:查看curl支持的协议范围
           curl -V


(2)ffmpeg方式
ffmpeg -re -i rtmp://SingaporeVideoqa.live.ks-cdn.com/pulltrans/hf3wwwww -c copy -f flv -y qatest007.flv


(3)wget方式:liunx环境下,window下无wget,不支持rtmp协议
wget 'http://10.100.51.165:80/hfshow/hf1_suffixcase001_1.flv?vhost=hf-ws.test-live.ks-cdn.com' -O hf1_suffixcase001_1.flv


(4)ffplay方式:
ffplay http://10.100.51.178:8084/hfshow/hf.flv?vhost=hf-ws.live.ks-cdn.com

ffplay -i rtmp://kscvr-rtmplive.kscvbu.cn:1935/live_tran/800

(5)rtmpdump方式:

rtmpdump --timeout 10 -v -r rtmp://10.100.51.178:1939/hfshow?vhost=hf-ws.live.ks-cdn.com/hf?task_type=vodtran -o 10928.flv

9、图片转视频转gif 

#-r 为1秒5帧,%d代表0,1,2...

ffmpeg -r 5 -i zhn_%d.png video.avi

#avi转gif

ffmpeg -i video.avi -pix_fmt rgb24 out.gif

制作的效果 

10、流header信息

curl -I "流的url链接"

不同的文件类型,Type类型不同,类型不对,造成播放器播放有问题,有需要网页播放的客户等

HTTP content-type | 菜鸟教程

Transfer-Encoding: chunked 

直播m3u8的头中使用,保证content-length没有办法给出准确值情况

11、选流规则

流一般有:音频流,视频流,数据流,字幕流 四种

还有多路场景:多路音频流,多路视频流

选流:播放器是如何选择那一路视频流播放?那一路音频播放?

转码选流:视频流转码,选取一路视频流转码输出的(我司策略)

12、浏览器播放

(1)chrome调式音视频的工具:chrome://media-internals/

ffrobe验证一致,但是火狐可以播放 

(2)

  


http://chatgpt.dhexx.cn/article/9eTAg50s.shtml

相关文章

音视频数据介绍

1、前言 在诸如安防系统标准GB28181和“电网视频监控系统及接口”中&#xff0c;固定视频流的传输格式为PS格式。PS流和TS流的概念是在MPEG2的ISO/IEC&#xff0d;13818标准的第一部分“系统”中提出的。其提出的目的是提供MPEG2编码比特的存储与传输方案。 2、先介绍PS封装中的…

互联网海量视频数据的存储

原文链接&#xff1a;http://www.docin.com/p-86312184.html?docfromrrela 一、背景 互联网内容提供方式转变&#xff1a;用户创造内容。视频应用、网络游戏、搜索引擎等互联网衍生业务迅速发展&#xff0c;使得海量数据存储、管理和处理成为当今互联网公司面临的严峻问题。这…

浅析大数据时代下的视频技术发展趋势以及AI加持下视频场景应用

视频技术的发展可以追溯到19世纪初期的早期实验。到20世纪初期&#xff0c;电视技术的发明和普及促进了视频技术的进一步发展。 1&#xff09;数字化&#xff1a;数字化技术的发明和发展使得视频技术更加先进。数字电视信号具有更高的清晰度和更大的带宽&#xff0c;可以更快地…

音视频数据方案

一点点想法&#xff1a;还请各路大神多多指点&#xff01; 技术栈&#xff1a; 1、数据存储、数据缓存、数据索引&#xff1a;springboot redis mysql elasticSearch 2、数据抓取&#xff1a;python mysqlBeautifulSoup、Selenium、lxml 3、图片分析&#xff1a;pythonPill…

浅析基于EasyCVR视频技术构建工业园区视频安防大数据监管平台的方案

随着社会经济的快速发展&#xff0c;越来越多的工业园区也正在加快智能化建设的步伐&#xff0c;为入驻企业提供舒适、安全、科技、智慧的办公及生产环境。在建设园区的智能化安防视频监管平台时&#xff0c;需要满足两方面的需求&#xff1a;一是园区内部及周边公共区域安全防…

某马大数据全套视频

某马大数据 01、阶段一 Python大数据开发基础 01、第一章大数据介绍及开发环境 02、第二章 linux命令 03、第三章 MySQL数据库 04、第四章 excel的使用 05、第五章 kettle的使用 06、第六章 数据分析及可视化 07、第七章 大数据框架与数仓基础 08、第八章 数仓实战项目 …

视频观看行为高级分析(大数据分析)

今天介绍一下我们的视频观看行为高级分析功能。 一、观看行为分析 观看行为分析&#xff0c;基于Polyv大数据分析&#xff0c;能够以秒为粒度展示观众如何观看您的视频。 视频观看热力图是单次观看行为的图形化表示&#xff0c;Polyv云点播视频的每一次播放&#xff0c;都会产…

【毕业设计】基于大数据的抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;…

五分钟读懂视频大数据分析

&#xfeff;&#xfeff; 发展至今&#xff0c;大数据不再为互联网企业独有&#xff0c;而是逐渐成为覆盖各行业、可以为具体业务服务的技术。如今&#xff0c;春节不仅演化成了一年一度的“人口迁徙”大节&#xff0c;还成了交通、安保等领域接受技术检验的关键时刻&#xff…

视频大数据的三大发展趋势

趋势一&#xff1a;系统集成下的技术融合 智能视频分析计算本身就是一个非常耗计算资源的过程&#xff0c;利用分布式计算平台的并行计算能力及云平台的计算资源弹性分配机制&#xff0c;可以有效利用平台的计算资源提高视频处理能力。同时&#xff0c;视频分析算法也需要不断…

大数据与视频技术的融合趋势将带来怎样的场景应用?

视频技术和AI技术的融合是一种新兴的技术趋势&#xff0c;它将改变视频行业的运作方式。视频技术和AI技术的融合主要包括以下几个方面&#xff1a; 1&#xff09;人脸识别技术 人脸识别技术是AI技术的一个重要应用场景。它可以通过对视频中的人脸进行识别和分析&#xff0c;实…

视频时代的大数据:问题、挑战与解决方案

导读&#xff1a;视频大数据云边协同解决方案。 作者&#xff1a;韩锐 刘驰 来源&#xff1a;大数据DT&#xff08;ID&#xff1a;hzdashuju&#xff09; 01 介绍 人们所观察的世界无时无刻不在改变&#xff0c;造就了“视频”相比于文本等类型的数据更具表现力&#xff0c;包含…

C# 工厂

(转载)C#抽象工厂模式的几种实现方法及比较 Posted on 2008-12-05 19:45 chefZ 阅读(5127) 评论(2) 编辑 收藏 引用 C#抽象工厂模式的几种实现方法及比较 转载地址&#xff1a; http://www.cndw.com/tech/net/2006042758468.asp 利用设计模式可以使我们的代码更灵活&#…

工厂方法模式--要车,轮子你得帮我装!

工厂模式常见的三种&#xff1a; 简单工厂模式工厂方法模式抽象工厂模式 工厂模式优点&#xff1a; 代码清晰&#xff0c;有效的封装变化对调用者屏蔽具体的产品类降低耦合度 工厂方法模式&#xff1a; 四要素&#xff1a; 工程接口&#xff0c;核心。工程实现产品接口&a…

Spring常用到的几种设计模式--工厂模式

一、工厂模式 工厂模式核心思想&#xff1a;只关心结果&#xff0c;隐藏复杂的过程 二、简单的工厂模式 BaoMa /** Copyright (C), 2013-2019, 天津大海云科技有限公司*/ package com.jikang.factory;/*** author yangjikang* date 2019/8/8 11:49* modified By yangjikang*…

php-工厂模式实现

php-工厂模式实现 概述 工厂模式(Factory Pattern)&#xff1a;在工厂模式中&#xff0c;可以根据参数的不同返回不同类的实例。工厂模式专门定义一个类来负责创建其他类的实例&#xff0c;被创建的实例通常都具有共同的父类。 还是拿工厂模式现实中中的例子&#xff1a; 现…

工厂模式整理

从部分博客摘录过来 定义&#xff1a;定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。 个人理解&#xff1a;顾名思义工厂模式就是按照工厂流水线的模式去生成产品&#xff0c;其设计思想就是提取产品的共性去制造流水线&#xff08;接口包含的方法&#x…

Android源码设计模式——工厂模式

工厂模式也是为了构建一个新的对象&#xff0c;它是创建型模式的一种。 Android源码设计模式——Build模式&#xff08;应用&#xff1a;AlertDialog源码分析&#xff09; 上述是之前的Build模式&#xff0c;也是创建型模式一种&#xff0c;不懂的小伙伴可以回看下上篇博客。 …

设计模式 -- 工厂模式

工厂的指责就是制作产品&#xff0c;那么产品就可以理解为是我们的对象&#xff0c;而工厂就是为了实例化对象而对象的&#xff0c;根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建&#xff0c;是一种创建型模式。 1、简单工厂模式 简单…

Vue轮子-Lottie-动画实现

不要问为什么 没有为什么。浮躁的7月首周。Keep Going And Stay Strong。 Lottie是一个IOS&#xff0c;Android和React Native库&#xff0c;可以实时渲染动画&#xff0c;动画被转化成JSON文件&#xff0c;节省了很多资源&#xff0c;允许应用程序像使用静态图像一样轻松使用…