FFmpeg常用命令講解及實戰二

文章目錄

  • 前言
  • 一、ffmpeg 常用命令
    • 1、ffmpeg 的封裝轉換
    • 2、ffmpeg 的編轉碼
    • 3、ffmpeg 的基本編轉碼原理
  • 二、ffprobe 常用參數
    • 1、show_format
    • 2、show_frames
    • 3、show_streams
    • 4、print_format
    • 5、select_streams
  • 三、ffplay 的常用命令
    • 1、ffplay 常用參數
    • 2、ffplay 高級參數
    • 3、ffplay 的數據可視化分析應用


前言

FFmpeg 有三個作用不同的工具軟件 ffmpeg.exeffplay.exeffprobe.exe,本文主要講講這些工具軟件的使用方法。


一、ffmpeg 常用命令

ffmpeg 在做音視頻編解碼時非常方便,所以很多場景下轉碼使用的是 ffmpeg,通過 ffmpeg -help 命令操作可以看到 ffmpeg 常見的命令大概分為六部分:

  • ffmpeg 信息查詢部分
  • 公共操作參數部分
  • 文件主要操作參數部分
  • 視頻操作參數部分
  • 音頻操作參數部分
  • 字幕操作參數部分
D:\Work\test>ffmpeg -help
ffmpeg version 6.0-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberbandlibavutil      58.  2.100 / 58.  2.100libavcodec     60.  3.100 / 60.  3.100libavformat    60.  3.100 / 60.  3.100libavdevice    60.  1.100 / 60.  1.100libavfilter     9.  3.100 /  9.  3.100libswscale      7.  1.100 /  7.  1.100libswresample   4. 10.100 /  4. 10.100libpostproc    57.  1.100 / 57.  1.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...Getting help:-h      -- print basic options-h long -- print more options-h full -- print all options (including all format and codec specific options, very long)-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocolSee man ffmpeg for detailed description of the options.Print help / information / capabilities:
-L                  show license
-h topic            show help
-? topic            show help
-help topic         show help
--help topic        show help
-version            show version
-buildconf          show build configuration
-formats            show available formats
-muxers             show available muxers
-demuxers           show available demuxers
-devices            show available devices
-codecs             show available codecs
-decoders           show available decoders
-encoders           show available encoders
-bsfs               show available bit stream filters
-protocols          show available protocols
-filters            show available filters
-pix_fmts           show available pixel formats
-layouts            show standard channel layouts
-sample_fmts        show available audio sample formats
-dispositions       show available stream dispositions
-colors             show available color names
-sources device     list sources of the input device
-sinks device       list sinks of the output device
-hwaccels           show available HW acceleration methodsGlobal options (affect whole program instead of just one file):
-loglevel loglevel  set logging level
-v loglevel         set logging level
-report             generate a report
-max_alloc bytes    set maximum size of a single allocated block
-y                  overwrite output files
-n                  never overwrite output files
-ignore_unknown     Ignore unknown stream types
-filter_threads     number of non-complex filter threads
-filter_complex_threads  number of threads for -filter_complex
-stats              print progress report during encoding
-max_error_rate maximum error rate  ratio of decoding errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success.Per-file main options:
-f fmt              force format
-c codec            codec name
-codec codec        codec name
-pre preset         preset name
-map_metadata outfile[,metadata]:infile[,metadata]  set metadata information of outfile from infile
-t duration         record or transcode "duration" seconds of audio/video
-to time_stop       record or transcode stop time
-fs limit_size      set the limit file size in bytes
-ss time_off        set the start time offset
-sseof time_off     set the start time offset relative to EOF
-seek_timestamp     enable/disable seeking by timestamp with -ss
-timestamp time     set the recording timestamp ('now' to set the current time)
-metadata string=string  add metadata
-program title=string:st=number...  add program with specified streams
-target type        specify target file type ("vcd", "svcd", "dvd", "dv" or "dv50" with optional prefixes "pal-", "ntsc-" or "film-")
-apad               audio pad
-frames number      set the number of frames to output
-filter filter_graph  set stream filtergraph
-filter_script filename  read stream filtergraph description from a file
-reinit_filter      reinit filtergraph on input parameter changes
-discard            discard
-disposition        dispositionVideo options:
-vframes number     set the number of video frames to output
-r rate             set frame rate (Hz value, fraction or abbreviation)
-fpsmax rate        set max frame rate (Hz value, fraction or abbreviation)
-s size             set frame size (WxH or abbreviation)
-aspect aspect      set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)
-display_rotation angle  set pure counter-clockwise rotation in degrees for stream(s)
-display_hflip      set display horizontal flip for stream(s) (overrides any display rotation if it is not set)
-display_vflip      set display vertical flip for stream(s) (overrides any display rotation if it is not set)
-vn                 disable video
-vcodec codec       force video codec ('copy' to copy stream)
-timecode hh:mm:ss[:;.]ff  set initial TimeCode value.
-pass n             select the pass number (1 to 3)
-vf filter_graph    set video filters
-b bitrate          video bitrate (please use -b:v)
-dn                 disable dataAudio options:
-aframes number     set the number of audio frames to output
-aq quality         set audio quality (codec-specific)
-ar rate            set audio sampling rate (in Hz)
-ac channels        set number of audio channels
-an                 disable audio
-acodec codec       force audio codec ('copy' to copy stream)
-ab bitrate         audio bitrate (please use -b:a)
-af filter_graph    set audio filtersSubtitle options:
-s size             set frame size (WxH or abbreviation)
-sn                 disable subtitle
-scodec codec       force subtitle codec ('copy' to copy stream)
-stag fourcc/tag    force subtitle tag/fourcc
-fix_sub_duration   fix subtitles duration
-canvas_size size   set canvas size (WxH or abbreviation)
-spre preset        set the subtitle options to the indicated preset

