如何将音频和视频的mjr文件合并成一个文件?

4

我正在使用Janus-Gateway在Web浏览器中进行录制。完成录制后,会生成两个文件,一个是音频文件,另一个是视频文件。这两个文件的格式都是mjr。如何将这两个文件合并为单个文件?

3个回答

7

我正在处理同样的需求。

如果您执行了默认的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,其他发行版可能已经在apt-get仓库中安装了ffmpeg)。
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 文件。


1
我需要在我的Debian系统上安装以下内容才能运行janus-pp-rec: apt-get install -y libavutil54 libavcodec56 libavformat56. - Ezekiel Victor
转换后使用ffmpeg,视频不显示,有什么想法吗? - Kalyan Halder

0

我有一个使用Gstreamer在C语言中进行此操作的非常原始的示例。请注意,这段代码非常混乱,但它应该能够展示您需要做什么。

以下是合并这些文件所需完成的任务列表:

  1. 构建RTP缓冲区列表,以便您可以在文件中迭代它们。在janus-gateway post processing中有此类示例。
  2. 同时开始迭代您的文件。时间戳应该同步,尽管我遇到过写入时丢失或损坏数据包的问题,这会破坏合并。
  3. 我在此处解码媒体并重新编码,以便我可以为视频静态设置帧速率和大小。我相信有一种方法可以在不转码媒体的情况下完成此操作。
  4. 复用并写入文件

我完全按照Janus后处理器的步骤1进行操作。步骤2是将每个RTP数据包从文件推送到GStreamer appsrc元素中。步骤3和4在GStreamer管道内完成。


0
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。 - Vinay Vadachhak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接