diff --git a/README.en.md b/README.en.md index 607f056..4ff375c 100644 --- a/README.en.md +++ b/README.en.md @@ -1,6 +1,11 @@ -# CastTrace Android +

CastTrace Android

-[简体中文](README.md) | English +

简体中文 | English

+ +

+ Android live-stream monitoring and recording
+ Manage rooms locally, monitor streams in the background, and resume interrupted recordings. +

Android checks @@ -9,12 +14,18 @@ Apache 2.0

-CastTrace is an Android application for monitoring live rooms and recording supported streams. It is built with Kotlin, Jetpack Compose, Room, WorkManager, Media3 and FFmpegKit. It manages room lists locally, monitors live status in the background, resumes interrupted recordings, collects supported chat messages, and plays saved videos. +

Download the latest APK · Contribute · Architecture

-This is an independently maintained Android project that takes inspiration from the platform recording approach in [StreamCap](https://github.com/ihmily/StreamCap). It is not an official StreamCap mobile client. A platform being supported upstream does not mean that CastTrace supports it. +## Screenshots + +

+ Live room monitoring and recording console + Live reminder list + Recording, background operation and platform settings +

+

Room monitoring · Live reminders · Recording and background settings. Click an image to view it full size.

- Screenshots · Download APK · Features · Build from source · @@ -22,13 +33,9 @@ This is an independently maintained Android project that takes inspiration from Contributing

-## Screenshots +CastTrace is built with Kotlin, Jetpack Compose, Room, WorkManager, Media3 and FFmpegKit. It also supports live reminders, chat capture and local playback. -

- Live room monitoring and recording console - Live reminder list - Recording and background operation settings -

+This is an independently maintained Android project that takes inspiration from the platform recording approach in [StreamCap](https://github.com/ihmily/StreamCap). It is not an official StreamCap mobile client. A platform being supported upstream does not mean that CastTrace supports it. ## Download diff --git a/README.md b/README.md index ae68cd2..1237feb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ -# CastTrace Android +

CastTrace Android

-[简体中文](README.md) | [English](README.en.md) +

简体中文 | English

+ +

+ Android 多平台直播监控与录制
+ 本机管理直播间,后台监控开播,自动录制并恢复中断任务。 +

Android checks @@ -10,12 +15,18 @@ Apache 2.0

-CastTrace 是一款 Android 多平台直播监控和录制工具,使用 Kotlin、Jetpack Compose、Room、WorkManager、Media3 和 FFmpegKit 构建。它可在本机管理直播间、后台监控开播、自动录制与恢复,并支持直播提醒、弹幕采集和本地播放。 +

下载最新版 APK · 参与开发 · 架构说明

-本项目参考了 [StreamCap](https://github.com/ihmily/StreamCap) 的平台录制思路,是独立维护的 Android 项目,并非 StreamCap 官方移动端;上游平台支持范围不代表本项目全部支持。 +## 界面截图 + +

+ 直播间监控和录制控制台 + 开播提醒列表 + 录制、后台运行和平台设置 +

+

直播间监控台 · 开播提醒 · 录制与后台设置。点击图片可查看原尺寸。

- 界面截图 · 下载 APK · 功能 · 从源码构建 · @@ -23,13 +34,9 @@ CastTrace 是一款 Android 多平台直播监控和录制工具,使用 Kotlin 参与和反馈

-## 界面截图 +CastTrace 使用 Kotlin、Jetpack Compose、Room、WorkManager、Media3 和 FFmpegKit 构建,支持直播提醒、弹幕采集与本地播放。 -

- 直播间监控和录制控制台 - 开播提醒列表 - 录制和后台运行设置 -

+本项目参考了 [StreamCap](https://github.com/ihmily/StreamCap) 的平台录制思路,是独立维护的 Android 项目,并非 StreamCap 官方移动端;上游平台支持范围不代表本项目全部支持。 ## 下载 APK diff --git a/scripts/build_ffmpeg_source.sh b/scripts/build_ffmpeg_source.sh old mode 100644 new mode 100755 index b598704..dd402d6 --- a/scripts/build_ffmpeg_source.sh +++ b/scripts/build_ffmpeg_source.sh @@ -1,48 +1,48 @@ -#!/usr/bin/env bash -set -euo pipefail - -ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -OUT="$ROOT/build/compliance/ffmpeg-7.1.6" -mkdir -p "$OUT" "$ROOT/build" - -BUILD_COMMIT="$(python3 -c 'import json, pathlib, sys; print(json.loads((pathlib.Path(sys.argv[1]) / "third_party/ffmpeg/source-build.json").read_text())["upstreamBuildCommit"])' "$ROOT")" -WORKSPACE="$(mktemp -d "$ROOT/build/ffmpeg-source-build.XXXXXX")" -SOURCE="$WORKSPACE/ffmpegkit" -trap 'printf "FFmpeg source build workspace: %s\n" "$WORKSPACE"' EXIT - -git init -q "$SOURCE" -git -C "$SOURCE" remote add origin https://github.com/ffmpegkit-maintained/ffmpeg.git -git -C "$SOURCE" fetch --depth=1 origin "$BUILD_COMMIT" -git -C "$SOURCE" checkout --detach FETCH_HEAD - -for patch in "$ROOT"/third_party/ffmpeg/patches/*.patch; do - git -C "$SOURCE" apply --check "$patch" - git -C "$SOURCE" apply "$patch" -done - -export ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT:-${ANDROID_HOME:-}}" -if [[ -z "$ANDROID_SDK_ROOT" ]]; then - echo "ANDROID_SDK_ROOT or ANDROID_HOME must point to the Android SDK." >&2 - exit 1 -fi -if [[ -z "${ANDROID_NDK_ROOT:-}" ]]; then - ANDROID_NDK_ROOT="$ANDROID_SDK_ROOT/ndk/26.2.11394342" -fi -export ANDROID_NDK_ROOT -if [[ ! -f "$ANDROID_NDK_ROOT/source.properties" ]]; then - echo "Android NDK r26c was not found at $ANDROID_NDK_ROOT." >&2 - exit 1 -fi - -cd "$SOURCE/android-7.1-lts" -./android.sh --enable-gnutls --enable-gmp \ - --enable-android-media-codec --enable-android-zlib \ - --disable-arm-v7a --disable-arm-v7a-neon --disable-x86 - -AAR="$SOURCE/android-7.1-lts/prebuilt/bundle-android-aar/ffmpeg-kit/ffmpeg-kit.aar" -if [[ ! -s "$AAR" ]]; then - echo "The FFmpegKit source build did not produce an AAR." >&2 - exit 1 -fi -cp "$AAR" "$OUT/ffmpeg-kit-https-7.1.6.aar" -sha256sum "$OUT/ffmpeg-kit-https-7.1.6.aar" +#!/usr/bin/env bash +set -euo pipefail + +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +OUT="$ROOT/build/compliance/ffmpeg-7.1.6" +mkdir -p "$OUT" "$ROOT/build" + +BUILD_COMMIT="$(python3 -c 'import json, pathlib, sys; print(json.loads((pathlib.Path(sys.argv[1]) / "third_party/ffmpeg/source-build.json").read_text())["upstreamBuildCommit"])' "$ROOT")" +WORKSPACE="$(mktemp -d "$ROOT/build/ffmpeg-source-build.XXXXXX")" +SOURCE="$WORKSPACE/ffmpegkit" +trap 'printf "FFmpeg source build workspace: %s\n" "$WORKSPACE"' EXIT + +git init -q "$SOURCE" +git -C "$SOURCE" remote add origin https://github.com/ffmpegkit-maintained/ffmpeg.git +git -C "$SOURCE" fetch --depth=1 origin "$BUILD_COMMIT" +git -C "$SOURCE" checkout --detach FETCH_HEAD + +for patch in "$ROOT"/third_party/ffmpeg/patches/*.patch; do + git -C "$SOURCE" apply --unidiff-zero --check "$patch" + git -C "$SOURCE" apply --unidiff-zero "$patch" +done + +export ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT:-${ANDROID_HOME:-}}" +if [[ -z "$ANDROID_SDK_ROOT" ]]; then + echo "ANDROID_SDK_ROOT or ANDROID_HOME must point to the Android SDK." >&2 + exit 1 +fi +if [[ -z "${ANDROID_NDK_ROOT:-}" ]]; then + ANDROID_NDK_ROOT="$ANDROID_SDK_ROOT/ndk/26.2.11394342" +fi +export ANDROID_NDK_ROOT +if [[ ! -f "$ANDROID_NDK_ROOT/source.properties" ]]; then + echo "Android NDK r26c was not found at $ANDROID_NDK_ROOT." >&2 + exit 1 +fi + +cd "$SOURCE/android-7.1-lts" +./android.sh --enable-gnutls --enable-gmp \ + --enable-android-media-codec --enable-android-zlib \ + --disable-arm-v7a --disable-arm-v7a-neon --disable-x86 + +AAR="$SOURCE/android-7.1-lts/prebuilt/bundle-android-aar/ffmpeg-kit/ffmpeg-kit.aar" +if [[ ! -s "$AAR" ]]; then + echo "The FFmpegKit source build did not produce an AAR." >&2 + exit 1 +fi +cp "$AAR" "$OUT/ffmpeg-kit-https-7.1.6.aar" +sha256sum "$OUT/ffmpeg-kit-https-7.1.6.aar"