我正在使用Janus-Gateway在Web浏览器中进行录制。完成录制后,会生成两个文件,一个是音频文件,另一个是视频文件。这两个文件的格式都是mjr。如何将这两个文件合并为单个文件?
我正在使用Janus-Gateway在Web浏览器中进行录制。完成录制后,会生成两个文件,一个是音频文件,另一个是视频文件。这两个文件的格式都是mjr。如何将这两个文件合并为单个文件?
我正在处理同样的需求。
如果您执行了默认的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
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 文件。
我有一个使用Gstreamer在C语言中进行此操作的非常原始的示例。请注意,这段代码非常混乱,但它应该能够展示您需要做什么。
以下是合并这些文件所需完成的任务列表:
我完全按照Janus后处理器的步骤1进行操作。步骤2是将每个RTP数据包从文件推送到GStreamer appsrc元素中。步骤3和4在GStreamer管道内完成。
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
janus-pp-rec
:apt-get install -y libavutil54 libavcodec56 libavformat56
. - Ezekiel Victor