当前位置: 首页 > 知识库问答 >
问题:

如何在FFMPEG中编码特定的元数据版本?

蒋奇
2023-03-14

我正在批量转换许多歌曲为SHOUTcast的短“广告”歌曲,并被服务器识别为广告。歌曲的标题和艺术家元数据标记都必须有“:advert”。当我使用以下命令时:

ffmpeg -i "$i" -c copy -vn -map_metadata -1 -metadata title=":Advert" -metadata artist=":Advert" -t 120 "adverts/ADVERT_$i"

我希望它只输出“:advert”作为标题和艺术家元数据的歌曲,但当我将其导入到无线电播放软件(使用ID3 1.x标记)时,元数据没有复制,因此丢失了。FFMPEG的输出:

ffmpeg version 3.0.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 9.0.0 (clang-900.0.37)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --disable-lzma --enable-vda
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
[mp3 @ 0x7feba6800000] Skipping 0 bytes of junk at 230934.
[mjpeg @ 0x7feba7000600] Changing bps to 8
Input #0, mp3, from 'Joakim Karud - Vibe With Me.mp3':
  Metadata:
    major_brand     : dash
    minor_version   : 0
    compatible_brands: iso6mp41
    encoder         : Lavf56.40.101
    artist          : Joakim Karud
    title           : Vibe With Me
  Duration: 00:02:53.06, start: 0.025056, bitrate: 138 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Metadata:
      encoder         : Lavc56.60
    Stream #0:1: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1280x720 [SAR 1:1 DAR 16:9], 90k tbr, 90k tbn, 90k tbc
    Metadata:
      comment         : Cover (front)
Output #0, mp3, to 'adverts/ADVERT_Joakim Karud - Vibe With Me.mp3':
  Metadata:
    TIT2            : :Advert
    TPE1            : :Advert
    TSSE            : Lavf57.25.100
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
size=    1876kB time=00:02:00.00 bitrate= 128.1kbits/s speed=1.44e+03x
video:0kB audio:1876kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.024837%

我认为这是因为标签名不同(例如title应该是title,但输出时是tit2)。请有人指定如何确保元数据以ID3 1.x格式编码,以便无线电播放软件可读。非常感谢。

共有1个答案

方长卿
2023-03-14

默认情况下,FFmpeg只写入ID3v2.4标记。必须为写入指定ID3v1。

使用

ffmpeg -i "$i" -c copy -vn -write_id3v1 true -map_metadata -1 -metadata title=":Advert" -metadata artist=":Advert" -t 120 "adverts/ADVERT_$i"
 类似资料:
  • 我在读关于Flyway的文件时发现: 如果您有一个尚未被Flyway填充的现有数据库,则可以这样做: 而我的问题是,我可以用特定版本初始化元数据表吗? 诸如此类: 在db/migration文件夹下,我有一些从1.0到1.49的sql脚本;触针位于1.35。其目的是在1.35中初始化prod版本,而不创建初始迁移脚本(由于几个原因,我无法创建它…)并在迁移期间应用1.36到1.49之间的sql脚本

  • 如何在此数据帧中选择特定单元格?,此数据帧中的索引是FISH列 我的预期输出是:例如

  • 我正在开发一个社交网络应用程序,用户可以关注其他用户,喜欢他们的帖子、评论。。。当某个用户跟踪某人时,它会在另一个用户帐户的通知片段中显示,通知他有一个新的跟踪者。问题是,当用户点击unfollow时,我无法删除通知。以下是我尝试过的: 下面是我添加通知的方式: 我的代码的问题是,每当用户取消关注某人时,该用户的所有通知都会被删除,包括他的喜欢和评论。我想要的是删除“开始关注你”。以下是它在Fir

  • 我想清理我的数据框的源列。最后我只想保留名字后面的部分。 最好的方法是什么?例如: 第1行第1列:{'id':'rtl nieuws','name':'rtl nieuws'} 第2行,第1列:{'id':'无','name':'www.ad.nl'} 预期结果: 第1行第1列:RTL Nieuws 第2行,第1列:www.ad.nl

  • 这里是一个场景,我有每月的数据,我必须将其插入到数据结构中,然后检索它。假设数据a进入一月,数据b进入六月,数据c进入一月。插入完成后,我添加给定月份的所有数据并检索它。因此,1月份可能是a b,2月份可能是d e f等等。如何在Java中实现这一点?请帮忙。谢谢Matt

  • 我有一个25列的数据帧和一个数组([2,4,8,10,11,12,13,14,17,18,19,20,21,22,23],dtype=int64)。我想从dataframe中选择一些特定的列,这些列的索引由数组的元素给出,并将它们存储在一个新的dataframe中(比如df1)。例如,新数据帧将有原始数据帧的第2、第4、第23列。