gpt4 book ai didi

java - 从 Android 设备到亚马逊网络服务器 S3 的 HTTP 直播

转载 作者:太空狗 更新时间:2023-10-29 14:14:24 26 4
gpt4 key购买 nike

我想将 android 设备捕获的视频流式传输到 amazon S3 服务器。是否只能在 java 中使用,或者我必须使用 JNI 和 FFMPEG。任何示例代码或在线教程/链接。请帮忙。

最佳答案

我实现的 HTTP 直播包括录制视频文件(mp4 或其他),然后将其链接添加到 index.m3u8 文件,然后以 tic toc 方式上传这两个文件。

Here is a project

我用它来获取基本逻辑并根据我的需要对其进行修改。这是将您的文件上传到 AWS S3 的类

package com.example.ffmpegtest;

import java.io.File;

import android.content.Context;
import android.util.Log;

import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.ProgressEvent;
import com.readystatesoftware.simpl3r.Uploader;
import com.readystatesoftware.simpl3r.Uploader.UploadProgressListener;

public class S3Client {
private static final String TAG = "S3Client";

AmazonS3Client s3;
Context c;

String bucket;

public interface S3Callback{
public void onProgress(ProgressEvent progressEvent, long bytesUploaded, int percentUploaded);
}

public S3Client(Context c, String AWS_KEY, String AWS_SECRET){
s3 = new AmazonS3Client(new BasicAWSCredentials(SECRETS.AWS_KEY, SECRETS.AWS_SECRET));
this.c = c;
}

/**
* Set the target S3 bucket of this client.
* Must be set before calling upload.
* @param bucket The name of the target S3 bucket.
*/
public void setBucket(String bucket){
this.bucket = bucket;
}

/**
* Begin an upload to S3. Returns the url to the completed upload.
* @param key Path relative to provided S3 bucket.
* @param source File reference to be uploaded.
* @param callback Callback providing upload progress.
* @return
*/
public String upload(String key, File source, final S3Callback callback){
if(bucket == null){
Log.e(TAG, "Bucket not set! Call setBucket(String bucket)");
return "";
}
Uploader uploader = new Uploader(c, s3, bucket, key, source);
uploader.setProgressListener(new UploadProgressListener() {
@Override
public void progressChanged(ProgressEvent progressEvent,
long bytesUploaded, int percentUploaded) {
if(callback != null)
callback.onProgress(progressEvent, bytesUploaded, percentUploaded);
}
});
return uploader.start();
}


}

您可以查看 HLSRecorder 和 HLSObserver 以持续记录并检查放置记录文件的目录,以便在完成后上传它们。

您的 index.m3u8 文件将如下所示

    #EXTM3U
#EXTINF:5.0,
http://s3-us-west-2.amazonaws.com/your.bukect.name/filename1.mp4
#EXTINF:5.0,
http://s3-us-west-2.amazonaws.com/your.bukect.name/filename2.mp4

5.0 是视频时长,在我的例子中是 5 秒。

关于java - 从 Android 设备到亚马逊网络服务器 S3 的 HTTP 直播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23926092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com