gpt4 book ai didi

audio - 如何让 FFmpeg 在单循环静音视频中自动注入(inject) mp3 音轨?

转载 作者:行者123 更新时间:2023-12-04 22:51:39 26 4
gpt4 key购买 nike

大家都在这里!所以基本上这就是我想要实现的目标:
我有一个大约 3 分钟长的静音视频。
我有一个 mp3 格式的音轨列表(一个文件夹中有 40 首歌曲,每首时长为 2 到 6 分钟)
我希望这个视频循环播放,自动从播放列表中获取歌曲并将它们一一注入(inject)到视频中。每次一首歌曲完成时,列表中的下一首歌曲应该立即开始播放。视频继续播放,不关心轨道的持续时间。
我认为这是在 youtube 上以 24/7 模式播放具有视频背景的广播的第一步,能够将其他轨道放入播放列表而无需停止翻译。
我的问题是我是 FFmpeg 的新手,我将不胜感激有关开始调查哪个 FFMpeg 主题以实现我的目标的任何建议

最佳答案

使用 concat 解复用器
您可以对 concat demuxer 的播放列表进行实时更新, 但每个音频文件必须具有相同的属性、相同的流数和相同的格式。

  • 创建 input.txt包含:
    ffconcat version 1.0
    file 'audio1.mp3'
    file 'audio2.mp3'
    file 'audio3.mp3'
    file 'audio40.mp3'
    所有文件名都必须是“安全的”,否则将失败并显示 Unsafe file name .文件名中基本上没有特殊字符,只使用绝对路径。见 concat demuxer了解更多信息。
  • 运行ffmpeg流式传输到 YouTube:
    ffmpeg -re -framerate 10 -loop 1 -i image.jpg -re -f concat -i input.txt -map 0:v -map 1:a -c:v libx264 -tune stillimage -vf format=yuv420p -c:a aac -g 20 -b:v 2000k -maxrate 2000k -bufsize 8000k -f flv rtmp://youtube
  • 当您准备好添加新歌时,请制作 temp.txt包含:
    ffconcat version 1.0
    file 'audio41.mp3'
    file 'audio42.mp3'
    file 'audio43.mp3'
  • 替换 input.txt原子地:
    mv temp.txt input.txt

  • FFmpeg Wiki: Concatenate了解更多信息。
    如果您的音频文件不相同 input.txt 中列出的文件必须都具有相同的:
  • 格式(AAC、MP3 等,但不能混合)
  • 采样率(48000、44100 等)
  • channel 数(单声道、立体声等)。

  • 如果它们有所不同,那么您必须在将它们添加到播放列表之前对其进行预处理。 Bash 示例使每个音频符合立体声 ( -ac 2 ) 与 44100 采样率 ( -ar 44100 ) 并在 M4A 容器中保存为 AAC 格式:
    mkdir conformed
    for f in *.mp3; do ffmpeg -i "$f" -map 0:a -ac 2 -ar 44100 -c:a aac "conformed/${f%.*}.m4a"; done
  • 建议输出到 AAC 以流式传输到 YouTube。
  • 如果你这样做,那么你可以避免重新编码 ffmpeg 中的音频。命令到 YouTube。只需更改 -c:a aac-c:a copy在第 2 步中:运行 ffmpeg流式传输到 YouTube。
  • 关于audio - 如何让 FFmpeg 在单循环静音视频中自动注入(inject) mp3 音轨?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65147086/

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