Ffmpeg:以mpeg格式将音频和视频写入流中

时间:2015-02-10 11:28:34

标签: c++ audio video ffmpeg

我有使用以下代码将视频流导出到mpeg文件的命令:

ffmpeg -r 24 -pix_fmt rgba -s 1280x720 -f rawvideo -y -i -vf vflip -vcodec mpeg1video -qscale 4 -bufsize 500KB -maxrate 5000KB OUTPUT_FILE

现在,我想添加命令,以便可以使用音频,因为现在没有选项。

我已将上一个命令编辑到下一个命令:

ffmpeg -r 24 -pix_fmt rgba -s 1280x720 -f rawvideo -y -i -f s16le -ac 1 -ar 44100 -i - -acodec pcm_s16le -ac 1 -b:a 320k -ar 44100 -vf vflip -vcodec mpeg1video -qscale 4 -bufsize 500KB -maxrate 5000KB OUTPUT_FILE

因此,您可以看到我添加了一个新输入,其中包含我要输入的音频设置(我将使用正弦波的值对其进行测试)。

我正在将数据写入文件:

// Write a frame to the ffmpeg stream
fwrite(frame, sizeof(unsigned char*) * frameWidth * frameHeight, 1, ffmpeg); 

// Write multiple sound samples per written frame
for (int t = 0; t < 44100/24; ++t)
    fwrite(&audio, sizeof(short int), 1, ffmpeg);

第一行是只写视频的那一行(帧对象是我正在输入的视频中的纹理渲染) 之后,我正在尝试添加音频。我正在使用for-loop,所以我可以为每个视频帧使用多个样本(因为否则你每秒只能有24个音频样本)

这确实有几个问题:

  • 渲染的视频显示绿色闪烁

  • 视频在屏幕上滑动。例如,如果它向右滑动200个像素,则在另一侧渲染这些像素。还应该在底部的一些框架在顶部渲染(因此框架也向下滑动,但这是一个常数,它不随时间移动)

我无法弄清楚我的错误在哪里。我已经尝试了多个编解码器并尝试了不同的命令,但它保持不变或变得更糟。

提前致谢

0 个答案:

没有答案