ffmpeg 信息查詢部分主要參數:
其中通過 ffmpeg --help 查看到的 help 信息是基礎的信息,如果想獲得高級參數部分,可以通過使用 ffmpeg --help long 參數來查看,如果希望獲得全部的幫助信息,可以同過使用 ffmpeg --help full 參數來獲得。

通過 -L 參數,可以看到 ffmpeg 目前所支持的 license 協議,通過 -version 查看 ffmpeg 的版本,這里所查看的版本, 是詳細的版本,包含 libavformatlibavcodeclibavutillibavfilterlibswscalelibswresample 的版本。

有時候使用 ffmpeg 轉碼,發現無法解析視頻文件,或者無法生成視頻文件,報一些不支持生成對應的視頻文件的錯誤,這個時候就需要查看當前使用的 ffmpeg 是否支對應的視頻文件格式,需要使用 ffmpeg -formats 來查看。
封裝格式/解封裝格式如下圖:
在這里插入圖片描述
注:因列表比較長,因此只截取一部分

在上面輸出的內容中,分為三部門:

  • 第一列是多媒體文件格式的 Demuxing 支持與 Muxing 支持;
  • 第二列是多媒體文件格式;
  • 第三列是文件格式的詳細說明。

1、ffmpeg 的封裝轉換

  • Avformat
  • Avcodec
  • Avutil

FFmpeg 的封裝轉換部分,主要是通過 libavformat 這部分來完成的功能,通過 libavformat 庫進行 mux 和 demux 操作,多媒體文件的格式有很多種,但是還是有好多 demux 與 mux 的操作參數是公用的,下面來詳細介紹一下這些公用的參數:

  • avioflags:format 的緩沖設置,默認為 0,就是有緩沖;
  • direct:無緩沖狀態;
  • probesize:獲得文件內容的大小;
  • formatprobesiz:設置一個獲得文件內容的大小來解析文件的 format;
  • fflags: 設置讀取或者寫出的格式的形式的標簽,分為多種方式:flush_packets,ignidx,genpts,nofillin,noparse,igndts,discardcorrupt,sortdts,keepside,fastseek,latm,nobuffer,bitexact

