- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在编写一个命令行工具,用于将具有各种格式(flac/ogg/mp3/...)的输入音乐库转换为给定格式(flac/ogg/mp3)的输出音乐库。我将它基于 avconv(如果 avconv 不可用,则基于 ffmpeg),因为它是我发现的最完整的命令行转换器。我的脚本可以在这个 URL (GitHub) 上找到:
https://github.com/biapy/howto.biapy.com/blob/master/various/mussync-tools
我正在尝试将元数据从输入库文件传递到输出/转换后的库文件。
我想出了这段代码:
local MAP_METADATA=' 0:g'
# Specific needs for some input formats/
case "${INPUT_FILE_MIMETYPE}" in
'application/ogg' )
# Get input metadata from first audio stream and direct it to global.
MAP_METADATA=' 0:s:0'
;;
* )
# Do nothing.
# MAP_METADATA=' 0:g'
;;
esac
# Specific needs for some output formats/
local OUTPUT_OPTIONS=""
case "${OUTPUT_FORMAT}" in
'flac' )
# No encoding options needed.
ENCODING_OPTIONS=""
;;
'ogg' )
# Set vorbis as default codec for ogg.
OUTPUT_OPTIONS="-codec:a libvorbis -f ${OUTPUT_FORMAT}"
# Map input metadata to all audio streams in ogg container.
MAP_METADATA=":s:a ${MAP_METADATA}"
;;
* )
# Do nothing.
# MAP_METADATA="${MAP_METADATA}"
OUTPUT_OPTIONS="-f ${OUTPUT_FORMAT}"
;;
esac
# Dangerous solution for mp3 cbr format:
# Write output on pipe and then directed to file.
# For cbr format for mp3 files. Harmless for other formats.
# See: http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=7&t=377
#
# What about log output ? how to prevent it from being included in
# the resulting output file ?
if ! command ${AVCONV} -i "${INPUT_FILE}" \
-vn -sn \
-map_metadata${MAP_METADATA} \
-loglevel "${LOG_LEVEL}" \
${AVCONV_OPTIONS} \
${OUTPUT_OPTIONS} \
${ENCODING_OPTIONS} \
"${OUTPUT_TEMP_FILE}"; then
test "${QUIET}" != 'True' && echo "Failed."
test -e "${OUTPUT_TEMP_FILE}" && command rm "${OUTPUT_TEMP_FILE}"
return 1
else
test "${QUIET}" != 'True' && echo "Done."
# Test if fix for MP3 VBR is needed.
# See: http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=7&t=377
if [ "${OUTPUT_FORMAT}" = 'mp3' -a "${ENCODING_MODE}" != 'CBR' ]; then
# Output file is MP3 and VBR. Apply header fix.
if [ "${VERBOSE}" = 'True' ]; then
command vbrfix "${OUTPUT_TEMP_FILE}" "${OUTPUT_FILE}"
else
command vbrfix "${OUTPUT_TEMP_FILE}" "${OUTPUT_FILE}"
fi
else
# Nothing to do but rename the file.
command mv "${OUTPUT_TEMP_FILE}" "${OUTPUT_FILE}"
fi
# Delete temporary file if it is still present.
test -e "${OUTPUT_TEMP_FILE}" && command rm "${OUTPUT_TEMP_FILE}"
# Fetch cover art from input file.
transfert_images "${INPUT_FILE}" "${OUTPUT_FILE}"
fi
我的问题是,当使用 Ubuntu 13.10 Saucy Salamander 上可用的 avconv 版本将 flac 转换为 ogg 时,元数据不会保留,尽管有此选项(将全局元数据从输入 flac 文件复制到输出 ogg 文件的所有音频流) :
--map_metadata:s:a 0:g
你们中有人知道在转换时将元数据从 flac 输入文件复制到 ogg 输出文件的正确 --map_metadata 选项吗?
ps: 附加问题:如何防止 avconv 生成的 CBR mp3 文件具有 VBR header ?
pps:我知道诸如 beets 之类的工具,但我还没有看到可以执行此任务的专门命令行工具。
最佳答案
在这里找到修复:
https://bugs.kde.org/show_bug.cgi?id=306895
好的 --map_metadata 选项是:
--map_metadata 0:s:0
--map_metadata:s:a 0:s:0
注意--map_metadata选项在输出ogg和输入ogg时是一样的。
对于 CBR mp3 文件,此处提供了修复:http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=7&t=37 (输出到管道)有效。 avconv 将日志信息输出到 &2。 &1 是免费的数据。编辑:此修复程序仅适用于 CBR mp3,它破坏了需要直接输出到文件的 VBR mp3。
我已经将更改集成到 mussync-tools 1.2.0:
https://github.com/biapy/howto.biapy.com/blob/master/various/mussync-tools
关于bash - avconv : flac to ogg conversion with metadata kept,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21489719/
几天来我一直在尝试在 JTable 中编写颜色选择器代码,但没有成功。我尝试结合不同的教程( here 、 here 和 here )。我还尝试过使用 DefaultTableModel。 我无法在适
我正在使用这个 CSS: .link { transition: all .2s ease-in-out; } .link:hover { transform: scale(1.1);
我们在一个环中有 N 个具有基本一致性散列的缓存节点。 问题: 这个环的数据结构是否存储: 在每个节点上? 部分在每个节点及其范围? 在单独的机器上作为负载平衡器? 当其他节点加入时,环会发生什么?
我必须保留 2 个文件的类和成员:Level 和 Episode。我的 proguard.cfg 文件: -keepclasseswithmembers class games.levels.Epis
我试图让 Symfony2 和 Uploadify 在一个安全区域一起工作。 (Uploadify 是一个用于上传多个文件的 flash/javascript 组件) 当后端脚本路由在安全区域之外时,
我目前正在编写一个命令行工具,用于将具有各种格式(flac/ogg/mp3/...)的输入音乐库转换为给定格式(flac/ogg/mp3)的输出音乐库。我将它基于 avconv(如果 avconv 不
我最近一直在查看一些使用 CompletionItem 类的旧 Roslyn 示例。但是,在新版本中, namespace 发生了变化,我无法为此类找到合适的 namespace 。它位于 Rosly
我是 Android 上的 Espresso 的新手,我遇到了以下问题:我希望 Espresso 在按钮上执行长按(或其他操作),当按钮一直被按下时,我想检查不同 View 的状态。 在(或多或少)伪
我使用 create-react-app 开始开发 React 应用程序。默认情况下,它使用服务 worker 。我也碰巧通过 https 为我的生产应用程序提供服务。 事实证明,使用此配置,我的浏览
我一直在寻找我的应用程序中的内存泄漏,并发现由于某种原因,枚举实例保留在堆中。 为了模拟它,我在 tomcat 中部署了我的应用程序,对其进行了一些操作,停止它并在 tomcat 上执行 GC(通过
我们在 winforms 应用程序中使用 WebClient、.NET 3.5sp1。对于一些用户来说,这个结果在消息异常中: “基础连接已关闭:服务器关闭了预期保持事件状态的连接。” 在网络上搜索了
我正在用 java 编写缓存服务器,它将图像数据(jpg、png、tiff 等)缓存在内存中,以便通过 http 进行快速访问。图像由另一个服务呈现,这是一项昂贵的操作,因此我想将它们缓存在我的缓存服
假设我有一个简单的切换: 当我点击按钮时,颜色组件在红色和蓝色之间变化 我可能会通过做这样的事情来实现这个结果。 索引.js Button: onClick={()=>{dispatch(change
使用 Carbon 框架中的 InstallApplicationEventHandler 和 RegisterEventHotKey,我能够捕获我想要的任何 key 。 相反,我找不到一种方法来正确
这个问题已经有答案了: Why am I getting "must be caught or declared to be thrown" on my program? (6 个回答) 已关闭 5
我有一个客户端不断地通过路由器通过 Wifi 连接向主机发送 UDP 数据包。我想知道如果我突然关闭路由器,数据包会发生什么情况。 udp数据包会被丢弃还是保留在某个缓冲区中? 此外,我想知道如果我在
假设我在我的 username.github.io 上放了一个 index.html,我可以通过 url http://username.github.io 访问它 现在考虑 2 个相互矛盾的情况 比
我使用 VoIP 和远程通知作为后台模式。 我让我的应用程序在后台闲置以进行通宵测试。 我在 applicationDidEnterBackground 中编写了以下代码 - (void)ap
考虑以下常见的简单类型删除方案 protocol Foo { associatedtype Bar func bar() -> Bar } struct AnyFoo: Foo {
我是一名优秀的程序员,十分优秀!