我想从 mp4 文件中解复用音频(AMR_WB)和视频(H264)。我需要编写一个使用 ffmpeg 库执行此操作的程序。
在demuxing.c
FFMPEG 示例中的文件中,我只能获得原始格式作为输出。
我可以以某种方式修改该代码以从 mp4 文件中获取编码格式的 H264 和 AMR_WB 吗?
运行 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()