下面針對這些 format 讀寫方式進行一一詳解:
AVPacket(壓縮的 h264/aac),AVFrame(原始未壓縮:yuv,pcm)

  • flush_packets:立即將 packets 數據刷新入文件中;
  • genpts:輸出是產生 pts; //pts, presentation timestamp, dts:decoding timestamp
  • nofillin:不填寫可以精確計算缺失的值;
  • igndts:忽略 dts;
  • discardcorrupt:丟棄損壞的幀;
  • sortdts:嘗試以 dts 的順序為準輸出;
  • keepside:不合并數據;
  • fastseek:快速 seek,但是不夠精確;
  • latm:設置 RTP MP4_LATM 生效;
  • nobuffer:直接讀取或者寫出,不存 buffer;
  • bitexact:不寫入隨機或者不穩定的數據;
  • seek2any:支持隨意 seek,這個 seek 可以不以 keyframe 為參考;
  • analyzeduration:指定解析媒體所需要花銷的時間,這里設置的值越高,解析的越準確,如果在直播中為了降低延遲, 這個可以設置得低一些;
  • codec_whitelist:設置可以解析的 codec 的白名單;
  • format_whitelist:設置可以解析的 format 的白名單;

2、ffmpeg 的編轉碼

FFmpeg 的編解碼部分主要是通過 libavcodec 這個庫來完成的功能,通過 libavcodec 庫進行 encode 與 decode 操作,多媒體的編碼格式種類很多,但是還是有好多基本的操作參數是共同可以設置的,下面來詳細介紹一下這些公用的參數:
通過查看 ffmpeg 的 help full 參數可以看到 AVCodecContext AVOptions,在這個選項下面的所有參數均為編解碼可以使用的參數:

  • b:設置音頻與視頻碼率,可以認為是音視頻加起來的碼率,默認為 200k;使用這個參數可以根據 b:v 設置視頻碼率,b:a 設置音頻碼率;
  • ab:設置音頻的碼率, 默認是 128k;
  • g:設置視頻 GOP 大小,關鍵幀間隔,默認是 12 幀一個 gop;// r:幀率,比如 25 幀一個 gop
  • ar:設置音頻采樣率,默認為 0;
  • ac:設置音頻通道數,默認為 0;
  • bf:設置非 B 幀之間的 B 幀個數,默認為 0; // Ibbpbbpbbp, Ipppppppp
  • maxrate:最大碼率設置,與 bufsize 一同使用即可, 默認為 0;
  • minrate:最小碼率設置,配合 maxrate 與 bufsize 可以設置為 CBR 模式,平時基本沒用, 默認為 0;
  • bufsize:設置控制碼率的 buffer 的大小,默認為 0;
  • keyint_min:設置最小 IDR 幀間隔,默認為 25;// I 幀,IDR 幀不同;
  • sc_threshold:設置場景切換支持,默認為 0;
  • me_threshold:設置運動估計閥值,默認為 0;
  • mb_threshold:設置宏塊閥:threshold 值, 默認為 0;
  • profile:設置音視頻的 profile,默認為 -99;
  • level:設置音視頻的 level,默認為 -99;
  • imecode_frame_start:設置 GOP 幀的開始時間, 需要在 non-drop-frame 默認情況下使用;
  • channel_layout:設置音頻通道的布局格式;
  • threads:設置編解碼等工作的線程數;

3、ffmpeg 的基本編轉碼原理

ffmpeg 工具主要用途為編碼、解碼和轉碼,常用 ffmpeg 做的為轉碼操作,使用 ffmpeg 轉碼主要原理為:
在這里插入圖片描述

二、ffprobe 常用參數

ffprobe 常用參數比較多, 可以用過 ffprobe --help 來查看詳細的信息.

