我想在录制视频时(而不是在录制后(将数据块上传到服务器。我试着选择react-native-camera
或react-native-vision-camera
。
但据我所知,recordAsync
方法只能解决录制视频的最终版本。
有没有什么聪明的方法可以在录制过程中获取视频块或流。
还是应该使用react native fs或rn-fetch-blob
之类的东西?
===更新===
我可能会像下面的链接中那样实现它。
https://medium.com/react-native-training/build-youtube-alike-livestreams-with-react-native-8dde24adf543
如果你的问题是将一个大文件上传到服务器,也许你可以使用react原生后台上传,并显示进度通知,即使应用程序处于后台,也会上传文件。
还有一个包,通过将文件分成多个块,可以在chunck中进行上传:react native chunk upload
import ChunkUpload from 'react-native-chunk-upload';
const chunk = new ChunkUpload({
path: response.path, // Path to the file
size: 10095, // Chunk size (must be multiples of 3)
fileName: response.fileName, // Original file name
fileSize: response.size, // Original file size
// Errors
onFetchBlobError: (e) => console.log(e),
onWriteFileError: (e) => console.log(e),
});
chunk.digIn(this.upload.bind(this));
upload(file, next, retry, unlink) {
const body = new FormData();
body.append('video', file.blob); // param name
axios.post('url', body, {
headers: {
"Content-Type": "multipart/form-data",
"Accept": 'application/json',
// Customize the headers
"x-chunk-number": file.headers["x-chunk-number"],
"x-chunk-total-number": file.headers["x-chunk-total-number"],
"x-chunk-size": file.headers["x-chunk-size"],
"x-file-name": file.headers["x-file-name"],
"x-file-size": file.headers["x-file-size"],
"x-file-identity": file.headers["x-file-identity"]
}
}).then((res) => {
...
})