0%

用到的ffmpeg

1. 编译

ffmpeg 依赖 x264

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

install_dir=`pwd`/install/
[ ! -e ${install_dir} ] && mkdir -p ${install_dir}

pushd .
cd x264
./configure --prefix=${install_dir} --disable-asm --enable-shared --enable-static
make -j4 && make install
popd

pushd .
cd ffmpeg
./configure --prefix=${install_dir} --enable-libx264 --enable-shared --enable-rpath --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --extra-cflags="-I/${install_dir}/include" --extra-ldflags="-L${install_dir}/lib" --disable-x86asm
make -j7 && make install

2. ffmpeg

2.1. 基本使用

1
ffmpeg {1} {2} -i {3} {4} {5}

5部分依次是:

  1. 全局参数
  2. 输入文件参数
  3. 输入文件
  4. 输出文件参数
  5. 输出文件

ffmpeg
-y \ # 全局参数
-c:a libfdk_aac -c:v libx264 \ # 输入文件参数
-i input.mp4 \ # 输入文件
-c:v libvpx-vp9 -c:a libvorbis \ # 输出文件参数
output.webm # 输出文件

2.2. 文件封装格式

File formats:
D. = Demuxing supported
.E = Muxing supported

  • 编解码器
    Codecs:
    D….. = Decoding supported
    .E…. = Encoding supported
    ..V… = Video codec
    ..A… = Audio codec
    ..S… = Subtitle codec
    …I.. = Intra frame-only codec
    ….L. = Lossy compression
    …..S = Lossless compression

  • 查看支持的音频编码

    1
    ffmpeg -codecs | grep  ' ..A' |less

2.3. 推流

  • 这个不再处理视频流, 只会抽取其中的视频流,消耗较少
    ffmpeg -re -i /home/suntus/media_upgrade/tests/logicno6.mp4 -codec copy -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

ffmpeg -stream_loop -1 -re -i /home/suntus/media_upgrade/tests/logicno6.mp4 -codec copy -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

  • -stream_loop -1 中 -1 表示无限循环;0表示 不循环

  • 重新编解码视频,在10.68.6.113上消耗CPU较大, 不会满速(0.3x左右)
    ffmpeg -re -i /home/suntus/media_upgrade/tests/logicno6.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

  • 推 rtmp
    ffmpeg -stream_loop -1 -re -i /home/suntus/media_upgrade/tests/logicno6.mp4 -codec copy -f flv rtmp://127.0.0.1/live/test

2.4. 转码

g711a 转 aac

1
ffmpeg -acodec pcm_alaw -i "${f_input}" -movflags faststart -vcodec copy -acodec aac "${f_output}"

g711u 转 aac

1
ffmpeg -acodec pcm_mulaw -i "${f_input}" -movflags faststart -vcodec copy -acodec aac "${f_output}"

3. ffprobe

3.1. 探测文件格式

1
ffprobe -show_streams -show_format http://10.68.6.113/live/test/hls.m3u8

4. ffplay

基于 ffmpeg 和 SDL 的播放器

4.1. 播放g711音频

1
2
3
ffplay -i test.pcm -f s16le -ac 1 -ar 8000
ffplay -i test.g711a -f alaw -ac 1 -ar 8000
ffplay -i test.g711u -f mulaw -ac 1 -ar 8000

4.2. 播放 http-flv 视频流

1
2
3
4
5
# 查看详细的播放信息
ffplay http://10.68.6.113:6050/jtt/r_180705845517167HH_019939368921_1.live.flv -loglevel debug
# 或 -report, 会输出到 program-YYYYMMDD-HHMMSS.log
ffplay http://10.68.6.113:6050/jtt/r_180705845517167HH_019939368921_1.live.flv -report