Java 从android设备到amazon web服务器S3的HTTP实时流媒体

Java 从android设备到amazon web服务器S3的HTTP实时流媒体,java,android,ffmpeg,java-native-interface,http-live-streaming,Java,Android,Ffmpeg,Java Native Interface,Http Live Streaming,我想将android设备捕获的视频流传输到AmazonS3服务器。这只可能在java中实现,还是我必须使用JNI和FFMPEG。任何示例代码或在线教程/链接。帮助plz。我实施的HTTP直播包括录制视频文件(mp4或其他),然后将其链接添加到index.m3u8文件,然后以tic-toc方式上载这两个文件 我用它来获取基本逻辑,并根据需要进行修改。这是将您的文件上载到AWS S3的类 package com.example.ffmpegtest; import java.io.File;

我想将android设备捕获的视频流传输到AmazonS3服务器。这只可能在java中实现,还是我必须使用JNI和FFMPEG。任何示例代码或在线教程/链接。帮助plz。

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

我用它来获取基本逻辑,并根据需要进行修改。这是将您的文件上载到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秒。

这是可能的,但您没有提供足够的信息。首先指定需要支持的编解码器。Android设备默认支持的任何编解码器,也可以在3gp或mp4等iOS设备上播放。我已经搜索了一个多星期了。你能帮我做这个吗?