如何组合音频和视频mjr文件来生成一个文件?

时间:2015-02-04 05:07:52

标签: linux recording janus-gateway

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

3 个答案:

答案 0 :(得分:5)

我正在处理同样的需要。

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

在你下载git sources的文件夹上运行它:

./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文件

答案 1 :(得分:0)

我有very primitive example of doing this in C with Gstreamer。请注意,此代码非常混乱,但它应该显示您需要执行的操作。

以下列出了合并这些文件需要完成的工作:

  1. 构建RTP缓冲区列表,以便您可以在文件中迭代它们。 janus-gateway post processing
  2. 中有这样的例子
  3. 同时开始迭代您的文件。时间戳应该同步正常,尽管我遇到了一些问题,即数据包在写入时会丢失或损坏,这会搞砸合并
  4. 我解码媒体并在此重新编码,以便我可以静态设置视频的帧速率和大小。我确信无需转码媒体就可以做到这一点。
  5. 复用并写入文件
  6. 我的步骤1与janus post processer完全相同。步骤2我将每个rtp数据包从文件推送到gstreamer appsrc元素。步骤3和4在gstreamer管道中完成。

答案 2 :(得分: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