用ffmpeg合并音视频

命令较简单

1
2
3
4
5
# merge and convert to mp4
ffmpeg -i video.mp4 -i audio.m4a -vcodec copy -acodec copy file.mp4

# merge and convert to hls
ffmpeg.exe -i .\video.h264 -i .\audio.mp3 -c copy -f hls -hls_list_size 0 hls.m3u8

需要注意的是h264有两种格式,用途有所区分。

  • Annex B
    对应的封装TS、PS
  • AVCC
    对应的封装MP4

所以,上述命令中,合并成mp4文件的视频源格式可以是Annex B,也可以是AVCC;但合并成hls的视频源,一定要Annex B才行。

H264的两种格式

Annex B

分隔符,不表示NALU长度,3字节或者4字节,有防竞争字节
GOP:SPS、PPS、IDR、别的数据帧

AVCC

分隔符携带NALU长度,4字节(带有NALU长度信息)、有防竞争字节
GOP:GOP头部包含extra data,用来存储sequence header、sps、pps

虽然很不要脸,但是还请您多多打赏 ^_^