ffprobe -show_packets "input_file":查看的多媒體包信息使用 PACKET 標簽所包括起來, 其中包含的信息主要如下:

  • codec_type:多媒體類型,例如視頻包,音頻包等;
  • stream_index:多媒體的 stream 索引;
  • pts:多媒體的顯示時間值;//presentation timestamp
  • pts_time:根據不同格式計算過后的多媒體的顯示時間;
  • dts:多媒體解碼時間值; //decoding timestamp
  • duration:多媒體包占用的時間值;
  • duration_time:根據不同格式計算過后的多媒體包占用的時間值;
  • size:多媒體包的大小;
  • pos:多媒體包所在的文件偏移位置;
  • flags:多媒體包標記,關鍵包與非關鍵包的標記;

1、show_format

除了 packets 與 data 外,ffprobe 還可以分析多媒體的封裝格式,通過 show_format 參數可以查看多媒體的封裝格式,封裝格式使用 FORMAT 標簽括起來顯示:

ffprobe -show_format "input_file"

在這里插入圖片描述
通過讀取 format 信息,可以看到這個視頻文件有兩個流通道,起始時間是 0.000000,長度為 105.282000,文件大小為 21045377 字節,碼率為 1599162 字節每秒。

2、show_frames

通過 ffprobe 的 show_frames 的參數可以查看視頻文件中的幀信息, 輸出的幀信息使用 FRAME 標簽括起來

通過 -show_frames 參數查看到如圖的信息, 能夠看到每一幀的信息, 下面介紹一下重要的信息:
在這里插入圖片描述
在這里插入圖片描述

3、show_streams

通過 -show_streams 參數可以查看到多媒體文件中的流信息,流的信息使用 STREAMS 標簽括起來:

如圖所示,可以看到流的信息:
在這里插入圖片描述

4、print_format

ffprobe 使用前面的參數可以獲得到對應的 key-value,但是閱讀起來因習慣不同,所以有的人認為方便,有的人認為不方便,這樣就需要用到 ffprobe 的 print_format 參數來進行相應的格式輸出,下面舉幾種輸出的例子:

ffprobe -show_frames "input_file" -print_format json

最后一項可選:xml,json,ini,csv,flat

5、select_streams

如果只查看音頻流或視頻流,使用 select_streams 參數即可,例如只查看視頻流的 frames 信息

ffprobe -show_frames -select_streams v -of xml "input_file"

三、ffplay 的常用命令

通常使用 ffplay 作為播放器,其實 ffplay 不但可以做播放器,同樣可以作為很多圖像化音視頻數據的分析根據,通過 ffplay 可以看到視頻圖像的運動估計方向,音頻數據的波形等。

1、ffplay 常用參數

ffplay 不僅僅是播放器,同時也是測試 ffmpeg 的 codec 引擎,format 引擎,以及 filter 引擎的工具,并且也可以做可視化的媒體參數分析,可以通過 ffplay --help 進行查看:

常見參數可以手動進行嘗試:

  • 如果希望從視頻的第 30 秒開始播放,播放 10 秒鐘的文件,則可以使用如下命令:
    • ffplay -ss 30 -t 10 input.mp4
  • 如果希望視頻播放時播放器的窗口顯示標題為自定義標題,則使用如下命令:
    • ffplay -window_title "Hello World, This is a sample" output.mp4
  • 使用 ffplay 打開網絡直播流,可以使用命令:
    • ffplay -window_title "播放測試" rtmp://up.v.test.com/live/stream

2、ffplay 高級參數

通過使用 ffplay --help 參數看到幫助信息比較多,其中包含了高級參數介紹,下面詳細介紹一下
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3、ffplay 的數據可視化分析應用

使用 ffplay 除了可以播放視頻流媒體文件之外,還可以作為可視化的視頻流媒體分析工具,例如當播放音頻文件時,不確定文件的聲音是否正常,噪聲數據等分析,可以直接使用 ffplay 播放音頻文件,播放的時候將會把解碼后的音頻數據以音頻波形顯示出來:

ffplay -showmode 1 1.mp3

