# setup-youtube-stream

### 🎬 Lựa chọn 1: OBS Studio (Khuyến nghị - Chuyên nghiệp nhất)

#### Cài đặt OBS Studio

bash Copy

```bash
# Cách 1: Từ PPA chính thức (khuyến nghị cho Ubuntu)
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt update
sudo apt install obs-studio -y

# Cách 2: Từ Snap
sudo snap install obs-studio

# Cách 3: Từ Flatpak
flatpak install flathub com.obsproject.Studio
```

Theo OBS Project , OBS Studio là phần mềm stream/record miễn phí, mã nguồn mở, hỗ trợ đa nền tảng.

#### Cấu hình stream YouTube

1. **Mở OBS Studio**
2. **Settings** → **Stream**:
   * **Service**: YouTube / YouTube - RTMPS
   * **Server**: Primary YouTube ingest server
   * **Stream Key**: Lấy từ [YouTube Studio](https://studio.youtube.com) → Go Live → Stream
3. **Settings** → **Output**:
   * **Video Bitrate**: 2500-6000 Kbps (tùy mạng)
   * **Encoder**: x264 hoặc NVENC (nếu có GPU NVIDIA)
4. **Settings** → **Video**:
   * **Base Resolution**: 1920x1080
   * **Output Resolution**: 1280x720 (hoặc 1920x1080)
   * **FPS**: 30 hoặc 60
5. **Sources** → **+** → **Screen Capture** để chọn màn hình stream

***

### 🖥️ Lựa chọn 2: FFmpeg (Dòng lệnh - Nhẹ, tự động hóa)

#### Cài đặt FFmpeg

bash Copy

```bash
sudo apt update
sudo apt install ffmpeg -y
```

#### Stream màn hình + audio lên YouTube

bash Copy

```bash
# Lấy stream key từ YouTube Studio trước
STREAM_KEY="your-stream-key-here"

# Stream màn hình full HD với audio
ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0 \
-f pulse -i default \
-c:v libx264 -preset fast -pix_fmt yuv420p -maxrate 3000k -bufsize 6000k -g 60 \
-c:a aac -b:a 128k -ar 44100 \
-f flv rtmp://a.rtmp.youtube.com/live2/$STREAM_KEY
```

**Giải thích tham số** :

* `-f x11grab`: Bắt màn hình X11
* `-framerate 30`: 30 FPS
* `-video_size 1920x1080`: Độ phân giải
* `-i :0.0`: Màn hình đầu tiên
* `-f pulse -i default`: Ghi âm từ PulseAudio (desktop audio)
* `-preset fast`: Tốc độ encode (ultrafast → veryslow)
* `-maxrate 3000k`: Bitrate tối đa
* `-g 60`: Keyframe mỗi 2 giây (60/30fps)

#### Script tự động stream

Tạo file `youtube_stream.sh`:bash Copy

```bash
#!/bin/bash

# Cấu hình
STREAM_KEY="xxxx-xxxx-xxxx-xxxx-xxxx"  # Thay bằng stream key của bạn
RESOLUTION="1920x1080"
FPS="30"
BITRATE="3000k"

# Kiểm tra stream key
if [ "$STREAM_KEY" = "xxxx-xxxx-xxxx-xxxx-xxxx" ]; then
    echo "❌ Vui lòng cập nhật STREAM_KEY trong script!"
    exit 1
fi

echo "🎬 Bắt đầu stream lên YouTube..."
echo "📺 Resolution: $RESOLUTION | 🎞️ FPS: $FPS | 📊 Bitrate: $BITRATE"

ffmpeg -f x11grab -framerate $FPS -video_size $RESOLUTION -i :0.0 \
-f pulse -i default \
-c:v libx264 -preset fast -pix_fmt yuv420p \
-maxrate $BITRATE -bufsize $((${BITRATE%k}*2))k \
-g $((FPS*2)) \
-c:a aac -b:a 128k -ar 44100 \
-f flv rtmp://a.rtmp.youtube.com/live2/$STREAM_KEY

echo "🛑 Stream đã dừng"
```

Chạy script:bash Copy

```bash
chmod +x youtube_stream.sh
./youtube_stream.sh
```

***

### 📹 Lựa chọn 3: SimpleScreenRecorder + FFmpeg

SimpleScreenRecorder không stream trực tiếp được , nhưng có thể kết hợp với FFmpeg:bash Copy

```bash
# Cài đặt SimpleScreenRecorder
sudo apt install simplescreenrecorder -y

# Ghi màn hình ra file, sau đó stream file đó
ffmpeg -re -i recorded_video.mp4 -c:v libx264 -preset fast -c:a aac -f flv rtmp://a.rtmp.youtube.com/live2/KEY
```

***

### 🎯 Lựa chọn 4: YouTube Live Streamer (Snap - Đơn giản cho IP Cam)

Nếu bạn muốn stream từ camera IP hoặc nguồn video có sẵn :bash Copy

```bash
sudo snap install youtube-live-streamer --edge

# Cấu hình
sudoedit /var/snap/youtube-live-streamer/common/live-streamer.conf

# Thêm stream key vào file cấu hình
# youtube-stream-key: "your-stream-key-here"

# Khởi động lại
sudo snap restart youtube-live-streamer
```

***

### 🔧 Cấu hình nâng cao

#### 1. Chọn nguồn audio chính xác (PulseAudio)

bash Copy

```bash
# Liệt kê các nguồn audio
pactl list sources | grep Name

# Stream với nguồn cụ thể (ví dụ: monitor của desktop)
ffmpeg -f x11grab ... -f pulse -i alsa_output.pci-0000_00_1f.3.analog-stereo.monitor ...
```

#### 2. Stream có overlay webcam

bash Copy

```bash
ffmpeg -f x11grab -video_size 1920x1080 -i :0.0 \
-f v4l2 -video_size 320x240 -i /dev/video0 \
-filter_complex "[0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out]" \
-map "[out]" -map 1:a \
-c:v libx264 -preset fast -f flv rtmp://a.rtmp.youtube.com/live2/KEY
```

#### 3. Stream 24/7 với video lặp (VPS/Server)

Theo Zomro , tạo script Python:Python Copy

```python
# stream_loop.py
import os
import time

video_dir = "/path/to/videos/"
stream_key = "your-stream-key"
rtmp_url = f"rtmp://a.rtmp.youtube.com/live2/{stream_key}"

while True:
    for file in os.listdir(video_dir):
        if file.endswith((".mp4", ".mkv", ".avi")):
            cmd = f'ffmpeg -re -i "{video_dir}{file}" -c:v libx264 -preset ultrafast -crf 24 -g 3 -f flv {rtmp_url}'
            os.system(cmd)
            time.sleep(1)
```

***

### 📋 Script tổng hợp: Cài đặt tự động

Tạo file `setup_youtube_stream.sh`:bash Copy

```bash
#!/bin/bash

echo "╔════════════════════════════════════════════════════════════╗"
echo "║    CÀI ĐẶT MÔI TRƯỜNG STREAM YOUTUBE CHO UBUNTU           ║"
echo "╚════════════════════════════════════════════════════════════╝"

# Cập nhật hệ thống
sudo apt update && sudo apt upgrade -y

# Cài đặt FFmpeg
echo "📦 Cài đặt FFmpeg..."
sudo apt install ffmpeg -y

# Cài đặt OBS Studio (tùy chọn)
read -p "Cài đặt OBS Studio? (y/N): " install_obs
if [[ "$install_obs" =~ ^[Yy]$ ]]; then
    sudo add-apt-repository ppa:obsproject/obs-studio -y
    sudo apt update
    sudo apt install obs-studio -y
    echo "✅ OBS Studio đã cài đặt"
fi

# Cài đặt SimpleScreenRecorder (tùy chọn)
read -p "Cài đặt SimpleScreenRecorder? (y/N): " install_ssr
if [[ "$install_ssr" =~ ^[Yy]$ ]]; then
    sudo apt install simplescreenrecorder -y
    echo "✅ SimpleScreenRecorder đã cài đặt"
fi

# Tạo thư mục scripts
mkdir -p ~/youtube-stream
cd ~/youtube-stream

# Tạo script stream
cat > stream_desktop.sh << 'EOF'
#!/bin/bash
read -p "Nhập YouTube Stream Key: " KEY
read -p "Resolution (1920x1080/1280x720): " RES
RES=${RES:-1920x1080}

echo "🎬 Đang stream với resolution: $RES"
echo "Nhấn Ctrl+C để dừng"

ffmpeg -f x11grab -framerate 30 -video_size $RES -i :0.0 \
-f pulse -i default \
-c:v libx264 -preset fast -pix_fmt yuv420p -maxrate 3000k -bufsize 6000k -g 60 \
-c:a aac -b:a 128k -ar 44100 \
-f flv rtmp://a.rtmp.youtube.com/live2/$KEY
EOF

chmod +x stream_desktop.sh

echo ""
echo "✅ HOÀN TẤT!"
echo "📁 Script stream được lưu tại: ~/youtube-stream/stream_desktop.sh"
echo ""
echo "🚀 Cách sử dụng:"
echo "   cd ~/youtube-stream"
echo "   ./stream_desktop.sh"
echo ""
echo "📺 Hoặc mở OBS Studio để stream với giao diện đồ họa"
echo ""
echo "🔑 Lấy Stream Key tại: https://studio.youtube.com → Go Live → Stream"
```

Chạy script cài đặt:bash Copy

```bash
chmod +x setup_youtube_stream.sh
./setup_youtube_stream.sh
```

***

### 🎮 Lựa chọn theo nhu cầu

Table

| Nhu cầu                   | Công cụ khuyến nghị           | Lý do                           |
| ------------------------- | ----------------------------- | ------------------------------- |
| **Stream chuyên nghiệp**  | OBS Studio                    | Nhiều tính năng, scene, overlay |
| **Nhẹ, tự động hóa**      | FFmpeg                        | Dòng lệnh, script hóa được      |
| **Ghi + Stream sau**      | SimpleScreenRecorder + FFmpeg | Ghi chất lượng cao              |
| **Stream 24/7 từ server** | FFmpeg + Script Python        | Không cần GPU, chạy VPS         |
| **IP Camera → YouTube**   | YouTube Live Streamer (Snap)  | Đơn giản, cấu hình nhanh        |

***

### ⚠️ Lưu ý quan trọng

1. **Stream Key**: Giữ bí mật, không chia sẻ công khai
2. **Bitrate**: Điều chỉnh theo tốc độ upload (test tại speedtest.net)
3. **CPU Usage**: Nếu CPU cao, giảm `preset` (ultrafast) hoặc dùng NVENC/VAAPI
4. **Audio**: Kiểm tra nguồn audio đúng bằng `pavucontrol`
5. **YouTube**: Stream key thay đổi mỗi lần tạo live mới (trừ khi dùng Scheduled Stream)

Chúc bạn stream thành công! 🎉
