【问题标题】:How to combine audio and video mjr files to generate one file?如何将音视频mjr文件合并生成一个文件?
【发布时间】:2015-04-03 12:47:32
【问题描述】:

我正在使用 janus-gateway 在网络浏览器中进行录制。录制完成后,会生成两个文件,一个是音频,另一个是视频。两者都有格式 mjr。如何将这两个文件合并为一个文件?

【问题讨论】:

    标签: linux recording janus-gateway


    【解决方案1】:
    sudo apt-get install libavutil-dev libavcodec-dev libavformat-dev
    

    安装依赖后...

    ./configure --prefix=/opt/janus --enable-post-processing
    

    然后使用这个 BASH 文件

    #!/bin/bash
    
    # converter.sh
    
    # Declare the binary path of the converter
    januspprec_binary=/opt/janus/bin/janus-pp-rec
    
    # Contains the prefix of the recording session of janus e.g
    session_prefix="$1"
    output_file="$2"
    
    # Create temporary files that will store the individual tracks (audio and video)
    tmp_video=/tmp/mjr-$RANDOM.webm
    tmp_audio=/tmp/mjr-$RANDOM.opus
    
    echo "Converting mjr files to individual tracks ..."
    $januspprec_binary $session_prefix-video.mjr $tmp_video
    $januspprec_binary $session_prefix-audio.mjr $tmp_audio
    
    echo "Merging audio track with video ..."
    
    ffmpeg -i $tmp_audio -i $tmp_video  -c:v copy -c:a opus -strict experimental $output_file
    
    echo "Done !"
    

    以下命令应该可以解决问题:

    bash converter.sh ./room-1234-user-0001 ./output_merged_video.webm
    

    【讨论】:

    • 需要安装FFMPEG
    【解决方案2】:

    我也有同样的需求。

    如果您进行了默认的 janus-gateway 安装,您只会错过以下步骤:

    在您下载 git 源代码的文件夹上运行它:

    ./configure --enable-post-processing
    

    然后

    make
    (sudo) make install
    

    然后为您想要将它们转换为音频/视频格式的每个文件运行此命令:

    ./janus-pp-rec /opt/janus/share/janus/recordings/video.mjr /opt/janus/share/janus/recordings/video.webm
    
    ./janus-pp-rec /opt/janus/share/janus/recordings/audio.mjr /opt/janus/share/janus/recordings/audio.opus
    

    如果您没有安装 ffmpeg,请运行它(我在 Ubuntu 上,在其他发行版上,ffmpeg 可能已经在 apt-get 存储库中)

    sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
    sudo apt-get update
    sudo apt-get install ffmpeg
    

    然后最后将音频与视频合并:

    (sudo) ffmpeg -i audio.opus -i video.webm  -c:v copy -c:a opus -strict experimental mergedoutput.webm
    

    您可以从那里构建一个 shell 脚本,以在 cron 上自动转换所有 mjr 文件

    【讨论】:

    • 我还需要在我的 Debian 系统上安装以下内容才能运行 janus-pp-rec: apt-get install -y libavutil54 libavcodec56 libavformat56
    • 通过 ffmpeg 转换后视频不显示,有什么想法吗?
    【解决方案3】:

    我有一个very primitive example of doing this in C with Gstreamer。请注意,这段代码非常混乱,但它应该会告诉你你需要做什么。

    以下是合并这些文件需要执行的操作的列表:

    1. 构建 RTP 缓冲区列表,以便您可以在文件中迭代它们。 janus-gateway post processing 中有这样的例子
    2. 同时开始迭代您的文件。时间戳应该可以同步,但我遇到了数据包在写入时丢失或损坏的问题,这会搞砸合并
    3. 我在这里解码媒体并重新编码,以便我可以静态设置视频的帧速率和大小。我确信有一种方法可以做到这一点,而无需对媒体进行转码。
    4. 多路复用并写入文件

    我执行步骤 1 的方式与 janus 后处理器完全一样。第 2 步我将每个 rtp 数据包从文件推送到 gstreamer appsrc 元素。第 3 步和第 4 步在 gstreamer 管道中完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      相关资源
      最近更新 更多