【问题标题】:Demux audio (AMR_WB) and video(H264) from mp4 file using ffmpeg使用ffmpeg从mp4文件中解复用音频(AMR_WB)和视频(H264)
【发布时间】:2013-01-10 11:05:09
【问题描述】:

我想从 mp4 文件中解复用音频 (AMR_WB) 和视频 (H264)。我需要编写一个使用 ffmpeg 库执行此操作的程序。

在 FFMPEG 示例中的demuxing.c 文件中,我只能获得原始格式作为输出。

我能否以某种方式修改该代码以从 mp4 文件中获取编码格式的 H264 和 AMR_WB?

【问题讨论】:

  • 但是为什么输出说使用 ffplay -f rawvideo -pix_fmt yuv420p -video_size 450x360 out.h264 播放输出文件?另外,当我对输出文件执行文件命令时,它说 PEX 二进制存档。没有提到任何关于 h264 的内容
  • 我从 Demuxing.c 得到的输出文件的大小是输入文件大小的 100 倍。但是当我使用解复用命令运行命令行任务进行解复用时,解复用视频文件的大小即。我得到的 h264 文件与输入文件的大小有些相同。所以大多数情况下,我在 demuxing.c 中得到的输出是原始格式。

标签: ffmpeg h.264


【解决方案1】:

两次运行ffmpeg,每次指定只复制1个轨道输出。

diff mp4 的示例将提供您需要适应容器中相应视频/音频的特定轨道类型的大部分想法...

MP4 示例:解复用 h264 和 aac 轨道以分离输出(tout1,tout2)

输入什么?

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'phoneCam_20120902_112701.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 0
    compatible_brands: isom3gp4
    creation_time   : 2012-09-02 18:27:14
  Duration: 00:00:12.65, start: 0.000000, bitrate: 8011 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1280x720, 7707 kb/s, SAR 65536:65536 DAR 16:9, 28.64 fps, 29.83 tbr, 90k tbn, 180k tbc
    Metadata:
      creation_time   : 2012-09-02 18:27:14
      handler_name    : VideoHandle
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, mono, s16, 96 kb/s

通过 1,获取 Vid

ffmpeg -i phoneCam_20120902_112701.mp4 -map 0:0 -c 复制 tout1.mp4

Pass2 只需获取 aud

ffmpeg -i phoneCam_20120902_112701.mp4 -map 0:1 -c aac -ar 48000 -ab 48000 -strict -2 tout2.3gp

在您的程序中,只需从 CLI 运行 ffmpeg 或在 ffmpeg.c 中调用 main()

【讨论】:

  • 谢谢,但我没有尝试使用命令行的东西。我正在尝试使用 ffmpeg 库编写一个程序,它将对音频和视频进行解复用。pl 查看 ffmpeg 中的 doc/examples/demuxing.c 文件。
猜你喜欢
  • 2016-06-16
  • 1970-01-01
  • 2016-01-04
  • 2013-05-22
  • 2016-11-06
  • 2016-04-26
  • 2021-02-04
  • 2018-05-30
  • 1970-01-01
相关资源
最近更新 更多