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