- Notifications
You must be signed in to change notification settings - Fork23
Amazon Kinesis Video Streams Media Interface provides abstract interfaces for board specific media APIs. This repository also contains boards sensors/encoder implementations for Amazon Kinesis Video Streams Producer and WebRTC with out-of-box samples.
License
aws-samples/amazon-kinesis-video-streams-media-interface
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Amazon Kinesis Video Streams Media Interface provides abstract interfaces for board specific media APIs. This repository also contains boards sensors/encoder implementations for Amazon Kinesis Video Streams Producer and WebRTC with out-of-box samples.
| Name | Description | CMake Parameter | Status |
|---|---|---|---|
| FILE | Dummy boards that can capture fromsample frames | -DBOARD=FILE | |
| x86/x64 | Capture from V4L2 device or capture fromsample frames | -DBOARD=V4L2or -DBOARD=FILE | |
| Raspberry Pi | Capture from V4L2 device or capture fromsample frames | -DBOARD=V4L2or -DBOARD=FILE | |
| Gstreamer | Capture from Gstreamer pipeline | -DBOARD=GSTREAMER | |
| Qualcomm QCS610 | IPC SoC designed by Qualcomm | -DBOARD=QCS610 | |
| Ingenic T31 | IPC SoC designed by Ingenic | -DBOARD=T31 | |
| Fullhan FH8626V100 | IPC SoC designed by Fullhan | -DBOARD=FH8626V100 | |
| Anyka AK3918 | IPC SoC designed by Anyka | -DBOARD=AK3918 | |
| Amlogic C302 | IPC SoC designed by Amlogic | -DBOARD=C302 | |
| Eeasy SV82x | IPC SoC designed by Eeasy | -DBOARD=SV82x |
- Prepare the AWS credentials
- If you want to use AWS access key id/access key secrets, you can generate AWS credentials by AWS IAM console.
- Alternatively if you want to use AWS IoT Certificate, you can generate AWS credentials by using thisscript
- Clone the code:
git clone https://github.com/aws-samples/amazon-kinesis-video-streams-media-interface.git
- Copy SoC SDK dependencies into3rdparty/$BOARD/. See3rdparty/README.md.
- Build the code:
export CC=${YOUR_C_TOOLCHAIN}export CXX=${YOUR_CXX_TOOLCHAIN}cd amazon-kinesis-video-streams-media-interfacemkdir build;cd build; cmake .. -DBOARD=${YOUR_BOARD_NAME}make
Upload built artifacts(i.e kvswebrtcmaster-static) atamazon-kinesis-video-streams-media-interface/build/samples/webrtc/ to your board.
Setup AWS credentials in environment variables.
- If you want to use AWS access key id/access key secrets, use following commands to setup environment variables:
export AWS_KVS_LOG_LEVEL=2export AWS_DEFAULT_REGION=us-east-1export AWS_KVS_CACERT_PATH=rootca.pemexport AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxxexport AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Replace AWS_DEFAULT_REGION, AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY with your own credentials
You can use Root CA inresources/certs/rootca.pem, or you can download it fromAmazon Trust Services
- Alternatively if you want to use AWS IoT Certificate, turn on
IOT_CORE_ENABLE_CREDENTIALSinSamples.h and using following commands to setup environment variables:
export AWS_KVS_LOG_LEVEL=2export AWS_DEFAULT_REGION=us-east-1export AWS_KVS_CACERT_PATH=rootca.pemexport AWS_IOT_CORE_THING_NAME=your_camera_nameexport AWS_IOT_CORE_CREDENTIAL_ENDPOINT=xxxxxxxxxxxxxx.credentials.iot.us-east-1.amazonaws.comexport AWS_IOT_CORE_CERT=your_camera_certificate.pemexport AWS_IOT_CORE_PRIVATE_KEY=your_camera_private.keyexport AWS_IOT_CORE_ROLE_ALIAS=your_camera_role_alias
You can use Root CA inresources/certs/rootca.pem, or you can download it fromAmazon Trust Services
Make sure your the system time on your board has been synchronized. You may set it manually or use ntp client.
If you are using access key id/access key secret, execute sample with channel name as parameter:
./kvswebrtcmaster-static your_channel_name. If you are using AWS IoT Certificate, execute sample on your board directly:./kvswebrtcmaster-static.Check WebRTC live stream via AWS console orAWS WebRTC test page
Browser should work as viewer mode during test.
- Clone the code:
git clone https://github.com/aws-samples/amazon-kinesis-video-streams-media-interface.git
- Copy SoC SDK dependencies into3rdparty/$BOARD/. See3rdparty/README.md.
- Build the code:
export CC=${YOUR_C_TOOLCHAIN}export CXX=${YOUR_CXX_TOOLCHAIN}cd amazon-kinesis-video-streams-media-interfacemkdir build;cd build; cmake .. -DBUILD_WEBRTC_SAMPLES=OFF -DBUILD_KVS_SAMPLES=ON -DBOARD=${YOUR_BOARD_NAME}make
- Upload built artifacts(i.e kvsproducer-static) atamazon-kinesis-video-streams-media-interface/build/samples/kvs/ to your board.
- Setup AWS credentials.
- If you want to use AWS access key id/access key secrets, use following commands to setup environment variables:
export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxxexport AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxexport AWS_DEFAULT_REGION=us-east-1
- Alternatively if you want to use AWS IoT Certificate, turn on
ENABLE_IOT_CREDENTIALinsamples/kvsproducer/source/sample_config.h and using following commands to setup environment variables:
#defineENABLE_IOT_CREDENTIAL 1
export AWS_KVS_LOG_LEVEL=2export AWS_DEFAULT_REGION=us-east-1export AWS_KVS_CACERT_PATH=rootca.pemexport AWS_IOT_CORE_THING_NAME=your_camera_nameexport AWS_IOT_CORE_CREDENTIAL_ENDPOINT=xxxxxxxxxxxxxx.credentials.iot.us-east-1.amazonaws.comexport AWS_IOT_CORE_CERT=your_camera_certificate.pemexport AWS_IOT_CORE_PRIVATE_KEY=your_camera_private.keyexport AWS_IOT_CORE_ROLE_ALIAS=your_camera_role_alias
- Make sure your the system time on your board has been synchronized. You may set it manually or use ntp client.
- Execute sample on your board:
./kvsproducer-static $YOUR_STREAM_NAME - Check DASH live stream viaAWS KVS test page
- Download video clips via AWS console.
In current stage, browser doesn't support G.711 via HLS/DASH. To verify audio content in G.711 formats, user must download video clips.
- Clone the code:
git clone https://github.com/aws-samples/amazon-kinesis-video-streams-media-interface.git- Copy SoC SDK dependencies into3rdparty/$BOARD/. See3rdparty/README.md.
- Build the code:
export CC=${YOUR_C_TOOLCHAIN}export CXX=${YOUR_CXX_TOOLCHAIN}cd amazon-kinesis-video-streams-media-interfacemkdir build;cd build; cmake .. -DBUILD_WEBRTC_SAMPLES=OFF -DBUILD_SAVE_FRAME_SAMPLES=ON -DBOARD=${YOUR_BOARD_NAME}make
- Execute sample on your board:
./saveframe-static $FILE_NAME
To cross compileFILE board sample, user need to setupCC,CXX,USE_MUCLIBC andBOARD_DESTINATION_PLATFORM.
For ARM boards with uclibc:
export CC=${YOUR_C_TOOLCHAIN}export CXX=${YOUR_CXX_TOOLCHAIN}cd amazon-kinesis-video-streams-media-interfacemkdir build;cd buildcmake .. -DBOARD=FILE -DUSE_MUCLIBC=ON -DBOARD_DESTINATION_PLATFORM=arm-unknown-linux-uclibc
If board is using glibc, use cmake command
cmake .. -DBOARD=FILE -DUSE_MUCLIBC=OFF -DBOARD_DESTINATION_PLATFORM=arm-unknown-linux-gnuinstead.
For MIPS boards with uclibc:
export CC=${YOUR_C_TOOLCHAIN}export CXX=${YOUR_CXX_TOOLCHAIN}cd amazon-kinesis-video-streams-media-interfacemkdir build;cd buildcmake .. -DBOARD=FILE -DUSE_MUCLIBC=ON -DBOARD_DESTINATION_PLATFORM=mips-unknown-linux-uclibc
If board is using glibc, use cmake command
cmake .. -DBOARD=FILE -DUSE_MUCLIBC=OFF -DBOARD_DESTINATION_PLATFORM=mips-unknown-linux-gnuinstead.
To adapt other platforms SDKs withAmazon Kinesis Video Streams Media Interface, you need to implement interfaces ininclude/com/amazonaws/kinesis/video/capturer/VideoCapturer.h,include/com/amazonaws/kinesis/video/capturer/AudioCapturer.h andinclude/com/amazonaws/kinesis/video/player/AudioPlayer.h:
- VideoCapturer.h: abstract interfaces defined for video capturer sensor/encoder.
- AudioCapturer.h: abstract interfaces defined for audio capturer sensor/encoder.
- AudioPlayer.h: abstract interfaces defined for audio playback sensor/encoder.
The implementations of those interfaces should be put intosource/${BOARD_NAME} and follow the name rules:
${BOARD_NAME}VideoCapturer.c${BOARD_NAME}AudioCapturer.c${BOARD_NAME}AudioPlayer.c
After implementation, you also need to create a platform specific CMake file inCMake named as${BOARD_NAME}.cmake:
if(BOARDSTREQUAL"BOARD_NAME") set(BOARD_SDK_DIR${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/${BOARD})# Add board related SDK sources here set(BOARD_SRCS )# Add board related SDK header here set(BOARD_INCS_DIR${BOARD_SDK_DIR}/include/${BOARD_SDK_DIR}/samples/libimp-samples/ )# Add board related SDK lib here set(BOARD_LIBS_SHARED ) set(BOARD_LIBS_STATIC )endif()
About
Amazon Kinesis Video Streams Media Interface provides abstract interfaces for board specific media APIs. This repository also contains boards sensors/encoder implementations for Amazon Kinesis Video Streams Producer and WebRTC with out-of-box samples.
Topics
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors10
Uh oh!
There was an error while loading.Please reload this page.