【发布时间】:2015-04-03 12:47:32
【问题描述】:
我正在使用 janus-gateway 在网络浏览器中进行录制。录制完成后,会生成两个文件,一个是音频,另一个是视频。两者都有格式 mjr。如何将这两个文件合并为一个文件?
【问题讨论】:
标签: linux recording janus-gateway
我正在使用 janus-gateway 在网络浏览器中进行录制。录制完成后,会生成两个文件,一个是音频,另一个是视频。两者都有格式 mjr。如何将这两个文件合并为一个文件?
【问题讨论】:
标签: linux recording janus-gateway
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-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 文件
【讨论】:
janus-pp-rec: apt-get install -y libavutil54 libavcodec56 libavformat56
我有一个very primitive example of doing this in C with Gstreamer。请注意,这段代码非常混乱,但它应该会告诉你你需要做什么。
以下是合并这些文件需要执行的操作的列表:
我执行步骤 1 的方式与 janus 后处理器完全一样。第 2 步我将每个 rtp 数据包从文件推送到 gstreamer appsrc 元素。第 3 步和第 4 步在 gstreamer 管道中完成。
【讨论】: