[Libav-user] Transcoding mpegts (ts) file to mpegts
Hung Nguyen
Hung.Nguyen at ambientdigitalgroup.com
Mon Oct 6 13:22:45 CEST 2014
Just update some information.
The error went away when I fix a bug in function that call encoding function, I forgot to free the pointer.
But the encoded video show up when noisy audio and black screen (no colour, no video frame).
Is there anything else I need to check?
Thanks,
On Oct 6, 2014, at 9:20 AM, Hung Nguyen <Hung.Nguyen at ambientdigitalgroup.com<mailto:Hung.Nguyen at ambientdigitalgroup.com>> wrote:
Dear all,
I’ve been working on a small C application using libav to transcode mpegts file (change heigh, width, bitrate…).
Source file can be transcoding using ffmpeg command line without problem
https://gist.github.com/whatvn/7e669d295238a009f9d4
But I would like to transcode this video using libav api library to integrate it to our application (nginx).
What I have until now is this source code:
https://gist.github.com/whatvn/9ae5678cd5a4090ac469
I don’t want to write transcoded result into file, I I use a callback write function to write to output buffer and pass it to AVIOContext:
static int write_adbr_packet(void *opaque, unsigned char *buf, int buf_size) {
int old_size;
video_buffer *destination = (video_buffer *) opaque;
if (destination->data == NULL) {
destination->data = malloc(memory_pool, 9600 * sizeof (unsigned char));
}
old_size = destination->len;
destination->len += buf_size;
ngx_memcpy(destination->data + old_size, buf, buf_size * sizeof (unsigned char));
return buf_size;
}
When running, my application got coredump:
Back trace: fail at av_interleaved_write_frame
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7fff40ffe000
Core was generated by `nginx: worker process '.
Program terminated with signal 11, Segmentation fault.
#0 malloc_consolidate (av=av at entry=0x7fa70e2d0740 <main_arena>) at malloc.c:4088
4088 malloc.c: No such file or directory.
(gdb) bt
#0 malloc_consolidate (av=av at entry=0x7fa70e2d0740 <main_arena>) at malloc.c:4088
#1 0x00007fa70df8f7e8 in _int_free (av=0x7fa70e2d0740 <main_arena>, p=0x1fd5e30, have_lock=0) at malloc.c:3994
#2 0x00007fa70eb16f3f in av_buffer_unref () from /usr/local/lib/libavutil.so.54
#3 0x00007fa70ee56124 in av_free_packet () from /usr/local/lib/libavcodec.so.56
#4 0x00007fa710049cea in av_interleaved_write_frame () from /usr/local/lib/libavformat.so.56
Info all register:
https://gist.github.com/whatvn/6f9a58389a1d6f43848b
I know there must be something wrong with my implement, but I cannot find it for several days.
Could someone please dig in my source code and give me some suggestion, please!
Thanks,
Hung
_______________________________________________
Libav-user mailing list
Libav-user at ffmpeg.org<mailto:Libav-user at ffmpeg.org>
http://ffmpeg.org/mailman/listinfo/libav-user
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20141006/5964776c/attachment.html>
More information about the Libav-user
mailing list