当前页面访问量: 18

FFmpeg4入门系列教程21:音视频解混合(demuxer)为MP3和H264

Posted by

索引地址:系列教程索引地址

上一篇:FFmpeg4入门系列教程20:视频添加滤镜

本文介绍将视频压缩数据(h264)和音频数据(mp3)从视频文件(mp4)中解出来。

FFmpeg4入门系列教程5:解码视频流过程中介绍了解码视频流的基本流程,但是只解码视频流。而在FFmpeg4入门系列教程15:音频解码为pcm中介绍了解码音频流的基本流程,并且是只解码音频流。而一个视频文件中包含音视频至少两条流,我们在解码的时候故意过滤了我们不需要的流。

随便找一个视频,查看视频信息:

$ ffprobe Sample.mkv
ffprobe version n4.4 Copyright (c) 2007-2021 the FFmpeg developers
  built with gcc 10.2.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-shared --enable-version3
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
[flv @ 0x55894ec85440] Missing AMF_END_OF_OBJECT in AMF_DATA_TYPE_MIXEDARRAY, found 0
Input #0, flv, from 'Sample.mkv':
  Metadata:
    creator         : www.qiyi.com
    metadatacreator : Yet Another Metadata Injector for FLV - Version 1.2
    hasKeyframes    : true
    hasVideo        : true
    hasAudio        : true
    hasMetadata     : true
    canSeekToEnd    : false
    datasize        : 40600924
    videosize       : 36538352
    audiosize       : 3942540
    lasttimestamp   : 645
    lastkeyframetimestamp: 637
    lastkeyframelocation: 40109260
  Duration: 00:10:44.87, start: 0.000000, bitrate: 503 kb/s
  Stream #0:0: Video: h264 (High), yuv420p(tv, smpte170m/smpte170m/bt709, progressive), 624x480, 451 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
  Stream #0:1: Audio: aac (HE-AAC), 44100 Hz, stereo, fltp, 47 kb/s

可以看到有两条流,分别是Stream #0:0 为h264即视频流,Stream #0:1为aac即音频流。接下来我们将其解出来并分别保存为音视频文件。

完整代码在ffmpeg_Beginner中的21.video_decode_add_filter_display_by_qwidget中。

下一篇:FFmpeg4入门系列教程22:音视频解混合(demuxer)为PCM和YUV420P

赞赏

微信赞赏支付宝赞赏

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用*标注