安裝
建議通過Composer來安裝PHP-FFMpeg
$ composer require php-ffmpeg/php-ffmpeg
基本使用
注意:tp5需要全部添加斜杠,比如:$ffmpeg = \FFMpeg\FFMpeg::create();
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('video.mpg');
$video
->filters()
->resize(new FFMpeg\Coordinate\Dimension(320, 240))
->synchronize();
$video
->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
->save('frame.jpg');
$video
->save(new FFMpeg\Format\Video\X264(), 'export-x264.mp4')
->save(new FFMpeg\Format\Video\WMV(), 'export-wmv.wmv')
->save(new FFMpeg\Format\Video\WebM(), 'export-webm.webm');
文檔
這個文檔是對API進行的引導介紹。建議去閱讀源代碼和配套的文檔。
FFMpeg
FFMpeg\FFMpeg 是操作媒體主要的對象。可以使用靜態調用FFMpeg\FFMpeg::create來創建。
$ffmpeg = FFMpeg\FFMpeg::create();
FFMpeg會自動探測 ffmpeg和ffprobe的二進制文件。如果你想給出確切的二進制文件路徑, 可以通過一個數組來設置。 A Psr\Logger\LoggerInterface can also be passed to log binary executions.
$ffmpeg = FFMpeg\FFMpeg::create(array(
'ffmpeg.binaries' => '/opt/local/ffmpeg/bin/ffmpeg',
'ffprobe.binaries' => '/opt/local/ffmpeg/bin/ffprobe',
'timeout' => 3600, // The timeout for the underlying process
'ffmpeg.threads' => 12, // The number of threads that FFMpeg should use
), $logger);
媒體操作
FFMpeg\FFMpeg根據URIs來創建媒體. URIs可以是本地的系統資源, HTTP網絡資源,FFmpeg支持的任意資源。
注意:如果你想列出你用的FFmpeg支持的所有資源類型, 使用 -protocols 命令:
ffmpeg -protocols
使用 FFMpeg\FFMpeg::open 方法來打開一個資源。
$ffmpeg->open('video.mpeg');
兩種類型的視頻可以被處理: FFMpeg\Media\Audio 和 FFMpeg\Media\Video。第三種類型 FFMpeg\Media\Frame, 可以通過視頻來處理。
Video
FFMpeg\Media\Video 可以被轉碼, ie: change codec, isolate audio or video. 幀可以提取。
轉碼
你可以通過FFMpeg\Media\Video:save方法對視頻進行轉碼,你將通過 FFMpeg\Format\FormatInterface來實現。
請注意視頻或音頻的比特率需要在格式中設置。
$format = new Format\Video\X264();
$format->on('progress', function ($video, $format, $percentage) {
echo "$percentage % transcoded";
});
$format
-> setKiloBitrate(1000)
-> setAudioChannels(2)
-> setAudioKiloBitrate(256);
$video->save($format, 'video.avi');
轉碼的過程可以被實時監控, 看下面有關Format的文檔了解更過信息。
提取圖片
你可以用FFMpeg\Media\Video::frame 方法來提取任意時間的幀畫面。
代碼返回了一個媒體文件第42秒所對應的FFMpeg\Media\Frame 實例。你可以使用 FFMpeg\Coordinate\TimeCode 作為參數, 看專業文檔了解更多。
$frame = $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(42));
$frame->save('image.jpg');
如果你想從視頻中獲取多種圖片,你可以使用下邊的過濾器
$video
->filters()
->extractMultipleFrames(FFMpeg\Filters\Video\ExtractMultipleFramesFilter::FRAMERATE_EVERY_10SEC, '/path/to/destination/folder/')
->synchronize();
$video
->save(new FFMpeg\Format\Video\X264(), '/path/to/new/file');
生成一個波
你可以使用 FFMpeg\Media\Audio::waveform 方法來從音頻文件中生成一個波。
代碼返回一個 FFMpeg\Media\Waveform 實例。你可以設置不同的尺寸作為參數, 查看API文檔了解更多。
輸出文件必須使用PNG extension.
$waveform = $audio->waveform(640, 120);
$waveform->save('waveform.png');
如果你想從視頻文件中得到一個波, 需要先把視頻文件轉換成音頻文件。
// Open your video file
$video = $ffmpeg->open( 'video.mp4' );
// Set an audio format
$audio_format = new FFMpeg\Format\Audio\Mp3();
// Extract the audio into a new file
$video->save('audio.mp3');
// Set the audio file
$audio = $ffmpeg->open( 'audio.mp3' );
// Create the waveform
$waveform = $audio->waveform();
$waveform->save( 'waveform.png' );
Filters
你可以使用 FFMpeg\Media\Video::addFilter 方法在 FFMpeg\Media\Video上使用過濾器。 視頻接受視頻和音頻的過濾器。
你可以創建你自己的過濾器并且PHP-FFMpeg也附帶了一些,你可以通過 FFMpeg\Media\Video::filters 方法來使用它們。
過濾器是可以鏈接的
$video
->filters()
->resize($dimension, $mode, $useStandards)
->framerate($framerate, $gop)
->synchronize();
旋轉
用給定的角度來旋轉視頻。
$video->filters()->rotate($angle);
$angle 的參數必須是下面的一個常量:
FFMpeg\Filters\Video\RotateFilter::ROTATE_90: 90° clockwise
FFMpeg\Filters\Video\RotateFilter::ROTATE_180: 180°
FFMpeg\Filters\Video\RotateFilter::ROTATE_270: 90° counterclockwise
調整尺寸
按照給定的尺寸調整視頻的大小。
$video->filters()->resize($dimension, $mode, $useStandards);
調整尺寸的過濾器需要三個參數:
$dimension, 一個 FFMpeg\Coordinate\Dimension實例
$mode, FFMpeg\Filters\Video\ResizeFilter::RESIZEMODE_* constants常量中的一個。
$useStandards, 是否強制使用最新的比率標準的布爾
如果你想要視頻處在一個非標準的比率, 你可以使用padding 過濾器 調整視頻大小到想要的尺寸,包上黑色的條。
$video->filters()->pad($dimension);
pad 過濾器需要一個參數 :
$dimension, FFMpeg\Coordinate\Dimension的實例
然后的話不要忘記保存。
$video->save(new FFMpeg\Format\Video\X264(), $new_file);
水印
用給定的圖片給視頻文件添加水印。
$video
->filters()
->watermark($watermarkPath, array(
'position' => 'relative',
'bottom' => 50,
'right' => 50,
));
watermark 過濾器需要兩個參數:
$watermarkPath, 你水印文件的路徑; $coordinates, 一個定義水印放置位置的數組。你可以使用相對路徑像上面展示的那樣。或者使用絕對路徑像這樣:
$video
->filters()
->watermark($watermarkPath, array(
'position' => 'absolute',
'x' => 1180,
'y' => 620,
));
幀頻
改變視頻的幀頻
$video->filters()->framerate($framerate, $gop);
framerate(幀頻)過濾器需要兩個參數:
$framerate, FFMpeg\Coordinate\Framerate的實例
$gop, a GOP value (integer)
Synchronize(同步)
同步的音頻和視頻
一些容器使用延遲可能會導致不同步的輸出。過濾器可以解決這個問題。
$video->filters()->synchronize();
Clip(修剪)
在想要的點減掉視頻。
$video->filters()->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(30), FFMpeg\Coordinate\TimeCode::fromSeconds(15));
The clip filter(修剪的過濾器)需要兩個參數:
$start, 一個FFMpeg\Coordinate\TimeCode實例, 指定開始剪切的點
$duration, 可選, 一個 FFMpeg\Coordinate\TimeCode實例, 指定要持續的時間
Audio(音頻)
FFMpeg\Media\Audio 可以被轉碼, ie: 改變編碼解碼器, 隔離視頻和音頻。幀可以被提取。
Transcoding(轉碼)
你可以用FFMpeg\Media\Audio:save 方法來給音頻文件轉碼。你可以通過FFMpeg\Format\FormatInterface 來實現。
Please note that audio kilobitrate is set on the audio format.
$ffmpeg = FFMpeg\FFMpeg::create();
$audio = $ffmpeg->open('track.mp3');
$format = new FFMpeg\Format\Audio\Flac();
$format->on('progress', function ($audio, $format, $percentage) {
echo "$percentage % transcoded";
});
$format
-> setAudioChannels(2)
-> setAudioKiloBitrate(256);
$audio->save($format, 'track.flac');
轉碼過程可以被實時監控, 看API文檔了解更多。
Filters(過濾器)
你可以用FFMpeg\Media\Audio::addFilter 在FFMpeg\Media\Audio上應用過濾器的效果。只接受音頻過濾器。
你可以創建你自己的過濾器并且PHP-FFMpeg也附帶了一些,你可以通過 FFMpeg\Media\Audio::filters 方法來使用它們。
Metadata(元數據)
向音頻文件中添加元數據。你可以數組的key=value鍵值對的形式添加你想要的元數據。如果過濾器中沒有任何參數傳遞進來,那么所有的元數據將被從輸入文件中刪除。目前支持的數據有 title, artist, album, artist, composer, track, year, description, artwork
$audio->filters()->addMetadata(["title" => "Some Title", "track" => 1]);
//remove all metadata and video streams from audio file
$audio->filters()->addMetadata();
向音頻文件中添加artwork
$audio->filters()->addMetadata(["artwork" => "/path/to/image/file.jpg"]);
注意: 當前ffmpeg (version 3.2.2) only supports 只支持 .mp3 文件的artwork輸出
Resample(重采樣)
重采樣一個音頻文件。
$audio->filters()->resample($rate);
重采樣過濾器需要兩個參數:
$rate, a valid audio sample rate value (integer)
幀
幀是視頻文件在某一個時間點的圖片,看API了解更多。
你可以使用 FFMpeg\Media\Frame::save 方法來保存幀。
$frame->save('target.jpg');
這個方法還有一個可選的布爾類型的參數。設置這個參數為true可以獲得更加精確的圖片,可能稍微花多一點的時間去執行。
Gif
GIf是從視頻文件中提取的一系列的動畫圖片。
你可以使用 FFMpeg\Media\Gif::save 方法來保存gif文件。
$video = $ffmpeg->open( '/path/to/video' );
$video
->gif(FFMpeg\Coordinate\TimeCode::fromSeconds(2), new FFMpeg\Coordinate\Dimension(640, 480), 3)
->save($new_file);
這個方法有一個可選的布爾類型的參數,就是動畫的持續時間。如果設置的話,可以得到一個確切的gif圖片。
Concatenation(串聯)
這個特性能夠讓你用混合的資源來生成一個視頻或者音頻。
現在有兩種串聯視頻的方式,根據資源的編碼解碼器。如果你的資源都是采用的同一種編碼解碼器的話,你使用 FFMpeg\Media\Concatenate::saveFromSameCodecs 更好一些。 如果你的資源采用不同的編碼解碼器, 你要用到 FFMpeg\Media\Concatenate::saveFromDifferentCodecs.
The first function will use the initial codec as the one for the generated file. With the second function, you will be able to choose which codec you want for the generated file.
You also need to pay attention to the fact that, when using the saveFromDifferentCodecs method, your files MUST have video and audio streams.
In both cases, you will have to provide an array of files.
To concatenate videos encoded with the same codec, do as follow:串聯采用相同編碼解碼器的視頻文件的話,參照下邊的方法:
// In order to instantiate the video object, you HAVE TO pass a path to a valid video file.
// We recommand that you put there the path of any of the video you want to use in this concatenation.
$video = $ffmpeg->open( '/path/to/video' );
$video
->concat(array('/path/to/video1', '/path/to/video2'))
->saveFromSameCodecs('/path/to/new_file', TRUE);
保存函數中的布爾參數能讓你使用拷貝的參數,這個參數可以大福度提高編碼文件的生成過程。
To concatenate videos encoded with the same codec, do as follow:
// In order to instantiate the video object, you HAVE TO pass a path to a valid video file.
// We recommand that you put there the path of any of the video you want to use in this concatenation.
$video = $ffmpeg->open( '/path/to/video' );
$format = new FFMpeg\Format\Video\X264();
$format->setAudioCodec("libmp3lame");
$video
->concat(array('/path/to/video1', '/path/to/video2'))
->saveFromDifferentCodecs($format, '/path/to/new_file');
在 FFMPEG中更多關于串聯的細節 可看這里 here, here and here.
Formats(格式)
格式要實現 FFMpeg\Format\FormatInterface。 用FFMpeg\Format\VideoInterface來保存視頻文件, 用 FFMpeg\Format\AudioInterface 來保存音頻文件。
FFMpeg\Format\ProgressableInterface的話可以獲得轉碼的實時信息。
預定義的格式已經提供了事件的過程信息。
$format = new Format\Video\X264();
$format->on('progress', function ($video, $format, $percentage) {
echo "$percentage % transcoded";
});
$video->save($format, 'video.avi');
為事件提供的回調函數可以隨時調用。
Add additional parameters
你可以根據你的視頻格式為你的編碼提供額外的參數。
setAdditionalParameters 方法的參數是一個數組。
$format = new Format\Video\X264();
$format->setAdditionalParameters(array('foo', 'bar'));
$video->save($format, 'video.avi');
創建你自己的格式
創建一種新的格式最簡單的方法就是集成抽象類 FFMpeg\Format\Video\DefaultVideo and FFMpeg\Format\Audio\DefaultAudio,并且實現下面的方法。
class CustomWMVFormat extends FFMpeg\Format\Video\DefaultVideo
{
public function __construct($audioCodec = 'wmav2', $videoCodec = 'wmv2')
{
$this
->setAudioCodec($audioCodec)
->setVideoCodec($videoCodec);
}
public function supportBFrames()
{
return false;
}
public function getAvailableAudioCodecs()
{
return array('wmav2');
}
public function getAvailableVideoCodecs()
{
return array('wmv2');
}
}
Coordinates(坐標)
FFMpeg 使用很多單元來確定時間和空間坐標。
FFMpeg\Coordinate\AspectRatio 表示長寬比
FFMpeg\Coordinate\Dimension 表示一個維度
FFMpeg\Coordinate\FrameRate 表示幀速率
FFMpeg\Coordinate\Point 表示一個點
FFMpeg\Coordinate\TimeCode 表示一個時間碼
FFProbe
FFMpeg\FFMpeg 內部使用FFMpeg\FFProbe來檢查媒體文件。你也可以用它提取元數據。
$ffprobe = FFMpeg\FFProbe::create();
$ffprobe
->streams('/path/to/video/mp4') // extracts streams informations
->videos() // filters video streams
->first() // returns the first video stream
->get('codec_name'); // returns the codec_name property
$ffprobe = FFMpeg\FFProbe::create();
$ffprobe
->format('/path/to/video/mp4') // extracts file informations
->get('duration'); // returns the duration property
使用 Silex Microframework
Service provider is easy to set up:
$app = new Silex\Application();
$app->register(new FFMpeg\FFMpegServiceProvider());
$video = $app['ffmpeg']->open('video.mpeg');
下面是一些可能的選項:
$app->register(new FFMpeg\FFMpegServiceProvider(), array(
'ffmpeg.configuration' => array(
'ffmpeg.threads' => 4,
'ffmpeg.timeout' => 300,
'ffmpeg.binaries' => '/opt/local/ffmpeg/bin/ffmpeg',
'ffprobe.timeout' => 30,
'ffprobe.binaries' => '/opt/local/ffmpeg/bin/ffprobe',
),
'ffmpeg.logger' => $logger,
));
- linux
- lanmp
- lanmp
- apache
- Apache2.4.x與Apache2.2.x的一些區別
- 跨域請求 Apache 服務器配置
- apache服務器安裝配置ssl數字證書,https訪問
- put請求跨區
- apache允許跨域請求 & ajax 自定義header
- 自定義header
- 安裝最新版openssl
- nginx
- 解決Nginx出現403 forbidden的方法
- nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
- 如何用linux命令查看nginx是否在正常運行
- nginx反向代理
- nginx 編譯安裝
- nginx重定向
- 一個域名對應多個vue項目
- 關于http和https允許請求設置header問題
- nginx配置ssl證書
- 配置寶塔nginx支持tp5路由規則
- nginx獲取自定義請求頭header
- mysql
- 創建還量表
- 解決Navicat 出錯:1130-host . is not allowed to connect to this MySql server,MySQL
- mysql慢查詢
- explain
- 索引
- sphinx
- coreseek(sphinx)錯誤:WARNING: attribute 'id' not found - IGNORING原因及解決方法
- coreseek在windows安裝問題和使用步驟
- coreseek常見錯誤
- coreseek php操作
- mysql5.6升級5.7.21
- sql操作
- mysql函數
- phpmyadmin上傳文件大小限制
- mysql主從復制
- 單機主從配置
- 修改mysql端口后修改相應的phpmyadmin端口
- MERGE分表
- MySQL 5.7.22 多實例安裝(二進制免編譯安裝模式)
- 解決phpmyadmin mysqli_real_connect(): (HY000/2002): No such file or directory錯誤
- Mysql服務器無法存emoji表情的解決方案
- /var/run/mysqld 目錄每次重啟后都需要手動去創建并賦權mysql用戶才能起到mysql
- mysql排序
- mysql關鍵字沖突
- mysql備份
- mysql5.7密碼修改
- 更改MySQL數據庫目錄位置
- mysql5.6安裝
- 字符集與排序規則
- mysql 鎖
- mysql事務性
- php
- centos7 升級 php 5.4 -> php5.6
- php擴展
- linux切換默認php版本(寶塔)
- vsftpd
- 關于vsftp出現Restarting vsftpd (via systemctl): Job for vsftpd.service failed because the control 的解決辦法
- vdb
- fdisk
- parted
- 磁盤小知識
- CentOS7.x系統根目錄分區擴容
- Linux 格式化分區 報錯Could not stat --- No such file or directory 和 partprobe 命令
- 添加swap交換區
- root
- Centos創建和修改用戶及密碼命令
- linux 命令終端提示符顯示-bash-4.2#解決方法
- firewall
- centOS7下安裝GUI圖形界面
- 在Linux主機上,安裝上傳下載工具包rz及sz
- ping: www.baidu.com: Name or service not known centos7
- linux中 you have newmail in /var/spool/mail/root
- CentOS7啟動SSH服務報:Job for ssh.service failed because the control process exited with error code.......
- ifconfig,netstat 命令找不到解決辦法
- CentOS7系統時間與真實時間相差8小時
- Centos7:利用crontab定時執行任務
- crontab命令
- /usr/bin/curl 執行外鏈
- speedtest-cli命令,網速測試
- yum 卸載命令
- 用戶管理
- PATH環境變量
- rpm 命令
- 防火墻和網絡的安裝
- nohup
- vim命令
- 清理緩存命令
- 錯誤集
- tar解壓包的時候出現錯誤 gzip: stdin: not in gzip format
- 在linux下創建自定義service服務
- 時鐘同步
- 查找大文件
- redis
- yum安裝
- redis主從復制
- php用法
- redis表的特性
- redis 鎖
- redis事務
- redis主從配置+哨兵模式
- redis應用場景
- redis高并發集群下常見問題
- redis思維導圖
- 腦圖1
- 腦圖2
- redis編碼
- redis字符串編碼
- hash編碼
- list編碼
- set編碼
- zset編碼
- 內存回收和內存共享
- redis小知識點
- ffmpeg
- yum安裝ffmpeg
- ffmpeg-php類庫安裝及使用
- make安裝
- WebRTC
- 房間服務器
- 信令服務器
- 打洞服務器
- PHP識別二維碼(php-zbarcode)
- centos7.4安裝Imagemagick
- 第二種方式
- linux小知識
- 查看日志命令
- linux CPU使用率過高或負載過高的處理
- swoole安裝
- mq安裝
- RabbitMQ安裝
- php-amqplib使用--基本使用
- RabbitMQ使用技巧
- tp5
- problem
- thinkphp5的mkdir() Permission denied問題
- 5.5版本以上”No input file specified“問題解決
- 路由帶參數的翻頁,第二頁無數據
- 報錯A non well formed numeric value encountered(Thinkphp5時間戳自動轉換問題)
- order排序沒反應
- tp5分頁--搜索
- tp5文件上傳---寶塔
- 小知識
- return
- volist標簽中使用eq標簽 下拉列表選中selected
- TP5寫入避免某字段重復的問題
- tp5 --url大小寫
- tp5接收數組
- json存儲與查詢
- 接收參數為null
- php替換str_replace的使用方法,支持多個替換
- postman傳數組參數
- Request 排除變量傳參
- sql連表統計查詢
- php循環
- 模型column方法
- 修改器與獲取器
- mysql數據庫group與order不能同時使用
- mysql三表查詢
- json數據
- 獲取數組第一個獲第二個元素的鍵值
- mysql除以100計算
- mysql分組統計
- tp5.1 高級查詢之 表里2字段比較大小
- whereOr()用法
- param數字參數,不能用==判斷相等,需要用=來判斷
- if判斷
- tp5隨機排序
- 短鏈接算法
- $_FILES["file"]二進制數據獲取
- 跨域
- web.config
- iis: httpd相應標頭
- thikphp模板中一維數組如何循環
- tp5 視頻上傳及自定義命名
- 搜索附近的人
- 小程序
- uploadFile:fail Error: unable to verify the first certificate
- 安卓手機打開小程序提示:request:fail ssl hand shake error
- tp5.1引入庫文件
- composer
- tp5小知識
- TP5.1隱藏public和index.php
- tp5擴展
- 二維碼
- phpexcel
- 谷歌驗證碼
- 谷歌驗證碼2
- mysql時間統計
- union合并查詢并分頁
- tp5底層框架學習
- php未知函數
- 類的知識點
- 三大設計模式
- 反射機制
- php常用內置類
- php小知識點
- 變量,函數名,參數前加&,什么意思
- PHP中 比較 0、false、null,'' "
- php小常識
- php緩存
- Trait特性
- php -- 取路徑:getcwd()、DIR、FILE 的區別
- php關于類的常用概念
- php 類與對象全面了解
- php命名空間與引入
- php常見魔法常量
- php常見魔法函數
- PHP 超級全局變量
- tp5.1本身小知識
- 框架運行流程
- 框架教程總結
- 類的自動加載
- 配置文件
- ArrayAccess用法
- yaconf學習
- yaml學習
- config類重點
- php小知識2
- 多語言切換
- jwt(token)
- redis連接池
- 百度富文本
- 圖片路徑轉換
- layui
- 復選框
- 獲取視頻第幾幀作為封面圖
- mysql查詢
- FIND_IN_SET(str,strlist)
- PHP
- 函數取整
- array
- 日期
- header
- php獲取一維,二維數組長度的方法
- php中數組和字符串的相互轉換
- php對數組開頭與末尾的元素進行插入與移除
- 隊列
- PHP substr截取中文字符出現亂碼的問題解疑
- foreach遍歷數組并添加屬性(下標)
- 數組排序
- PHP實現保留兩位小數的三種方法
- 對象轉數組
- php小知識
- 阻塞IO和非阻塞IO,異步與同步的區別
- 后臺運行
- 超時
- php 高精度計算的問題
- move_uploaded_file
- PHP SplQueue 隊列簡介
- @,&&等php符號
- PHP命令行腳本接收傳入參數的三種方式
- php執行linux命令
- 一些封裝函數
- PHP獲取文件大小
- PHP 生成隨機字符串與唯一字符串
- PHP去除emoji表情
- ip
- php把時間計算成幾分鐘前,幾小時前,幾天前的函數
- https
- ssl證書
- 遠程登入密碼和端口修改
- apache配置https
- problems
- 響應狀態status為canceled,解決辦法
- PHP Restful PUT方法的參數提交及接收
- HTTP之預檢,兩種請求
- http增刪改查理解
- js
- js數組與字符串的相互轉換
- js移除Array中指定元素
- 使用sessionStorage、localStorage存儲數組與對象
- 子頁面調用父頁面方法
- input文件上傳
- 隨機字符串
- 數組操作
- js 傳遞數組
- token接入驗證
- 用文件來保存token
- 刪除用戶資料
- 微信function
- 接入驗證及點擊事件
- 基礎token
- 獲取用戶資料
- curl
- 鏈接分享
- 網頁授權登入
- 微信被動回復用戶消息
- 生成微信二維碼
- WxPay
- 單一文件,不能加額外參數
- tp5引用微信支付官方庫文件
- 微信二維碼支付
- 其他
- 手機端發送ajax請求,后臺有可能會接收不到到請求(360瀏覽器和ie瀏覽器)
- 短信發送
- git
- postman無法正常返回結果Could not get any response
- web服務器配置
- 高并發方案
- nginx防盜鏈和限制請求速度
- 高并發概念與測試工具
- 定時秒殺方案
- web接口
- yzdd
- 接口1
- 接口2
- spx
- 接口說明
- 新聞表sbh_artnews字段說明
- 用戶表sbh_homeuser
- 用戶認證表sbh_usertrue
- txsh
- 接口_txsh_1
- chat消息格式
- 表字段
- txsh_第三方接口
- GatewayWorker
- 向對方發送消息,對方會掉線
- 負載均衡
- html
- html中引入調用另一個html的方法
- python
- linux安裝--python3.6
- Centos7卸載Python2.7之后恢復yum
- pycharm漢化
- python錯誤集
- fatal error: Python.h: No such file or directory
- Python小知識
- python中兩個重要的工具setuptools和pip的安裝
- 基礎知識點
- 學習筆記
- tornado基礎流程
- 請求與響應
- 以太坊
- 以太坊賬戶管理
- 一些方法的更新棄用
- 小知識點
- web3.eth.accounts 和 web3.eth.personal 創建account的區別
- web3.py中sendTransaction和sendRawTransaction之間的區別
- 測試網和主網區別
- 以太坊gas、gaslimit、gasPrice、gasUsed詳解
- web安全
- web滲透--全面介紹
- 大概介紹
- xss--介紹
- sql注入-介紹
- 文件上傳下載-介紹
- 越權--介紹
- xxe--介紹
- 暴力破解
- xss漏洞安全編碼系列詳解
- 反射型
- DOM型
- 存儲型
- 圖片隱寫
- sql注入詳解
- 數據庫和其他--介紹
- mysql爆破
- web安全--工具
- sqlmap
- 介紹與安裝
- sqlmap攻擊方式
- Sqlmap中的其他
- sqlmap--get攻擊
- sqlmap--post攻擊
- sqlmap--常用選項及命令
- sqlmap--詳解
- sqlmap--查看
- web安全簡單總結
- api功能擴展
- 阿里云短信
- 阿里云短信sdk新版用法
- 阿里云對象存儲 OSS
- 七牛云上傳
- qq郵箱發送短信驗證碼
- 通過ip獲取歸屬地
- 支付插件
- zoujingli
- swoole
- swoole啟動關閉方案
- swoole服務端主動推送消息
- 創建websocket--systemctl自定義啟動服務
- 創建php腳本來啟動關閉websocket服務
- swoole小知識
- 進程/線程結構圖
- 區塊鏈
- 區塊鏈概念理解
- usdt小知識點1
- 區塊鏈架構1.0、2.0與3.0梳理
- 理解usdt和代幣,智能合約,基礎貨幣
- 波場tron
- 賬號創建
- 代幣轉賬