在這里插入圖片描述
從圖中可以看到,音頻的播放時的波形可以通過振幅顯示出來,可以用來看到音頻的播放情況


我的qq:2442391036,歡迎交流!


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166494.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166494.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166494.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【附代碼】判斷線段是否相交算法(Python,C++)

【附代碼】判斷線段是否相交算法(Python,C) 文章目錄 【附代碼】判斷線段是否相交算法(Python,C)相關文獻測試電腦配置基礎向量旋轉向量縮放向量投影推導 點乘定義推導幾何意義 叉乘定義推導幾何意義 判斷線…

四數之和java版

題目描述 給定一個包含 n 個整數的數組 nums 和一個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d ,使得 a b c d 的值與 target 相等?找出所有滿足條件且不重復的四元組。 注意:答案中不可以…

物流實時數倉:數倉搭建(ODS)

系列文章目錄 物流實時數倉:采集通道搭建 物流實時數倉:數倉搭建 文章目錄 系列文章目錄前言一、IDEA環境準備1.pom.xml2.目錄創建 二、代碼編寫1.log4j.properties2.CreateEnvUtil.java3.KafkaUtil.java4.OdsApp.java 三、代碼測試總結 前言 現在我們…

信息系統項目管理師-質量管理論文提綱

快速導航 1.信息系統項目管理師-項目整合管理 2.信息系統項目管理師-項目范圍管理 3.信息系統項目管理師-項目進度管理 4.信息系統項目管理師-項目成本管理 5.信息系統項目管理師-項目質量管理 6.信息系統項目管理師-項目資源管理 7.信息系統項目管理師-項目溝通管理 8.信息系…

當內容創作進入 AGI 時代,你也可以成為「神筆馬良」

我神筆馬良的童話故事我們或多或少都聽過,一支神筆在手,想畫什么就能畫出什么,栩栩如生。創造者的理解力、想象力和創作力都能通過這支神筆釋放。 近一年,隨著 AIGC 內容生產工具的快速出圈,有人把 Stable Diffusion、…

Sublime Text 4168最新代碼編輯

Sublime Text是一款功能強大的文本編輯器,具有以下主要功能: 支持多種編程語言的語法高亮和代碼自動完成功能,包括Python、JavaScript、HTML、CSS等。提供代碼片段(Snippet)功能,可以將常用的代碼片段保存…

JSP EL 算數運算符邏輯運算符

除了 empty 我們這邊還有一些基本的運算符 第一種 等等于 jsp代碼如下 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %> <%request.setCharacterEncoding("UTF-8");%> <!DOCTYPE html> <html> …

JVM-基礎

jdk7及以前&#xff1a; 通過-XX:PermSize 來設置永久代初始分配空間&#xff0c;默認值是20.75m -XX:MaxPermSize來設定永久代最大可分配空間&#xff0c;32位是64m&#xff0c;64位是82m jdk8及之后&#xff1a; 通過-XX:MetaspaceSize 來設置永久代初始分配空間&#xff…

概要設計文檔案例分享

1引言 1.1編寫目的 1.2項目背景 1.3參考資料 2系統總體設計 2.1整體架構 2.2整體功能架構 2.3整體技術架構 2.4運行環境設計 2.5設計目標 3系統功能模塊設計 3.1個人辦公 4性能設計 4.1響應時間 4.2并發用戶數 5接口設計 5.1接口設計原則 5.2接口實現方式 6運行設計 6.1運行模塊…

GZ031 應用軟件系統開發賽題第4套

2023年全國職業院校技能大賽 應用軟件系統開發賽項&#xff08;高職組&#xff09; 賽題第4套 工位號&#xff1a; 2023年4月 競賽說明 一、項目背景 黨的二十大報告指出&#xff0c;要加快建設制造強國、數字中國&#xff0c;推動制造業高端化、智能化、…

骨傳導耳機的優缺點都有哪些?骨傳導耳機值得入手嗎?

