Browse Source

调整拍照和录像功能

dev-V1.10.2-temp
wangmingyong@163.com 2 months ago
parent
commit
1f97474d18
  1. 76
      zdxt-web-client/zdxt-efcode-enterprise-app/src/util/w6sMedia.js
  2. 9
      zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/nos/components/NosDetailMaterialsTab.vue

76
zdxt-web-client/zdxt-efcode-enterprise-app/src/util/w6sMedia.js

@ -77,27 +77,40 @@ export const takePhotoWithWaterMark = async ({
await ensureW6sAuth() await ensureW6sAuth()
console.log('[w6sMedia] 鉴权完成, 准备调起拍照') console.log('[w6sMedia] 鉴权完成, 准备调起拍照')
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
w6s.image.takePhotoAndAddWaterMark({ w6s.image.takePicture({
content, editable: false,
fontSize, success: function (res) {
color,
markDisable: false,
timeEnable,
locationEnable,
success: (res) => {
console.log('[w6sMedia] takePhotoAndAddWaterMark success 原始返回:', res) console.log('[w6sMedia] takePhotoAndAddWaterMark success 原始返回:', res)
console.log('[w6sMedia] 返回字段 imageURL:', res?.imageURL, 'key:', res?.key, 'imageInfo:', res?.imageInfo) console.log('[w6sMedia] 返回字段 imageURL:', res?.imageURL, 'key:', res?.key, 'imageInfo:', res?.imageInfo)
resolve(res) resolve(res)
}, },
fail: (err) => { fail: function (err) {
console.error('[w6sMedia] takePhotoAndAddWaterMark fail:', err) console.error('[w6sMedia] takePhotoAndAddWaterMark fail:', err)
reject(err) reject(err)
}, },
}) });
// w6s.image.takePhotoAndAddWaterMark({
// content,
// fontSize,
// color,
// markDisable: false,
// timeEnable,
// locationEnable,
// success: (res) => {
// console.log('[w6sMedia] takePhotoAndAddWaterMark success 原始返回:', res)
// console.log('[w6sMedia] 返回字段 imageURL:', res?.imageURL, 'key:', res?.key, 'imageInfo:', res?.imageInfo)
// resolve(res)
// },
// fail: (err) => {
// console.error('[w6sMedia] takePhotoAndAddWaterMark fail:', err)
// reject(err)
// },
// })
}) })
} }
// 录制视频 // 录制视频(使用 Cordova 原生 Media Capture API)
export const startVideoRecorder = async ({ export const startVideoRecorder = async ({
duration = 60, duration = 60,
quality = 1, // 0 高清 / 1 一般 / 2 流畅 quality = 1, // 0 高清 / 1 一般 / 2 流畅
@ -108,20 +121,33 @@ export const startVideoRecorder = async ({
await ensureW6sAuth() await ensureW6sAuth()
console.log('[w6sMedia] 录制前鉴权完成, 准备调起录制') console.log('[w6sMedia] 录制前鉴权完成, 准备调起录制')
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
w6s.video.startVideoRecoder({ if (!navigator?.device?.capture?.captureVideo) {
duration, console.error('[w6sMedia] navigator.device.capture.captureVideo 不可用')
quality, reject(new Error('当前环境不支持视频录制'))
front, return
sync_system_album: syncSystemAlbum, }
success: (res) => { navigator.device.capture.captureVideo(
console.log('[w6sMedia] startVideoRecoder success 原始返回:', res) (mediaFiles) => {
resolve(res) console.log('[w6sMedia] captureVideo success, mediaFiles:', mediaFiles)
if (mediaFiles && mediaFiles.length > 0) {
const file = mediaFiles[0]
console.log('[w6sMedia] 视频文件: fullPath=', file.fullPath, 'name=', file.name, 'size=', file.size, 'type=', file.type)
resolve({
video_path: file.fullPath,
name: file.name,
size: file.size,
type: file.type || 'video/mp4',
})
} else {
reject(new Error('录制未生成视频文件'))
}
}, },
fail: (err) => { (error) => {
console.error('[w6sMedia] startVideoRecoder fail:', err) console.error('[w6sMedia] captureVideo fail:', error, 'code:', error?.code, 'message:', error?.message)
reject(err) reject(error)
}, },
}) { limit: 1, duration }
)
}) })
} }

9
zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/nos/components/NosDetailMaterialsTab.vue

@ -430,17 +430,18 @@ const onTakePhoto = async (item) => {
// 录制视频 // 录制视频
const onRecordVideo = async (item) => { const onRecordVideo = async (item) => {
console.log('[NosDetail] onRecordVideo 开始, item:', item)
try { try {
const res = await startVideoRecorder({ duration: 60, quality: 1 }) const res = await startVideoRecorder({ duration: 60, quality: 1 })
const info = res.info || res console.log('[NosDetail] 录制返回 res:', res, 'video_path:', res?.video_path)
await pushSdkFileToFileList(item, { await pushSdkFileToFileList(item, {
localPath: info.video_path, localPath: res.video_path,
fileName: `video-${Date.now()}.mp4`, fileName: `video-${Date.now()}.mp4`,
mimeType: 'video/mp4', mimeType: res.type || 'video/mp4',
isImage: false, isImage: false,
}) })
} catch (err) { } catch (err) {
console.error('w6s 录制失败', err) console.error('[NosDetail] w6s 录制失败:', err)
showToast('录制失败或已取消') showToast('录制失败或已取消')
} }
} }

Loading…
Cancel
Save