音视频实践学习
本文目录
概述
还是先从最简单的搞起来,先从最基本的视频推流开始,要知道在电脑上使用ffmpeg完成推流,简直不要太简单,直接使用ffmpeg的推流命令即可,今天想在android平台实践一下,具体操作大家也可以看看雷神的博客。
ffmpeg -re -i input.mp4 -vcodec copy -f flv rtmp://192.168.1.102:1935/onzhou/live
配置环境
操作系统: ubuntu 16.05
注意: ffmpeg库的编译使用的是android-ndk-r10e版本,使用高版本编译会报错。
而android-studio工程中配合cmake使用的版本则是android-ndk-r16b版本
image
新建工程ffmpeg-single-streamer
image
build.gradle配置比较简单,可以参考之前的文章
新建CMakeLists.txt文件,配置如下
cmake_minimum_required(VERSION 3.4.1)
add_library(ffmpeg-streamer
SHARED
src/main/cpp/ffmpeg_streamer.c)
find_library(log-lib
log)
#获取上级目录
get_filename_component(PARENT_DIR ${CMAKE_SOURCE_DIR} PATH)
set(LIBRARY_DIR ${PARENT_DIR}/ffmpeg-single)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
set(CMAKE_VERBOSE_MAKEFILE on)
add_library(ffmpeg-single
SHARED
IMPORTED)
set_target_properties(ffmpeg-single
PROPERTIES IMPORTED_LOCATION
${LIBRARY_DIR}/libs/${ANDROID_ABI}/libffmpeg.so
)
#头文件
include_directories(${LIBRARY_DIR}/libs/${ANDROID_ABI}/include)
target_link_libraries(ffmpeg-streamer ffmpeg-single ${log-lib})
新建NowStreamer.java文件
package com.onzhou.ffmpeg.streamer;
public class NowStreamer {
static {
System.loadLibrary("ffmpeg");
System.loadLibrary("ffmpeg-streamer");
}
public native int startPublish(String input, String output);
}
在src/main/cpp目录新建源文件ffmpeg_st