骨傳導耳機的優點還是很多的&#xff0c;相比于傳統耳機&#xff0c;骨傳導耳機要更值得入手&#xff01; 下面讓我們了解下骨傳導耳機的優缺點都有哪些&#xff1a; 一、優點 1、使用更安全 傳統的耳機&#xff0c;在使用時會聽不到外界的聲音&#xff0c;而骨傳導耳機通過…

“java.lang.IllegalStateException: No ConfigurableListableBeanFactory set“,缺少配置

一、錯誤分析 做品優購項目的運營商安全登錄時&#xff0c;運行項目后&#xff0c;瀏覽器訪問模板頁&#xff0c;模板頁的表格無法正常顯示&#xff0c;報錯信息如下&#xff1a; SEVERE: StandardWrapper.Throwable java.lang.IllegalStateException: No ConfigurableLista…

Java視頻流處理技術分享

引言 在現代互聯網時代&#xff0c;視頻流處理成為了許多應用的重要組成部分。無論是實時視頻聊天、在線直播還是視頻會議&#xff0c;都需要高效的視頻流處理技術來保證用戶體驗。Java作為一種強大的編程語言&#xff0c;也在視頻流處理領域發揮著重要的作用。本文將深入探討…

Linux 6.7全面改進x86 CPU微碼加載方式

導讀最近&#xff0c;社區在清理 Linux 上的 Intel/AMD x86 CPU 微代碼加載方面做了大量的工作&#xff0c;這些工作現已合并到 Linux 6.7 中。 由于在啟動時加載 CPU 微代碼對于減少不斷出現的新 CPU 安全漏洞以及有時解決功能問題非常重要&#xff0c;Thomas Gleixner 最近開…

AGV調整Matlab實現

% 用二維數組代替地圖和場地信息 % 可用場地&#xff1a;0 % 小車本身&#xff1a;1 % 貨物點及入庫點&#xff1a;2 % 地圖邊界: 100 % AGV出發區&#xff1a;11 % 監測區&#xff1a;12 % 充電區&#xff1a;13 % 生產區A1、A2&#xff1a;14 % 生產區B3、B4、B5&#xff1a…

C百題--7.輸出乘法表

1.問題描述 輸出9*9乘法表 2.解決思路 利用99乘法表行和列之間的關系&#xff0c;進行輸出 注意&#xff1a;%-2d 2代表占兩個字符&#xff1b;-代表左對齊 3.代碼實現 #include<stdio.h> int main(){for(int i1;i<9;i){for(int j1;j<i;j){printf("%d*%d…

微信小程序埋點

使用如下代碼封裝一下&#xff0c;例如封裝在log.js文件里面&#xff1a; var log wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : nullmodule.exports {debug() {if (!log) returnlog.debug.apply(log, arguments)},info() {if (!log) returnlog.info.apply(l…

深入學習pytorch筆記

兩個重要的函數 dir()&#xff1a; 一個內置函數&#xff0c;用于列出對象的所有屬性和方法 help()&#xff1a;一個內置函數&#xff0c;用于獲取關于Python對象、模塊、函數、類等的詳細信息 Dateset類 Dataset&#xff1a;pytorch中的一個類&#xff0c;開發者在訓練和…

抖音電商品牌力不足咋辦?如何升級或強開旗艦店、官方旗艦店?我們有妙招!

隨著抖音電商的發展&#xff0c;越來越多的商家蜂擁而至&#xff0c;入駐經營抖音小店... 然而我們在開店的時候&#xff0c;選擇開通官方旗艦店、旗艦店、專營店或專賣店&#xff0c;卻被系統提示為你的商標品牌力不足&#xff0c;無法開通官方旗艦店、旗艦店、專營店、專賣店…

Android手電筒、閃光燈、torch、flash

1. 僅開啟手電筒 單純的開啟手電筒我們可以使用CameraManager的.setTorchMode()方法。 cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)獲取該相機特征是否可獲取閃光燈。 CameraManager cameraManager (CameraManager) getSystemService(CAMERA_SE…