EFV Framework-Updates, FluentAPI und CMS API2 bietet gemeinsam Dienstleistungen, minimalisierte Funktionen Modulierung, Holzfreie Einbindung, 6 FLUENTAPI und vollständige Set CMS API2
Zum letzten Mal gesagt EFV Das System wird die Architektur neu entwerfen und in zwei Teile aufgeteilt, teilweise FLuentAPI Video-Verarbeitung für alle relevanten API Sie können sich selbst anrufen, oder jedes Programm kann überall aufgerufen werden CMS API2 Dieser Teil API Das vollständige Inhalt ist relevant API entweder einloggen, registrieren oder video-daten fragen Wiedergabe beliebt, kaufen VIP Einkaufspunkte, Abrechnung und Zahlung sind vollständig bereitgestellt CMS Anrufe zu nehmen APP Die Anrufe sind sehr einfach, jeder braucht nur diese Sache API Sie können die gewünschten Front oder APP Kein Widerstand.
Architekturkarte

Aktualisieren von Inhalt
-
- Die gesamte Ausführung abgeschlossen
CMS APIumfasst die gesamte Inhalte in Richtung Inhalt, und damit eine vollständige kommerziell verfügbarefluttergeschriebenAPP.
- Die gesamte Ausführung abgeschlossen
-
- Ein Handelsniveau
fluttergeschriebenAPPDer Quellcode ist vollständig abgeschlossen, der letzte Test wird durchgeführt, die Blütenabschnitte verweigert und mit intelligenten Empfehlungsalgoritmen undCMS API2Gemeinsam abgeschlossen, das Originalsystem60↓ ↓120Eine gute Erfahrung, nichtweexUnd jederh5Die Konstruktion kann vergleichbar sein.
- Ein Handelsniveau
-
- Es ist abgeschlossen
6EineFlent APIDieses MalAPIDazu gehören: Erzeugen von einzelnen Bildschriften, Massenbildschriften erzeugen, dynamische Bilder erstellen und Tests sehenm3u8Inhalte nach Serverm3u8In Echtzeit synthetisiertmp4Erhalten Sie ein VideometadataVorherige Informationen .
- Es ist abgeschlossen
-
- Auf der Grundlage des dynamischen Bildes erzeugen Sie eine Prüfung
m3u8In Echtzeit dynamische Bilder erstellenFLUENTapiEs wurde gegen Dritte abgeschlossenm3u8Unterstützt und unterstützt Drittem3u8Sie unterstützen auch die Prüffunktion auf dem Router-Zugehörigkeitsstand.
- Auf der Grundlage des dynamischen Bildes erzeugen Sie eine Prüfung
Fluent API
Diesmal ist es nur noch vorstellbar, dass dies abgeschlossen wird Fluent API Hier gibt es zum Beispiel Ferndateien Transkodierung hinzufügen Hinzufügen von Wasserzeichen hinzufügen Entfernung von Wasserzeichen Modelle, hinzufügen Laufschrift Warten API.
Ein Tipp: Alle unten API Es ist nicht nur für Video-Dateien auf dem Server verfügbar, sondern auch für Videodateien in jeder Form von Fernverbindung.
Erstellen eines Einzelbildes
post: /apifluent/screenshot
body: {
apikey,
apisecret,
path, // 支持服务器视频文件绝对路径,服务器视频相对路径,服务器源码目录相对路径,远程m3u8连接,远程视频文件链接等。
duration, // 需要截图视频什么时间的画面,单位是秒。
}
response: {
success: 0|1, // 成功或者失败
error, // 如果失败会返回错误信息。
screenshot, // 截图的链接。
}
path Unterstütztes Format:"/path/2.m3u8"、"./public/videos/3.mp4"、"public/videos/4.m3u8", “https://www.leimulamu.com/videos/202006/12/5ed37e23d6334d5540c43b00/d1052c/index.m3u8“,
“https://www.moemv.com/videos/6.mp4“
Alle unten API Wenn es gibt path Das sind die Parameter, das ist das Format.
Menge Bild erzeugt
post: /apifluent/screenshots
body: {
apikey,
apisecret,
path,
counts //截图数量,会根据视频时间轴,均分截取,比如10秒视频,设置counts为3,则可能截图3,6,9秒的画面。
}
response: {
success: 0|1,
error, //如果有错误信息会返回错误信息。
screenshots, //数组,包含所有截图链接。
}
Dynamische Karte erzeugen
post: /apifluent/togif
data: {
apikey,
apisecret,
path, //必填,下面的参数选填。
duration, // 生成多少秒动态图,默认1秒
width, //动态图宽度,高度自适应, 默认400宽度
gifstart, // 从视频多少秒开始生成, 默认10秒
auto //是否自动截取视频最中间位置,接收1或0,设置了auto,则gifstart是否设置都无效,默认是0。
}
response: {
success: 0|1,
error,
gif //动态图链接
}
Video-Informationen zu erhalten, das heißt Metadateninformationen
post: /apifluent/metadata
body: {
apikey,
apisecret,
path
}
response: {
success: 1|0,
error,
data // 视频的各种信息,包括音频流,视频流等。
}
data样式:
{
"success": 1,
"data": {
"streams": [
{
"index": 0,
"codec_name": "h264",
"codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
"profile": "High",
"codec_type": "video",
"codec_time_base": "1/48",
"codec_tag_string": "avc1",
"codec_tag": "0x31637661",
"width": 854,
"height": 480,
"coded_width": 864,
"coded_height": 480,
"has_b_frames": 2,
"sample_aspect_ratio": "N/A",
"display_aspect_ratio": "N/A",
"pix_fmt": "yuv420p",
"level": 30,
"color_range": "unknown",
"color_space": "unknown",
"color_transfer": "unknown",
"color_primaries": "unknown",
"chroma_location": "left",
"field_order": "unknown",
"timecode": "N/A",
"refs": 1,
"is_avc": "true",
"nal_length_size": 4,
"id": "N/A",
"r_frame_rate": "24/1",
"avg_frame_rate": "24/1",
"time_base": "1/24",
"start_pts": 0,
"start_time": 0,
"duration_ts": 1253,
"duration": 52.208333,
"bit_rate": 537875,
"max_bit_rate": "N/A",
"bits_per_raw_sample": 8,
"nb_frames": 1253,
"nb_read_frames": "N/A",
"nb_read_packets": "N/A",
"tags": {
"creation_time": "1970-01-01T00:00:00.000000Z",
"language": "und",
"handler_name": "VideoHandler"
},
"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
}
},
{
"index": 1,
"codec_name": "aac",
"codec_long_name": "AAC (Advanced Audio Coding)",
"profile": "LC",
"codec_type": "audio",
"codec_time_base": "1/48000",
"codec_tag_string": "mp4a",
"codec_tag": "0x6134706d",
"sample_fmt": "fltp",
"sample_rate": 48000,
"channels": 2,
"channel_layout": "stereo",
"bits_per_sample": 0,
"id": "N/A",
"r_frame_rate": "0/0",
"avg_frame_rate": "0/0",
"time_base": "1/48000",
"start_pts": 0,
"start_time": 0,
"duration_ts": 2493440,
"duration": 51.946667,
"bit_rate": 126694,
"max_bit_rate": 128000,
"bits_per_raw_sample": "N/A",
"nb_frames": 2435,
"nb_read_frames": "N/A",
"nb_read_packets": "N/A",
"tags": {
"creation_time": "1970-01-01T00:00:00.000000Z",
"language": "und",
"handler_name": "SoundHandler"
},
"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
}
}
],
"format": {
"filename": "https://media.w3.org/2010/05/sintel/trailer.mp4",
"nb_streams": 2,
"nb_programs": 0,
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"format_long_name": "QuickTime / MOV",
"start_time": 0,
"duration": 52.209,
"size": 4372373,
"bit_rate": 669979,
"probe_score": 100,
"tags": {
"major_brand": "isom",
"minor_version": "512",
"compatible_brands": "isomiso2avc1mp41",
"creation_time": "1970-01-01T00:00:00.000000Z",
"title": "Sintel Trailer",
"artist": "Durian Open Movie Team",
"encoder": "Lavf52.62.0",
"copyright": "(c) copyright Blender Foundation | durian.blender.org",
"description": "Trailer for the Sintel open movie project"
}
},
"chapters": []
}
}
Erhalten Sie einen Test m3u8 Format Text
GET /apifluent/try
headers: {
apikey,
apisecret,
}
query: {
id:视频ID,
duration:试看时长,
hd:指定分辨率,
}
response: m3u8文本 //获取到文本可自行组装自己的m3u8路由。
Auf Basis von Video-ID und Resolution in Echtzeit MP4 erzeugt
post: /apifluent/savestream
data: {
apikey,
apisecret,
id, //视频库中存在的转码完成的id,
hd //指定生成某分辨率,支持240,360,480,640,720,1080,1440,20000
}
response: {
success: 1|0,
host, // 服务端域名
path, // mp4链接
message // 显示信息
}
此API可用于提供下载功能时,无需保存mp4,完全实时根据m3u8生成mp4文件,并且返回,秒级反馈。


