intersectBed has an "-abam" option that allows one to find overlaps between alignments in BAM format and annotations in either BED or GFF format. However, only the GFF annotation will be reported in GFF format. The alignments will be in BED format.
chr16 73795015 73795502 A12-F4JXVRN01EV87A 57 + chr16 hg18_knownGene exon 73795495 73795721 0.000000 - . gene_id "uc002fdr.1"; transcript_id "uc002fdr.1";
chr16 73795015 73795504 A06-F51QE6Q01CWCKM 57 - chr16 hg18_knownGene exon 73795495 73795721 0.000000 - . gene_id "uc002fdr.1"; transcript_id "uc002fdr.1";
chr16 73795015 73795503 A06-F51QE6Q01EQTVD 57 - chr16 hg18_knownGene exon 73795495 73795721 0.000000 - . gene_id "uc002fdr.1"; transcript_id "uc002fdr.1";
chr16 73795015 73795500 A08-F4JXVRN01A75HJ 58 + chr16 hg18_knownGene exon 73795495 73795721 0.000000 - . gene_id "uc002fdr.1"; transcript_id "uc002fdr.1";
chr16 73795017 73795500 A01-F4JXVRN01EMQZE 57 + chr16 hg18_knownGene exon 73795495 73795721 0.000000 - . gene_id "uc002fdr.1"; transcript_id "uc002fdr.1";
chr16 73795019 73795504 A07-F51QE6Q01DAQEA 54 + chr16 hg18_knownGene exon 73795495 73795721 0.000000 - . gene_id "uc002fdr.1"; transcript_id "uc002fdr.1";
chr16 73795044 73795518 A05-F4JXVRN01B6IDU 57 - chr16 hg18_knownGene exon 73795495 73795721 0.000000 - . gene_id "uc002fdr.1"; transcript_id "uc002fdr.1";
chr16 73795044 73795502 A06-F51QE6Q01C8C0J 55 - chr16 hg18_knownGene exon 73795495 73795721 0.000000 - . gene_id "uc002fdr.1"; transcript_id "uc002fdr.1";
chr16 73795046 73795532 A08-F51QE6Q01D5TLX 58 - chr16 hg18_knownGene exon 73795495 73795721 0.000000 - . gene_id "uc002fdr.1"; transcript_id "uc002fdr.1";
chr16 73795047 73795522 A06-F4JXVRN01C2WVV 50 - chr16 hg18_knownGene exon 73795495 73795721 0.000000 - . gene_id "uc002fdr.1"; transcript_id "uc002fdr.1";
The first six columns of each line are the BAM alignment in BED format and the remaining fields are the GFF annotation that the alignment overlapped. I do not have an option to also write the BAM alignment in GFF format. Note that you must use the "-bed" optio if you want to write BED output when using BAM input. The default is to write BAM. That is, the default is to write BAM output for those alignments that overlap your annotations. This allows you to create subsets of your alignments based on annotations.
I hope this helps.