0
点赞
收藏
分享

微信扫一扫

使用cmake构建C++ live555流媒体服务上手项目(支持Windows,Linux)

开源的流媒体视频和音频RTSP开发框架live555(http://www.live555.com/)对于学习和构建音视频流媒体或者直播服务是很方便的。官方的源码包对各平台编译单独列出了对应的makefile,但是为了构建项目方便,这里对live555的构建编译增加了cmake支持,并整理了一个demo展示如何创建个人的上手项目,搭建一个简单的RTSP流媒体服务。

项目结构

live555_starter
	- live
	- openssl
	- src
		|- stream_server.h
		|- stream_server.cpp
		|- main.cpp
	- CMakeLists.txt

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)

project(live555_starter)

if (WIN32)
    add_definitions(
        -D_CRT_SECURE_NO_WARNINGS
        -D_WINSOCK_DEPRECATED_NO_WARNINGS
        -DNO_GETIFADDRS
    )
else()
    add_definitions(
        -DSOCKLEN_T=socklen_t 
        -D_LARGEFILE_SOURCE=1 
        -D_FILE_OFFSET_BITS=64
    )
endif()

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/openssl-1.1.1g/include

    ${CMAKE_CURRENT_SOURCE_DIR}/live/BasicUsageEnvironment/include
    ${CMAKE_CURRENT_SOURCE_DIR}/live/groupsock/include
    ${CMAKE_CURRENT_SOURCE_DIR}/live/UsageEnvironment/include
    ${CMAKE_CURRENT_SOURCE_DIR}/live/liveMedia/include
)

if (WIN32)
    link_directories(
        ${CMAKE_CURRENT_SOURCE_DIR}/openssl-1.1.1g/prebuild/win
    )
else()
    link_directories(
        ${CMAKE_CURRENT_SOURCE_DIR}/openssl-1.1.1g/prebuild/linux
    )
endif()

file(GLOB LIVE555_SRC
    live/BasicUsageEnvironment/*.cpp
    live/groupsock/*.cpp 
    live/groupsock/*.c
    live/UsageEnvironment/*.cpp
    live/liveMedia/*.hh 
    live/liveMedia/*.cpp 
    live/liveMedia/*.c
)

file(GLOB STREAM_SERVER_DEMO_SRC
    ${LIVE555_SRC}
    src/*.h
    src/*.cpp
)

add_executable(stream_server_demo
    ${STREAM_SERVER_DEMO_SRC}
)

if (WIN32)
    target_link_libraries(stream_server_demo
        ws2_32
        libssl
        libcrypto
    )
else()
    target_link_libraries(stream_server_demo
        ssl
        crypto
    )
endif()

说明

  • live依赖库所有源码都参与编译
  • ssl和crypto的依赖使用项目内置的openssl库,无其他系统级依赖
  • 支持windows和linux以及mac
  • 只实现了rtsp的流媒体服务,不包含hls转发

使用

构建和编译项目后,在程序执行目录放置视频或者音频文件,可以使用子文件夹相对路径
例如,执行目录文件结构:

build
	- stream_server_demo
	- video
		|- v1.mkv

然后运行stream_server_demo,启动后打印如下信息:

LIVE555 Media Server
        version 1.10 (LIVE555 Streaming Media library version 2022.01.11).
Play streams from this server using the URL
        rtsp://168.61.73.255:8554/<filename>
where <filename> is a file present in the current directory.
Each file's type is inferred from its name suffix:
        ".264" => a H.264 Video Elementary Stream file
        ".265" => a H.265 Video Elementary Stream file
        ".aac" => an AAC Audio (ADTS format) file
        ".ac3" => an AC-3 Audio file
        ".amr" => an AMR Audio file
        ".dv" => a DV Video file
        ".m4e" => a MPEG-4 Video Elementary Stream file
        ".mkv" => a Matroska audio+video+(optional)subtitles file
        ".mp3" => a MPEG-1 or 2 Audio file
        ".mpg" => a MPEG-1 or 2 Program Stream (audio+video) file
        ".ogg" or ".ogv" or ".opus" => an Ogg audio and/or video file
        ".ts" => a MPEG Transport Stream file
                (a ".tsx" index file - if present - provides server 'trick play' support)
        ".vob" => a VOB (MPEG-2 video with AC-3 audio) file
        ".wav" => a WAV Audio file
        ".webm" => a WebM audio(Vorbis)+video(VP8) file
See http://www.live555.com/mediaServer/ for additional documentation.

然后打开支持rtsp协议的流媒体客户端,比如vlc播放器,选择播放网络流,然后填入url即可播放
在这里插入图片描述

源码

https://github.com/tashaxing/live555_starter

举报

相关推荐

0 条评论