aws cloudfront Настройка частной потоковой передачи с использованием и создание истекающих ссылок с помощью Java

Я пытаюсь настроить безопасную потоковую передачу с помощью Amazon s3 и Cloudfront. Я выполнил следующие шаги и всегда получаю сообщение об ошибке

"поток не найден".

  1. Установите корзину s3 и загрузите mp3-файл (file.mp3) для тестирования.
  2. Создал политику доступа к источнику в облачной среде, получил Id и S3 canonicle Used Id.
  3. Учитывая S3 canonicle User Id, права на чтение для корзины s3. (Для тестирования я также дал всем разрешение на чтение.)
  4. Создан открытый / закрытый ключ RSA для облачного интерфейса.
  5. Создано распределение потоковой передачи в облачной среде с предыдущей корзиной s3 в качестве источника и доверенным подписывающим лицом в качестве себя. Результат этого запроса показывает самодоверенного подписывающего с идентификатором открытого ключа.
  6. Создан подписанный URL с использованием закрытого ключа.
  7. Создан html файл, чтобы показать этот mp3 с помощью jwplayer.

Ниже приведен код, который я использовал для создания подписанного URL-адреса источника.

    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    String distributionDomain = "sbngg4fbfkiq2.cloudfront.net";
    String privateKeyFilePath = "src/s3access/pk-APKAJRHSQBGT5CW7P2CA.der";
    String s3ObjectKey = "file.mp3";
    // Convert your DER file into a byte array.
    byte[] derPrivateKey = ServiceUtils.readInputStreamToBytes(new
            FileInputStream(privateKeyFilePath));
    String signedUrlCanned = CloudFrontService.signUrlCanned(
       s3ObjectKey, // Resource URL or Path
        "APKAJRHSQBGT5CW7P2CA.",     // Certificate identifier, 
                       // an active trusted signer for the distribution
        derPrivateKey, // DER Private key data
        new Date(112,3,29) // DateLessThan
        );
    System.out.println(signedUrlCanned);

Это дает подписанный URL. Затем я использовал следующий HTML-файл.

<html><head>
<script type='text/javascript' src='jwplayer.js'></script>
</head><body>
<div id="container">Loading the player ...</div>

<script type="text/javascript">

  jwplayer('container').setup({
    'id': 'playerID',
    'width': '352',
    'height': '240',
'provider': 'rtmp',
    'streamer': 'rtmp://sbngg4fbfkiq2.cloudfront.net/cfx/st',
    'file': 
    'file.mp3?Expires=1335637800&Signature=asSUSIbGYZP9IXnmjWIKgXMP2DCCA1B-x0mQtsQbUBFWdbKzlU~NnId8VH8T5ww8I1nbZKHWoLpGr679~QoDSMScKpVxVbyYVjQ0kn-JejzSkM6~ZEC6r8nArEdrT9R-M6EjR~IBkuPD-0qW2OUk1MBC4oiNeytIolG6IrSTGOU_&Key-Pair-Id=APKAJRHSQBGT5CW7P2CA',
'modes': [
    {
        type: 'flash', src: 'player.swf'
    } 
]
 });

</script>

</body>
</html>

Отображает кадр видео. Нажатие на кнопку воспроизведения попыталось загрузить поток, но через пару секунд он говорит

 Stream not foundfile.mp3?Expires=1335637800&Signature=asSUSIbGYZP9IXnmjWIKgXMP2DCCA1B-x0mQtsQbUBFWdbKzlU~NnId8VH8T5ww8I1nbZKHWoLpGr679~QoDSMScKpVxVbyYVjQ0kn-JejzSkM6~ZEC6r8nArEdrT9R-M6EjR~IBkuPD-0qW2OUk1MBC4oiNeytIolG6IrSTGOU_&Key-Pair-Id=APKAJRHSQBGT5CW7P2CA

Пожалуйста, помогите мне это настроить. Сообщите мне, если я что-то упустил.


person hridayesh    schedule 26.03.2012    source источник
comment
Я использовал rtmpdump для его отладки. Я получаю ошибку NetStream.Play.StreamNotFound. Если я изменю подпись так, что подпись неверна, я получаю сообщение об ошибке NetStream.Failed. Это означает, что мои подписи созданы правильно. Я использовал морошку для создания ссылок, но все равно ошибка   -  person hridayesh    schedule 27.03.2012


Ответы (1)


У меня он работает с той же настройкой, о которой я упоминал выше, но в нескольких случаях

  1. Он не работает с файлами mp3 (проверено с одним файлом, который я загрузил), но работает с видео mp4.
  2. Предположим, я создал подписанную ссылку для файла, которого нет, и попытался загрузить видео. Конечно, я получу ошибку. После этого даже я загружаю файл с тем же именем, но все равно получаю сообщение об ошибке.
person hridayesh    schedule 27.03.2012