目錄
一.簡(jiǎn)介
FFmpeg框架的基本組成包含:
二.?FFmpeg框架梳理音視頻的流程?編輯
基本概念:
三.ffmpeg、ffplay、ffprobe區(qū)別
? ? ?4.1 ffmpeg是用于轉(zhuǎn)碼的應(yīng)用程序?
4.2?fffplay是用于播放的應(yīng)用程序?
? ? ?4.3?ffprobe是用于查看文件格式的應(yīng)用程序
? ? ?4.4?ffmpeg是用于轉(zhuǎn)碼的應(yīng)用程序?
??五.常見的文件格式、編碼
? 5.1?常見的視頻格式、文件格式
5.2?常見的編碼音頻轉(zhuǎn)碼格式
六,編譯ffmepg腳本
6.1 ffmpeg核心工具
6.2轉(zhuǎn)換視頻
?6.3轉(zhuǎn)換裁剪
?6.3 視頻靜音
6.4?視頻添加水印
?6.5?視頻變速
6.6?視頻增加馬賽克
6.7?視頻截圖
?6.8?圖片添加水印
?6.9?圖片合成視頻
-
一.簡(jiǎn)介
?,? Download FFmpeg?官網(wǎng)地址
FFmpeg全稱為Fast Forward Moving Picture Experts Group(mpeg:動(dòng)態(tài)圖像專家組),于2000年誕生,是一款免費(fèi),開源的音視頻編解碼工具及開發(fā)套件。它的功能強(qiáng)大,用途廣泛,大量用于視頻網(wǎng)站和商業(yè)軟件(比如 Youtube 和 iTunes)。
FFmpeg 本身是一個(gè)龐大的項(xiàng)目,包含許多組件和庫文件,最常用的是它的命令行工具,FFmpeg既是一款音視頻編解碼工具,同時(shí)也是一組音視頻編解碼開發(fā)套件,作為編解碼開發(fā)套件,它為開發(fā)者提供了豐富的音視頻處理的調(diào)用接口。FFmpeg提供了多種媒體格式的封裝和解封裝,包括多種音視頻編碼、多種協(xié)議的流媒體、多種色彩格式轉(zhuǎn)換、多種采樣率轉(zhuǎn)換、多種碼率轉(zhuǎn)換等;FFmpeg框架提供了多種豐富的插件模塊,包含封裝與解封裝的插件、編碼與解碼的插件等。
FFmpeg是一個(gè)很全面的圖像處理套件。
-
FFmpeg框架的基本組成包含:
各個(gè)函數(shù)庫的作用?
libavcodec:編解碼庫。支持MPEG4、AAC、MJPEG等自帶的媒體編解碼格式等 ?? * 支持第三方的編解碼器:H.264(AVC)編碼,需要使用x264編碼器;H.265(HEVC)編碼,需要使用x265編碼器;MP3(mp3lame)編碼,需要使用libmp3lame編碼器 如果希望增加自己的編碼格式,或者硬件編解碼,則需要在AVCodec中增加相應(yīng)的編解碼模塊
libavformat:音視頻容器格式以及所支持的協(xié)議的封裝和解析。文件封裝格式:MP4、FLV、KV、TS等 ?? * 網(wǎng)絡(luò)協(xié)議封裝格式:RTMP、RTSP、MMS、HLS等
libavutil:提供了一些公共函數(shù),工具庫。
libavfilter:音視頻的濾鏡庫,如視頻加水印、音頻變聲等。
libavdevice:支持眾多設(shè)備數(shù)據(jù)的輸入與輸出,如讀取攝像頭數(shù)據(jù)、屏幕錄制。
libswresample, libavresample:提供音頻的重采樣工具庫。
libswscale:提供對(duì)視頻圖像進(jìn)行色彩轉(zhuǎn)換、縮放以及像素格式轉(zhuǎn)換,如圖像的 YUV 轉(zhuǎn)換。
libpostproc:多媒體后處理器。
-
二.?FFmpeg框架梳理音視頻的流程
基本概念:
容器(Container) 容器就是一種文件格式,比如flv,mkv等。包含下面5種流以及文件頭信息。
流(Stream) 是一種視頻數(shù)據(jù)信息的傳輸方式,5種流:音頻,視頻,字幕,附件,數(shù)據(jù)。
幀(Frame) 幀代表一幅靜止的圖像,分為I幀,P幀,B幀。
編解碼器(Codec) 是對(duì)視頻進(jìn)行壓縮或者解壓縮,CODEC =Code (編碼) +DECode(解碼)
復(fù)用/解復(fù)用(mux/demux) 把不同的流按照某種容器的規(guī)則放入容器,這種行為叫做復(fù)用(mux) 把不同的流從某種容器中解析出來,這種行為叫做解復(fù)用(demux),FFmpeg是否支持某種媒體封裝格式,取決于編譯時(shí)是否包含了該格式的封裝庫。根據(jù)實(shí)際需求,可進(jìn)行媒體封裝格式的擴(kuò)展,增加自己定制的封裝格式,即在AVFormat中增加自己的封裝處理模塊
-
三.ffmpeg、ffplay、ffprobe區(qū)別
? ? ?4.1 ffmpeg是用于轉(zhuǎn)碼的應(yīng)用程序?
? ? ?4.2?fffplay是用于播放的應(yīng)用程序?
? ? ?4.3?ffprobe是用于查看文件格式的應(yīng)用程序
??五.常見的文件格式、編碼
? 5.1?常見的視頻格式、文件格式
5.2?常見的編碼音頻轉(zhuǎn)碼格式
-
MP4封裝:H264視頻編碼+AAC音頻編碼(比較成熟)
-
WebM封裝:VP8視頻編碼+Vorbis音頻編碼(谷歌方案)
-
OGG封裝:Theora視頻編碼+Vorbis音頻編碼(開源)
六,編譯ffmepg腳本
#!/bin/bash
# 以下路徑需要修改成自己的NDK目錄
TOOLCHAIN=/Users/lh/Library/Android/sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/darwin-x86_64
# 最低支持的android sdk版本
API=21
function build_android
{
echo "Compiling FFmpeg for $CPU"
./configure \
--prefix=$PREFIX \
--disable-shared \
--enable-static \
--disable-avdevice \
--enable-small \
--disable-muxers \
--disable-filters \
--enable-gpl \
--cross-prefix=$CROSS_PREFIX \
--target-os=android \
--arch=$ARCH \
--cpu=$CPU \
--cc=$CC \
--cxx=$CXX \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-mno-stackrealign -Os $OPTIMIZE_CFLAGS -fPIC" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make -j16
make install
echo "The Compilation of FFmpeg for $CPU is completed"
}
# armv8-a
ARCH=arm64
CPU=armv8-a
# r21版本的ndk中所有的編譯器都在/toolchains/llvm/prebuilt/darwin-x86_64/目錄下(clang)
CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang
CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++
# NDK頭文件環(huán)境
SYSROOT=$TOOLCHAIN/sysroot
CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-
# so輸出路徑
PREFIX=$(pwd)/android/$CPU
OPTIMIZE_CFLAGS="-march=$CPU"
build_android
# 交叉編譯工具目錄,對(duì)應(yīng)關(guān)系如下
# armv8a -> arm64 -> aarch64-linux-android-
# armv7a -> arm -> arm-linux-androideabi-
# x86 -> x86 -> i686-linux-android-
# x86_64 -> x86_64 -> x86_64-linux-android-
# CPU架構(gòu)
# armv7-a
ARCH=arm
CPU=armv7-a
CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang
CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++
SYSROOT=$TOOLCHAIN/sysroot
CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
PREFIX=$(pwd)/android/$CPU
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
build_android
運(yùn)行./buildsh.sh
編譯成功以后的產(chǎn)物
6.1 ffmpeg核心工具
ffmpeg提供了以下三個(gè)工具
____ffmpeg # 用于音視頻編解碼等等
| |____ffplay # 用于播放音視頻文件、流媒體數(shù)據(jù)等等
| |____ffprobe # 用于查看文件封裝格式、音視頻編碼格式等等詳細(xì)信息
# ffmpeg [全局參數(shù)] [[輸入文件參數(shù)] -i 輸入文件]... {[輸出文件參數(shù)] 輸出文件}...
$ ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
獲取視頻信息
./ffmpeg -i /Users/lh/Downloads/test.mp4?
這部分信息表明了該文件的
Metadata信息:
major_brand字段表示該文件的封裝格式為mp42(MP4格式的子規(guī)范),文件創(chuàng)建時(shí)間為 2023-07-21T03:32:06.000000Z,視頻持續(xù)時(shí)間為00:00:07.86(71秒86),開始播放的時(shí)間是從0.000300ms,文件的比特率是1457 kb/s
第一路視頻信息:
在介紹該部分信息之前,需要先知道幾個(gè)專業(yè)術(shù)語,即關(guān)于時(shí)間基相關(guān)的定義:
tbr 表示幀率,該參數(shù)傾向于一個(gè)基準(zhǔn),往往tbr跟fps相同
tbn 表示視頻流 timebase(時(shí)間基準(zhǔn)),比如ts流的timebase 為90000,flv格式視頻流timebase為1000?
tbc 表示視頻流codec timebase ,對(duì)于264碼流該參數(shù)通過解析sps間接獲?。ㄍㄟ^sps獲取幀率)
這部分信息表示文件的第一股流是視頻流,編碼方式是H264的格式,封裝格式是AVC1,幀的數(shù)據(jù)格式是yuv420p,分辨率是480x640,比特率是1450 kb/s
6.2轉(zhuǎn)換視頻
把mp4格式的視頻,轉(zhuǎn)化成flv格式
./ffmpeg -i /Users/lh/Downloads/test.mp4? /Users/lh/Downloads/aaa.flv
下面列舉出了具體的轉(zhuǎn)換過程
?6.3轉(zhuǎn)換裁剪
./ffmpeg -ss 00:00:03 -i /Users/lh/Downloads/test.mp4 -vcodec copy -acodec copy -t 00:00:6 /Users/lh/Downloads/output.mp4
把test.mp4從第三秒開始裁剪到第六秒,下面是裁剪過程
?6.3 視頻靜音
./ffmpeg -i /Users/lh/Downloads/210710171112971120.mp4 -af "volume=enable='between(t,5,10)':volume=0" /Users/lh/Downloads/output.mp4?
說明:該命令的作用是將210710171112971120.mp4視頻按照指定時(shí)間靜音,生成一個(gè)新的output.mp4視頻。volume=enable='between(t,5,10)':volume=0 靜音從第5秒到第10秒,這個(gè)命令可以寫多個(gè),即多處靜音,中間逗號(hào)隔開
6.4?視頻添加水印
./ffmpeg -i /Users/lh/Downloads/210710171112971120.mp4 -vf "movie=/Users/lh/Downloads/shuiyin.jpeg,colorchannelmixer=aa=0.4,scale=300:300 [watermark]; [in][watermark] overlay" /Users/lh/Downloads/output.mp4
說明:
該命令的作用是將input.mp4視頻按照指定命令,打上水印,生成一個(gè)新的output.mp4視頻。
movie=input.png ? 水印圖片、
colorchannelmixer=aa=0.4 ?水印透明度(如果不需要更改透明度,則把該段去掉)
scale=300:300 ? 水印的大?。ㄈ绻迷〈笮?,則把該段去掉)
overlay ? ?水印的位置,默認(rèn)為左上角
? ? ? ? overlay=W-w ? 右上角
? ? ? ? overlay=0:H-h ? 左下角
? ? ? ? overlay=W-w:H-h ? 右下角
ps:如果水印不需要貼邊顯示,稍微更改W和H的值即可
?
視頻添加水印的效果
?如果要放在左下角
./ffmpeg -i /Users/lh/Downloads/210710171112971120.mp4 -vf "movie=/Users/lh/Downloads/shuiyin.jpeg,colorchannelmixer=aa=0.4,scale=300:300 [watermark]; [in][watermark] overlay=W-w:H-h" /Users/lh/Downloads/output.mp4
效果圖下圖
?6.5?視頻變速
./ffmpeg -i /Users/lh/Downloads/210710171112971120.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" /Users/lh/Downloads/output.mp4
說明:
該命令的作用是將210710171112971120.mp4 視頻按照指定倍速,生成一個(gè)新的output.mp4視頻。setpts=0.5*PTS ?視頻加速(默認(rèn)為1,現(xiàn)在是0.5。變成2倍速了)
atempo=2.0 ?音頻加速(默認(rèn)為1,現(xiàn)在是0.5.變成2倍速了)
ps:視頻加速和音頻加速,倍速需要一致,否則聲音視頻會(huì)不同步
其實(shí)就是相當(dāng)于我們?cè)诳爝M(jìn)視頻2倍速的速度播放視頻,比如我們經(jīng)常會(huì)在有些視頻網(wǎng)站看到x1.2,x1.5,x2倍速播放視頻
6.6?視頻增加馬賽克
如果需要給視頻或圖片添加馬賽克,可以使用?boxblur
?濾鏡。該濾鏡將指定區(qū)域變成模糊效果,從而達(dá)到馬賽克的效果。以下是一個(gè)簡(jiǎn)單的例子:
./ffmpeg -i /Users/lh/Downloads/210710171112971120.mp4 -filter_complex "[0:v]boxblur=10[blur];[blur]crop=200:200:300:300,boxblur=10[cropped];[0:v][cropped]overlay=300:300" /Users/lh/Downloads/output.mp4?
說明
其中 -i 210710171112971120.mp4 表示指定輸入文件。[0:v]boxblur=10[blur] 表示對(duì)視頻畫面進(jìn)行模糊處理,模糊半徑為 10 像素,保存為一個(gè)中間變量 blur。[blur]crop=200:200:300:300,boxblur=10[cropped] 表示對(duì)模糊后的視頻畫面進(jìn)行裁剪,只保留左上角起始坐標(biāo)為 (300, 300),寬高為 200 的區(qū)域,并再次進(jìn)行模糊處理,保存為一個(gè)中間變量 cropped。最后使用 overlay 濾鏡將原始視頻和裁剪后的帶馬賽克畫面疊加在一起,生成新的視頻文件 output.mp4。
如果需要調(diào)整馬賽克的大小、位置、形狀等屬性,可以加入不同的參數(shù)進(jìn)行設(shè)置。
如果視頻中的水印和馬賽克無法通過軟件工具進(jìn)行剔除,可以嘗試使用 FFmpeg 或類似的工具,在視頻上添加其他的圖層來遮蓋住這些區(qū)域
下面是打碼效果
?
6.7?視頻截圖
./ffmpeg -i /Users/lh/Downloads/210710171112971120.mp4 -y -f mjpeg -ss 30 -t 1 ?/Users/lh/Downloads/test1.jpg
說明:
-f mjpeg? 指定格式化的格式為mjpeg,
-ss 30? ? ?從第30秒開始截取
-t? 1? ? ? ? 截取一幀
效果如下圖
?6.8?圖片添加水印
./ffmpeg -i /Users/lh/Downloads/test1.jpg -i /Users/lh/Downloads/shuiyin.jpeg -filter_complex "overlay=W-w-10:H-h-10:alpha=0.5" /Users/lh/Downloads/output.jpg
說明:
其中?W
?和?H
?表示視頻畫面的寬度和高度,w
?和?h
?分別表示水印圖片的寬度和高度。alpha=0.5
?表示設(shè)置水印透明度為 0.5
效果如下圖?
?6.9?圖片合成視頻
/ffmpeg -i /Users/lh/Downloads/imgs/img_%1d.jpeg /Users/lh/Downloads/out.mp4
把/Users/lh/Downloads/imgs/這個(gè)目錄下面的6張圖片合并成一個(gè)視頻
?輸出結(jié)果:
6.10?視頻添加字幕
首先創(chuàng)建字幕文件
cat zimu.srt
1
00:00:01,000 --> 00:00:02,000
大家好,我是測(cè)試ffmepg的開發(fā)人員,這是第一條字幕
2
00:00:02,000 --> 00:00:05,000
本次我想和大家分享利用ffmpeg制作字幕的方法
3
00:00:05,000 --> 00:00:10,000
本次我想和大家分享利用ffmpeg制作字幕的方法
4
00:00:10,000 --> 00:00:20,000
本次我想和大家分享利用ffmpeg制作字幕的方法
./ffmpeg -i /Users/lh/Downloads/210710171112971120.mp4 -lavfi "subtitles=/Users/lh/Downloads/zimu.srt :force_style='Alignment=2,MarginV=5'" -y /Users/lh/Downloads/output.mp4?
效果如下
6.11?播放網(wǎng)絡(luò)視頻并且設(shè)置窗口標(biāo)題為http stream
./ffplay -window_title "http stream" http://vfx.mtime.cn/Video/2021/07/10/mp4/210710171112971120.mp4
效果如下
6.12?ffplay播放網(wǎng)絡(luò)視頻并且強(qiáng)制解碼器
./ffplay -vcodec h264 -window_title ?"http stream" http://vfx.mtime.cn/Video/2021/07/10/mp4/210710171112971120.mp4
強(qiáng)制解碼器為h264
效果如下
6.13?ffplay播放網(wǎng)絡(luò)視頻并且旋轉(zhuǎn)視頻?
./ffplay ? -window_title ?"http stream" http://vfx.mtime.cn/Video/2021/07/10/mp4/210710171112971120.mp4 -vf transpose=1?
6.14?ffplay播放網(wǎng)絡(luò)視頻并且僅音頻變速
?./ffplay ? -window_title? "http stream" http://vfx.mtime.cn/Video/2021/07/10/mp4/210710171112971120.mp4? -af atempo=2
6.15?ffplay播放網(wǎng)絡(luò)視頻并且僅視頻變速
./ffplay ? -window_title? "http stream" http://vfx.mtime.cn/Video/2021/07/10/mp4/210710171112971120.mp4 ? -vf setpts=PTS/2
6.16?ffplay播放網(wǎng)絡(luò)視頻并且音視頻同時(shí)變速
./ffplay ? -window_title? "http stream" http://vfx.mtime.cn/Video/2021/07/10/mp4/210710171112971120.mp4 ? -vf setpts=PTS/2 -af atempo=2
上述這個(gè)操作也就是我們經(jīng)常說的seek視頻
6.17?ffprobe以json格式顯示每個(gè)流的信息
./ffprobe -print_format json -show_streams ~/Downloads/out.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/lh/Downloads/out.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf60.10.100
Duration: 00:00:00.12, start: 0.000000, bitrate: 12170 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt470bg/unknown/unknown, progressive), 1080x1080 [SAR 1:1 DAR 1:1], 12110 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Lavc60.22.100 libx264
"streams": [
{
"index": 0,//多媒體的stream索引;
"codec_name": "h264",
"codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
"profile": "High",
"codec_type": "video", //多媒體類型,例如視頻包,音頻包等
"codec_tag_string": "avc1",
"codec_tag": "0x31637661",
"width": 1080,
"height": 1080,
"coded_width": 1080,
"coded_height": 1080,
"closed_captions": 0,
"film_grain": 0,
"has_b_frames": 2,
"sample_aspect_ratio": "1:1",
"display_aspect_ratio": "1:1",
"pix_fmt": "yuvj420p",
"level": 32,
"color_range": "pc",
"color_space": "bt470bg",
"chroma_location": "center",
"field_order": "progressive",
"refs": 1,
"is_avc": "true",
"nal_length_size": "4",
"id": "0x1",
"r_frame_rate": "25/1",
"avg_frame_rate": "25/1",
"time_base": "1/12800",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 1536,
"duration": "0.120000",
"bit_rate": "12110800",
"bits_per_raw_sample": "8",
"nb_frames": "3",
"extradata_size": 53,
"disposition": {
"default": 1,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": 0,
"attached_pic": 0,
"timed_thumbnails": 0,
"captions": 0,
"descriptions": 0,
"metadata": 0,
"dependent": 0,
"still_image": 0
},
"tags": {
"language": "und",
"handler_name": "VideoHandler",
"vendor_id": "[0][0][0][0]",
"encoder": "Lavc60.22.100 libx264"
}
}
]
}
6.18?ffprobe以json格式顯示幀信息文章來源:http://www.zghlxwxcb.cn/news/detail-601785.html
./ffprobe -print_format json -show_frames ~/Downloads/out.mp4文章來源地址http://www.zghlxwxcb.cn/news/detail-601785.html
"frames": [
{
"media_type": "video",
"stream_index": 0,
"key_frame": 1,
"pts": 0,
"pts_time": "0.000000",
"pkt_dts": 0,
"pkt_dts_time": "0.000000",
"best_effort_timestamp": 0,
"best_effort_timestamp_time": "0.000000",
"pkt_duration": 512,
"pkt_duration_time": "0.040000",
"duration": 512,
"duration_time": "0.040000",
"pkt_pos": "48",
"pkt_size": "112313",
"width": 1080,
"height": 1080,
"crop_top": 0,
"crop_bottom": 0,
"crop_left": 0,
"crop_right": 0,
"pix_fmt": "yuvj420p",
"sample_aspect_ratio": "1:1",
"pict_type": "I",
"coded_picture_number": 0,
"display_picture_number": 0,
"interlaced_frame": 0,
"top_field_first": 0,
"repeat_pict": 0,
"color_range": "pc",
"color_space": "bt470bg",
"chroma_location": "center",
"side_data_list": [
{
"side_data_type": "H.26[45] User Data Unregistered SEI message"
}
]
},
{
"media_type": "video",
"stream_index": 0,
"key_frame": 0,
"pts": 512,
"pts_time": "0.040000",
"best_effort_timestamp": 512,
"best_effort_timestamp_time": "0.040000",
"pkt_duration": 512,
"pkt_duration_time": "0.040000",
"duration": 512,
"duration_time": "0.040000",
"pkt_pos": "112361",
"pkt_size": "35468",
"width": 1080,
"height": 1080,
"crop_top": 0,
"crop_bottom": 0,
"crop_left": 0,
"crop_right": 0,
"pix_fmt": "yuvj420p",
"sample_aspect_ratio": "1:1",
"pict_type": "P",
"coded_picture_number": 1,
"display_picture_number": 0,
"interlaced_frame": 0,
"top_field_first": 0,
"repeat_pict": 0,
"color_range": "pc",
"color_space": "bt470bg",
"chroma_location": "center"
},
{
"media_type": "video",
"stream_index": 0,
"key_frame": 0,
"pts": 1024,
"pts_time": "0.080000",
"best_effort_timestamp": 1024,
"best_effort_timestamp_time": "0.080000",
"pkt_duration": 512,
"pkt_duration_time": "0.040000",
"duration": 512,
"duration_time": "0.040000",
"pkt_pos": "147829",
"pkt_size": "33881",
"width": 1080,
"height": 1080,
"crop_top": 0,
"crop_bottom": 0,
"crop_left": 0,
"crop_right": 0,
"pix_fmt": "yuvj420p",
"sample_aspect_ratio": "1:1",
"pict_type": "P",
"coded_picture_number": 2,
"display_picture_number": 0,
"interlaced_frame": 0,
"top_field_first": 0,
"repeat_pict": 0,
"color_range": "pc",
"color_space": "bt470bg",
"chroma_location": "center"
}
]
}
到了這里,關(guān)于音視頻開發(fā)-ffmpeg介紹-系列一的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!