audio - FFmpeg:连接 .webm 文件有些是视频只有一些音频只有一些两者都有

标签 audio video ffmpeg concatenation webm

在我的情况下,我有 3 个 .webm 文件,第一个是音频,第二个是视频,第三个是音频和视频。
我想将它们连接成一个文件,该文件显示纯音频部分的黑屏,纯视频部分的视频,并同时播放具有音频和视频的部分。
视频编解码器是 VP8,音频编解码器是 Opus。
concat.txt 包含三个文件的条目
我正在使用以下命令来连接它们。

ffmpeg -f concat -safe 0 -i ./concat.txt -c copy -y output.webm
此命令创建输出文件,当我播放它时,它只播放第一个仅音频部分,并在到达仅视频部分时崩溃。
我还尝试将虚拟图片添加到仅音频文件中,但是当我尝试连接时命令失败。
欢迎任何和所有的帮助/批评。
谢谢!
有关输入文件的更多信息
Input #0, matroska,webm, from 'original1.webm':
  Metadata:
    title           : -
    ENCODER         : Lavf58.45.100
  Duration: 00:00:09.99, start: 0.000000, bitrate: 34 kb/s
    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:00:09.990000000
Input #1, matroska,webm, from 'original2.webm':
  Metadata:
    title           : -
    ENCODER         : Lavf58.45.100
  Duration: 00:00:09.75, start: 0.000000, bitrate: 954 kb/s
    Stream #1:0: Video: vp8, yuv420p(tv, bt470bg/unknown/unknown, progressive), 1680x1050, SAR 1:1 DAR 8:5, 1k tbr, 1k tbn, 1k tbc (default)
    Metadata:
      DURATION        : 00:00:09.754000000
Input #2, matroska,webm, from 'original3.webm':
  Metadata:
    title           : -
    ENCODER         : Lavf58.45.100
  Duration: 00:00:10.02, start: 0.000000, bitrate: 912 kb/s
    Stream #2:0: Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:00:10.023000000
    Stream #2:1: Video: vp8, yuv420p(tv, bt470bg/unknown/unknown, progressive), 1680x1050, SAR 1:1 DAR 8:5, 1k tbr, 1k tbn, 1k tbc (default)
    Metadata:
      DURATION        : 00:00:09.965000000

最佳答案

所有要连接的文件必须有 same attributes和流顺序。

  • 将黑色视频添加到仅音频文件:
    ffmpeg -i audio.webm -f lavfi -i color=s=1680x1050 -r 1000 -map 0 -map 1 -c:a copy -c:v libvpx -shortest output1.webm
    
  • 将静音音频添加到仅视频文件:
    ffmpeg -f lavfi -i anullsrc=r=48000:cl=stereo -i video.webm -map 0 -map 1 -c:a libopus -c:v copy -shortest output2.webm
    
  • 制作 input.txt内容如下:
    file 'output1.webm'
    file 'output2.webm'
    file 'original3.webm'
    
  • 与 concat demuxer 连接:
    ffmpeg -f concat -safe 0 -i concat.txt -c copy output.webm
    
  • 关于audio - FFmpeg:连接 .webm 文件有些是视频只有一些音频只有一些两者都有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66375132/

    相关文章:

    php - ffmpeg 编码在从脚本(php/c#/etc.)而不是从命令行执行时卡住

    ios - 错误代码1886681407 AudioFileGetProperty给什么?

    audio - 重新采样为12位PCM声音?

    audio - 如何将AC3音频转换为Wav音频?

    video - FFMPEG:将当前时间以毫秒为单位嵌入到视频中

    jquery - 使用 Jquery 播放/暂停 HTML5 视频

    javascript - 带播放列表的 HTML 5 音频

    c++ - 从 BYTE* Stream 在 Qt 中播放视频?

    php - FFMPEG 无法在 PHP 中使用 exec() 或 shell_exec() 运行

    ffmpeg - 如何正确停止 ffmpeg 屏幕录制?