gpt4 book ai didi

audio - 如何从 .mp3 文件中获取元数据并使用 FFmpeg 将其作为文本放入视频中?

转载 作者:行者123 更新时间:2023-12-04 22:54:47 25 4
gpt4 key购买 nike

在我之前打开的主题中:
How to make FFmpeg automatically inject mp3 audio tracks in the single cycled muted video
我从@llogan 那里得到了详细的解释,如何在 youtube 上播放循环的短静音视频,自动在其中注入(inject)音轨而不中断翻译。
我计划增强流程,我面临的下一个问题是如何动态地将附加文本添加到广播中。
先决条件:

  • ffmpeg
  • 启动并运行 youtube 广播
  • 3 分钟短视频在无限循环中付费
  • 播放列表中的音轨由“ffmpeg concat”自动获取并一一注入(inject)视频

  • 这是开始翻译的基本命令:

    ffmpeg -re -fflags +genpts -stream_loop -1 -i video.mp4 -re -f concat-i input.txt -map 0:v -map 1:a -c:v libx264 -tune stillimage -vf format=yuv420p -c:a copy -g 20 -b:v 2000k -maxrate 2000k -bufsize8000k -f flv rtmp://a.rtmp.youtube.com/live2/my-key


    我想带来的改进
  • 我打算在音频文件中存储一些元数据(基本上是艺术家名和歌曲名)
  • 在特定歌曲开始播放的那一刻,艺术家/歌曲名称应从元数据中获取,并在整个歌曲播放期间作为文本显示在视频上。
  • 当当前歌曲结束并且新歌曲开始播放之前的艺术家/歌曲文本时,应将其替换为新歌曲等

  • 我的问题是如何正确获取元数据并将其添加到使用 ffmpeg 的现有广播配置中?

    最佳答案

    这是一个相当广泛的问题,我没有完整的解决方案。但我可以提供包含几个命令的部分答案,您可以使用这些命令来帮助实现解决方案。
    按需更新视频文本
    Can you insert text from a file in real time with ffmpeg streaming?
    获取标题和艺术家元数据
    使用 ffprobe :

    ffprobe -v error -show_entries format_tags=title -of default=nw=1:nk=1 input.mp3
    ffprobe -v error -show_entries format_tags=artist -of default=nw=1:nk=1 input.mp3
    或组合: format_tags=title,artist (请注意, title 将首先显示,然后是 artist ,无论命令中的顺序如何)。
    获取歌曲的时长
    How to get video duration in seconds?
    你需要弄清楚什么
    困难的部分是知道何时更新drawtext过滤器中 textfile中引用的文件,如上面的 更新视频点播文本所示。
    懒惰的解决方案
    预先制作每首歌曲的视频,包括标题和艺术家信息。简单的 Bash 示例:
    audio=input.mp3; ffmpeg -stream_loop -1 -i video.mp4 -i "$audio" -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=increase,crop=1280:720,setsar=1,fps=25,drawtext=text='$(ffprobe -v error -show_entries format_tags=title,artist -of default=nw=1:nk=1 $audio)':fontsize=18:fontcolor=white:x=10:y=h-th-10,format=yuv420p[v]" -map "[v]" -map 1:a -c:v libx264 -c:a aac -ac 2 -ar 44100 -g 50 -b:v 2000k -maxrate 2000k -bufsize 6000k -shortest "${audio%.*}.mp4"
    现在您已经进行了编码,并且所有内容都符合正确连接的相同属性,您可能只需 stream copy 将您的播放列表添加到 YouTube(但我没有测试):
    ffmpeg -re -f concat -i input.txt -c copy -f flv rtmp://a.rtmp.youtube.com/live2/my-key
    请参阅您之前关于如何 dynamically update the playlist 的问题。
    引用:
  • FFmpeg Wiki: Streaming to YouTube
  • Resizing videos with ffmpeg to fit into specific size
  • How to concatenate videos in ffmpeg with different attributes?
  • 关于audio - 如何从 .mp3 文件中获取元数据并使用 FFmpeg 将其作为文本放入视频中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65161366/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com