如何从 m4a 文件中删除 tx3g 流

Posted

技术标签:

【中文标题】如何从 m4a 文件中删除 tx3g 流【英文标题】:How to remove tx3g stream from m4a file 【发布时间】:2021-12-09 15:46:19 【问题描述】:

我想在手机上播放一本有声读物。我选择的音频应用程序正在处理文件,我认为这是因为文件中有一个无法处理的附加流。 VLC for android 可以毫无问题地播放文件,但我宁愿使用我选择的音频应用程序。

当我在 VLC for Windows 中打开 m4a 文件时,我看到两个流:

我想摆脱 tx3g 流,只保留音频流。所以我转向 ffmpeg 尝试只复制音频流。但是,无论我尝试什么,tx3g 流似乎都是顺其自然。我参考了this post 来弄清楚如何删除 tx3g 流,但到目前为止我还没有成功。谁能帮我弄清楚如何只删除 tx3g 轨道?理想情况下,我还想保留元数据和专辑封面。

我尝试运行ffmpeg -i input.m4a -map 0:a:0 -sn -dn -c copy output.m4a,但 tx3g 流仍然存在。这是命令输出:

ffmpeg version 2021-12-06-git-ef00d40e32-essentials_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11.2.0 (Rev2, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      57. 10.101 / 57. 10.101
  libavcodec     59. 14.100 / 59. 14.100
  libavformat    59.  9.102 / 59.  9.102
  libavdevice    59.  0.101 / 59.  0.101
  libavfilter     8. 19.100 /  8. 19.100
  libswscale      6.  1.101 /  6.  1.101
  libswresample   4.  0.100 /  4.  0.100
  libpostproc    56.  0.100 / 56.  0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002773b2db200] stream 0, timescale not set
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\input.m4a':
  Metadata:
    major_brand     : M4A
    minor_version   : 512
    compatible_brands: isomiso2
    artist          : [removed]
    title           : [removed]
    album           : [removed]
    date            : 2020
    genre           : Audiobook
    track           : 1/22
    disc            : 1/1
    comment         : [removed]
    copyright       : [removed]
    encoder         : Lavf58.29.100
  Duration: 00:01:45.14, start: 0.000000, bitrate: 132 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 105.000000
      Metadata:
        title           : [removed]
  Stream #0:0[0x1](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Data: bin_data (text / 0x74786574), 0 kb/s
    Metadata:
      creation_time   : 2021-11-29T16:23:41.000000Z
  Stream #0:2[0x0]: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 500x500 [SAR 1:1 DAR 1:1], 90k tbr, 90k tbn (attached pic)
Output #0, ipod, to 'output.m4a':
  Metadata:
    major_brand     : M4A
    minor_version   : 512
    compatible_brands: isomiso2
    artist          : [removed]
    title           : [removed]
    album           : [removed]
    date            : 2020
    genre           : Audiobook
    track           : 1/22
    disc            : 1/1
    comment         : [removed]
    copyright       : [removed]
    encoder         : Lavf59.9.102
  Chapters:
    Chapter #0:0: start 0.000000, end 105.000000
      Metadata:
        title           : [removed]
  Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
size=    1632kB time=00:01:45.11 bitrate= 127.2kbits/s speed=1.48e+04x
video:0kB audio:1612kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.233040%

【问题讨论】:

地址:-map_chapters -1 【参考方案1】:

感谢Alain1A45!我需要添加-map_chapters -1。这从输出中删除了 tx3g 流。

【讨论】:

以上是关于如何从 m4a 文件中删除 tx3g 流的主要内容,如果未能解决你的问题,请参考以下文章

如何将m4a音频换成mp3格式

如何使用 AVAudioPlayer 执行 .m4a 歌曲文件的流式传输?

如何将m4a音频换成mp3格式

如何使用 Android MediaCodec 生成 AAC ADTS 基本流

如何将 WAV 文件转换为 M4A?

如何在android中录制音频m4a格式的音频文件?