Linux 如何结合音频和视频mjr文件生成一个文件?

Linux 如何结合音频和视频mjr文件生成一个文件?,linux,recording,janus-gateway,Linux,Recording,Janus Gateway,我正在使用janus gateway在web浏览器中录制。录制完成后,将生成两个文件,一个是音频,另一个是视频。两者都有格式mjr。如何将这两个文件合并为一个文件?我有一个问题。注意,这段代码非常混乱,但它应该告诉您需要做什么 下面列出了合并这些文件需要执行的操作: 构建RTP缓冲区列表,以便可以在文件中对其进行迭代。在本手册中有这样的例子 同时开始迭代您的文件。时间戳应该同步正常,尽管我遇到了数据包在写入时丢失或损坏的问题,这将破坏合并 我在这里解码媒体并重新编码,以便静态设置视频的帧率和大小

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

我有一个问题。注意,这段代码非常混乱,但它应该告诉您需要做什么

下面列出了合并这些文件需要执行的操作:

  • 构建RTP缓冲区列表,以便可以在文件中对其进行迭代。在本手册中有这样的例子
  • 同时开始迭代您的文件。时间戳应该同步正常,尽管我遇到了数据包在写入时丢失或损坏的问题,这将破坏合并
  • 我在这里解码媒体并重新编码,以便静态设置视频的帧率和大小。我确信有一种方法可以做到这一点,而不必对媒体进行转码
  • 多路复用并写入文件

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

    我也在处理同样的需求

    如果您安装了默认的janus网关,您只会错过以下步骤:

    在下载git源的文件夹上运行此命令:

    ./configure --enable-post-processing
    
    然后

    然后对要将其转换为音频/视频格式的每个文件运行以下操作:

    ./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) ffmpeg -i audio.opus -i video.webm  -c:v copy -c:a opus -strict experimental mergedoutput.webm
    
    从那里,您可以构建一个shell脚本,在cron上自动转换所有mjr文件

    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
    

    我还需要在我的Debian系统上安装以下内容才能运行
    janus pp rec
    apt get install-y libavutil54 libavcodec56 libavformat56
    在通过ffmpeg视频转换后不显示,有什么想法吗?需要安装ffmpeg
    #!/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