#2 调整视频文件中音频流的顺序

2021-08-28

ffprobe

ffprobe movie.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'movie.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1
    creation_time   : 2020-02-20T06:07:54.000000Z
  Duration: 01:43:14.16, start: 0.000000, bitrate: 2844 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1495 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
    Metadata:
      creation_time   : 2020-02-20T06:07:54.000000Z
    Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361), 44100 Hz, stereo, fltp, 448 kb/s (default)
    Metadata:
      creation_time   : 2020-02-20T06:08:03.000000Z
    Side data:
      audio service type: main
    Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 44100 Hz, 5.1(side), fltp, 448 kb/s (default)
    Metadata:
      creation_time   : 2020-02-20T06:09:02.000000Z
    Side data:
      audio service type: main
    Stream #0:3(und): Audio: ac3 (ac-3 / 0x332D6361), 44100 Hz, 5.1(side), fltp, 448 kb/s (default)
    Metadata:
      creation_time   : 2020-02-20T06:09:29.000000Z
    Side data:
      audio service type: main

ffmpeg

ffmpeg -loglevel info -i movie.mp4 -ss 00:29:08.0 -to 00:31:25.0 -s 1280x720 -c copy -map 0:v:0 -map 0:a:0 -map 0:a:1 -map 0:a:2 test.mp4

# 输入,复制,设置第一个音频流为默认,输出
# 发现其他几个音频流不见了,输出文件中只有一个音频流
ffmpeg -i movie.mp4 -c copy -disposition:a:1 default 冰雪奇缘2_new.mp4

ffmpeg -i movie.mp4 -c copy -map 0:v:0 -map 0:a:1 -map 0:a:0 -disposition:a:0 default  -disposition:a:1 0 冰雪奇缘2_new2.mp4

解析:输入,复制(不重新编码),

-map 0:v:0
-map 0:a:1
-map 0:a:0

-c / -codec
-c:v
-c:a
-c:s
-c:d
[mp4 @ 0x556a8afca7c0] track 1: codec frame size is not set

ffmpeg -i test.mp4 -frames 1 -f image2 /tmp/image.png

#1 视频编码

2021-08-07

压缩技术

  • 1929:首次出现帧间压缩
  • 1952:差分脉冲编码调制
  • 1959:使用时间压缩的帧间预测编码
  • 1967:行程长度编码
  • 20世纪70年代:早期数字视频算法
  • 1972:数字视频的首次压缩
  • 1973:DCT技术成为一种图像压缩算法
  • 1974:混合编码的发展过程
  • 1975:混合编码的进一步发展
  • 1977:更快的DCT算法
  • 1979~1981:运动补偿DCT视频压缩
  • 1984:首个数字视频压缩标准——H.120
  • 1988:用H.261举行视频会议
  • 1992:使用Motion JPEG(MJPEG)的PC多媒体应用
  • 1993:使用MPEG-1的视频CD
  • 1994:使用H.262和MPEG-2的电视广播和DVD
  • 图像采样
  • I帧,P帧和B帧
  • 1995:使用DV存储数字视频
  • 1996:使用 H.263 的新一代视频会议标准
  • 1999:使用 MPEG-4 第二部分的互联网视频
  • 2003:使用 H.264/MPEG-4 AVC 的蓝光、DVD、视频直播和广播电视
  • 2013:使用 H.265/HEVC 的 360° 沉浸式视频、AR和VR
  • 2013:谷歌 VP9 (H.265 的竞争对手)
  • 2018:使用 AV1 的高质量网络视频
  • 2020:使用 H.266/VVC 实现商业上可行的 4K、8K
  • 我国拥有自主知识产权的第三代 “信源编码” 标准——AVS3

编码格式

或者说编解码技术,可能一种技术编码很复杂,但是解码简单。

  • 国际电联的 H.261、H.263、H.264
  • 运动静止图像专家组 (M-JPEG)
  • ISO 运动图像专家组 (Moving Picture Experts Group, MPEG)
  • Real-Networks
  • RM (Real Media)
  • RMVB, 相比较于 RM,支持非固定压缩比,在画面变化小时,更好的压缩文件。
  • 微软公司
  • WMV
  • AVI(Audio Video Interleaved,音频视频交错)
  • ASF(Advanced Streaming Format,高级流格式)
  • 苹果公司
  • QuickTime, MOV 格式
  • 北大和国内企业共同推进的 AVS 系列标准

封装格式

  • 元数据
  • 视频数据
  • 音频数据
  • 字幕数据
  • 可能还有一些版权保护方面的技术。

有一些标准既包括编码格式,也把包括封装格式,如 rm,rmvb,wmv

有一些封装格式可以容纳不同类型的数据,如 mkv

  • 3GP(第三代合作伙伴项目):国际电信行业共同推出,MPEG-4 Part 14(MP4)简化版本,流媒体,常用于移动设备,支持自适应速率。过去很常见,似乎现在没见过了。
  • flv(Flash Video): 采用 H.263 编码,相同质量的前提下,文件更小,资源消耗更少
  • f4v: 采用 H.264 编码

参考资料与拓展阅读